Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

SSRF(エスエスアールエフ)とは | 意味や読み方など丁寧でわかりやすい用語解説

SSRF(エスエスアールエフ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

サーバーサイド リクエスト フォージェリ (サーバーサイドリクエストフォージェリ)

英語表記

SSRF (エスエスアールエフ)

用語解説

SSRFとは、Server-Side Request Forgery(サーバーサイド・リクエスト・フォージェリ)の略称であり、Webアプリケーションの脆弱性の一種である。この脆弱性を悪用されると、攻撃者はWebアプリケーションが動作しているサーバーを経由して、意図しないリクエストを内部ネットワーク内の他のシステムや、外部の任意のURLに対して実行させることができる。Webアプリケーションがユーザーから指定されたURLやリソースにアクセスする機能を実装している場合、その入力値の検証が不十分であるとSSRFの温床となる。通常、Webアプリケーションは正当な目的で外部サービスや内部APIにアクセスすることがあるが、SSRF攻撃は、この正当な機能が悪用され、サーバー自身が攻撃者の指示に従ってリクエストを偽装・実行してしまうという点で非常に危険である。

詳細を説明する。SSRF攻撃の典型的なシナリオでは、Webアプリケーションが画像URLの取得、ファイルのダウンロード、URLプレビューの生成、PDF変換といった機能を提供している場合が多い。これらの機能は、ユーザーが入力したURLに基づいてサーバー側でリソースを取得し、処理を行う。攻撃者はこの入力欄に、本来アクセスすべきではない内部IPアドレスや、クラウドサービスのメタデータサービスのアドレス、または外部の攻撃者所有のサーバーのURLなどを指定する。Webアプリケーションがこの不正な入力を適切に検証せずにそのまま処理してしまうと、サーバーは攻撃者の指示する宛先にリクエストを送信してしまう。

この攻撃によって引き起こされる具体的な脅威は多岐にわたる。まず、内部ネットワークへのアクセスが可能になる点が挙げられる。Webサーバー自体はインターネットに公開されていても、その背後にあるデータベースサーバー、キャッシュサーバー、APIサーバー、管理パネルなどは通常、内部ネットワークからしかアクセスできないように保護されている。SSRFを悪用すると、攻撃者はWebサーバーを「踏み台」として利用し、これらの内部システムに対してリクエストを送信できる。これにより、内部システムの認証情報が漏洩したり、機密データが窃取されたり、あるいは内部システムに対するDoS攻撃や、さらなる脆弱性探索が行われる可能性がある。

次に、クラウド環境におけるリスクが特に注目される。AWS (Amazon Web Services) やGCP (Google Cloud Platform) などのクラウドサービスでは、仮想マシンインスタンスが自身のメタデータサービスを通じて、認証情報(IAMロールの一時的な資格情報など)、ネットワーク設定、ユーザーデータといった機密情報にアクセスできる仕組みが提供されている。このメタデータサービスは通常、特定のローカルIPアドレス(例: AWSでは http://169.254.169.254/)からしかアクセスできないが、SSRFを悪用されると、Webアプリケーションがこのメタデータサービスにリクエストを送信し、インスタンスの機密情報(例: S3バケットへのアクセス権を持つ一時クレデンシャル)が攻撃者に漏洩してしまう可能性がある。これにより、攻撃者はクラウド環境内の他のリソースへの不正アクセスや操作が可能になり、甚大な被害につながる恐れがある。

また、SSRFはHTTP/HTTPSプロトコルだけでなく、FTP、Gopher、File、DICTといった他のプロトコルを悪用してリクエストを送信することも可能である。例えば、Gopherプロトコルを用いると、HTTPリクエストでは実現が難しいTCP接続の確立や、複数のリクエストを送信する「プロキシ」のような動作をSSRF経由で実行できる場合があり、これはより高度な内部ネットワーク攻撃に利用される。Fileプロトコルは、サーバー上のローカルファイルを読み取るために悪用されることがある。これにより、設定ファイルやパスワードファイルなど、サーバー上の機密ファイルの内容が漏洩する可能性がある。

SSRF攻撃からシステムを保護するためには、複数の対策を講じる必要がある。最も基本的な対策は、ユーザーからの入力値、特にURLやホスト名に関する入力に対して、厳格な検証とサニタイズを行うことである。具体的には、アクセスを許可するドメインやIPアドレスのホワイトリストを作成し、それ以外のアクセスをすべて拒否する方法が有効である。また、内部ネットワークのIPアドレス範囲(例: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.1)へのアクセスは明示的にブロックする必要がある。リダイレクトを許可する機能がある場合、意図しない宛先へのリダイレクトが悪用される可能性があるため、リダイレクトは禁止するか、追跡する最大回数を制限し、最終的な宛先もホワイトリストで検証することが重要である。

さらに、Webアプリケーションが外部リソースにアクセスする際には、最低限必要な権限のみを持つユーザーで実行させ、不必要な権限を与えない「最小権限の原則」を徹底する。サーバー側で取得したレスポンスの内容をユーザーにそのまま表示するのではなく、レスポンスを検証し、許可された形式や内容のみを提示するようにすることも重要である。ファイアウォールやネットワークアクセス制御リスト (ACL) を適切に設定し、Webアプリケーションサーバーから内部ネットワークの特定のサービスやクラウドのメタデータサービスへの直接的なアクセスを制限することも有効な防御策となる。Web Application Firewall (WAF) の導入も、既知のSSRF攻撃パターンを検知しブロックする上で役立つ。これらの多層的な防御策を組み合わせることで、SSRFの脅威を効果的に軽減できる。

関連コンテンツ