SSRF(Server-Side Request Forgery、サーバーサイドリクエストフォージェリ)
Overview
ウェブアプリケーションの脆弱性のひとつ。
攻撃者が、サーバーが信頼する内部リソースや、外部のサービスに対してリクエストを送信させることができる脆弱性です。
SSRFの仕組み
-
リクエスト生成:
- 攻撃者が、ウェブアプリケーションに対して特定のリクエストを送信します。
- たとえば、ユーザー入力を受け付けるフォームやAPIエンドポイントを悪用します。
-
サーバー側での処理:
- ウェブアプリケーションのサーバーが攻撃者のリクエストを受け取り、その内容に基づいて内部または外部のリソースに対してリクエストを生成します。
-
内部リソースのアクセス:
- サーバーが内部ネットワーク内のリソースや、攻撃者が通常アクセスできない外部サービスに対してリクエストを送信します。
SSRFの影響
-
内部ネットワークの探索:
- 攻撃者は、内部ネットワークに存在するサーバーやサービスの存在を確認するために使用します。これにより、内部ネットワークの構造や使用されているサービスの詳細が漏洩する可能性があります。
-
機密情報の取得:
- 内部のデータベースやメタデータサービス(例:クラウドサービスのメタデータAPI)から機密情報を取得できる。
-
他の攻撃の足がかり:
- SSRFを利用して、内部ネットワーク内の他のシステムやサービスに対する攻撃(例:権限昇格やデータ抽出)を行うことが可能です。
防止策
-
入力の検証とサニタイズ:
- ユーザーからの入力を厳格に検証し、予期しない形式や不正なデータを除外します。
-
アウトバウンドリクエストの制限:
- サーバーが外部にリクエストを送信できる先をホワイトリストで制限します。
-
ネットワーク分離:
- 内部リソースへのアクセスを必要最小限に抑え、外部からのアクセスを制限することで、攻撃範囲を縮小します。