SSRF【Server-Side Request Forgery】サーバサイドリクエストフォージェリ
概要

Webページの取得やプレビュー表示、外部サービスとの連携など、URLを指定して情報を読み込む機能を持つWebアプリケーションが標的となる。攻撃者は、自身では到達できない内部システムのURLを入力し、サーバに代理アクセスさせることで情報の取得や操作を狙う。
例えば、インターネット上のWebページを取得して表示するサービスに、組織内部のWebサーバや管理画面のURLを指定する攻撃がある。クラウド環境では、仮想マシンの認証情報を管理するメタデータサービス(AWSの169.254.169.254など)へのアクセスを誘導し、認証情報を窃取する事例も知られている。
サーバから内部システムへの通信は外部からの通信より信頼されやすく、ファイアウォールなどの制限が緩く設定されている場合が多い。攻撃者はこの信頼関係を利用して、サーバを踏み台として内部ネットワークへの侵入を試みる。クラウドサービスの普及により、サーバ自身が認証情報取得用のAPIを内部で提供する構成が増えたことで、SSRFが悪用された際の被害は深刻化しやすくなっている。
対策としては、利用者が指定したURLの文字列だけでなく、名前解決後のIPアドレスやポート番号を検証し、内部ネットワークやループバックアドレス、リンクローカルアドレスへの通信を遮断する方法が基本となる。接続先を信頼できるドメインやIPアドレスに限定するホワイトリスト方式の導入も有効である。また、SSRFはXML外部実体参照(XXE)やディレクトリトラバーサル、SQLインジェクション、OSコマンドインジェクションといった他の脆弱性と組み合わせて行われることも多く、これらの脆弱性を修正することも重要である。公開サーバに付与する権限を必要最小限にとどめ、DMZと内部ネットワークの間の通信をファイアウォールで制限するなど、ネットワーク設計の見直しが必要な場合もある。