見えるセキュリティ
SSRF
SERVER-SIDE REQUEST FORGERY
この概念とは?
SSRFは、攻撃者が入力を悪用し、Webサーバーに本来の用途とは違う宛先へリクエストを送らせる問題です。サーバーが別のサービスから情報を取得する機能などで起こります。ここでは、取得先の指定がどのように通信へつながるかを見ていきます。
注目するのは、誰がリクエストを送るかです。攻撃者からの依頼を受けたWebサーバーが、自分の通信経路で別の宛先へアクセスします。
- THEME
- web-vuln
- KIND
- attack
- REVIEW
- self-reviewed ·
取得先の確認が不十分な場合に、内部の情報取得へつながる流れ
この例では、内部サービスの認証・認可が不十分で、Webサーバーが取得内容を呼び出し元へ返します。
図の読み方
時間は上から下へ ↓ /「次へ」で1 STEPずつ表示
ここでは、取得先をあらかじめ決められる機能を例に、HTTPによる情報取得を扱います。登場するサービスとデータは説明用です。
攻撃者
取得先を指定
Webサーバー
依頼を受けて取得
内部サービス
今回の用途では対象外
STEP 1サーバーが資料を取り寄せる機能
用途の紹介・通信はまだ行わない
本来の取得先:資料配信サービス
STEP 01 / 6
サーバーが資料を取り寄せる機能
STEP 1 / 6: サーバーが資料を取り寄せる機能
このサイトには、Webサーバーが資料を取り寄せる機能があります。本来は、決められた資料配信サービスを利用します。
技術的な詳細を見る
サーバーによる情報取得そのものが問題なのではありません。通信先に影響する入力を、取得処理がどう扱うかが重要です。この教材では取得先の指定を短いラベルで示します。
この概念の要点
要点
依頼と取得は別の通信
攻撃者がWebサーバーへ送る依頼と、Webサーバーが別のサービスへ送る要求を分けて考えます。
要点
サーバーの到達範囲が関係する
攻撃者が直接は届かない相手にも、サーバーからは通信できる場合があります。
要点
到達と情報の取得は別
読める情報や実行できる処理は、通信先の認証・認可などの条件によって変わります。
要点
返答が見えなくても起こる
呼び出し元へ取得結果を返さないBlind SSRFもあります。
理解確認
参考資料
- CWECWE-918: Server-Side Request Forgery (SSRF)
CWE-918Description:入力による取得先指定と、想定宛先の確認不足
- OWASPServer-Side Request Forgery Prevention Cheat Sheet
Context、通信の概略、Cases、Case 1のURL・アプリ層・ネットワーク層、Case 2の適用条件:HTTP以外の範囲、固定取得先と任意外部宛先の違い
- 参考資料PortSwigger:Server-side request forgery
SSRFの定義・影響、サーバー自身・バックエンドへの要求:通信主体、内部の信頼関係、取得結果を返す例
- 参考資料PortSwigger:Blind SSRF vulnerabilities
Blind SSRFの定義:バックエンドの返答が呼び出し元への返答に含まれない場合
- OWASPOWASP Top 10:2021:Server-Side Request Forgery (SSRF)
対策のネットワーク層・アプリケーション層:送信制限、返答の扱い、リダイレクト、DNSの変化。2021版の技術説明として参照
- OWASPCross-Site Request Forgery Prevention Cheat Sheet
Introduction、CSRFトークンに関する方針:CSRFの典型例とSSRFの確認対象の比較