Webアプリケーション攻撃

SSRF(サーバーサイドリクエストフォージェリ) えすえすあーるえふ

サーバーサイドリクエストフォージェリ内部ネットワーククラウドメタデータOWASPファイアウォール回避不正アクセス
SSRFについて教えて

簡単に言うとこんな感じ!

「サーバーを使い走りにする攻撃」だよ!攻撃者が「このURLの情報を取ってきて〜」とWebサーバーに命令して、本来は外から見えないはずの社内システムや秘密の設定情報を盗み出す手口なんだ!


SSRFとは

SSRF(Server-Side Request Forgery/サーバーサイドリクエストフォージェリ) とは、攻撃者がWebサーバーに「特定のURLへアクセスせよ」という細工したリクエストを送り込み、サーバー自身に内部ネットワークや外部サービスへの通信を行わせる攻撃手法です。「フォージェリ(Forgery)」は「偽造・詐称」の意味で、リクエストの発信元をサーバーに成りすまさせることが名前の由来です。

ポイントはサーバーが踏み台になる点です。ファイアウォール認証で外部からは守られているはずの社内システムも、Webサーバー経由でアクセスすると「内部からの通信」として通ってしまいます。たとえば「SNSのOGP取得機能」「画像変換サービス」「WebフックURL」など、ユーザーが指定したURLにサーバーが接続する機能はすべてSSRFのリスクを持ちます。

2021年にOWASP(Webセキュリティの国際標準団体)が発表した「OWASP Top 10」で独立したカテゴリとして新設されるほど、クラウド時代に急増している深刻な脅威です。AWSやGCPなどのクラウド環境ではメタデータエンドポイント(169.254.169.254)から認証情報が丸ごと取得できる事例が多発しています。


SSRFの仕組みと攻撃フロー

攻撃がどのように進むか、ステップで整理します。

ステップ攻撃者の行動サーバーの動作
① 脆弱な機能を発見URLを受け付けるフォームやAPIを見つける通常どおり外部URLに接続する機能を持つ
② 細工したURLを送信http://169.254.169.254/latest/meta-data/ など内部向けURLを指定攻撃者の指定したURLへリクエストを送る
③ 内部リソースへアクセスファイアウォールを迂回して内部サーバーに到達
④ 情報が返ってくるレスポンスを受け取る取得した内部情報を攻撃者に返してしまう

攻撃者が狙う主なターゲット

[ 攻撃者 ]
    |
    | ① 細工したURLをPOST
    v
[ Webサーバー(踏み台) ]  ←←← ファイアウォールがここを守っていても内側は素通り!
    |
    |--- ② http://192.168.0.1/admin      → 社内管理画面
    |--- ③ http://169.254.169.254/...    → クラウドの認証情報
    |--- ④ http://localhost:6379/        → Redisなど内部DB
    `--- ⑤ file:///etc/passwd           → サーバー自身のファイル

よく悪用される機能

  • 画像・OGP取得機能:「URLを入力するとサムネイルを生成」するもの
  • Webhook設定:外部サービスが通知を送るURLをユーザーが指定できるもの
  • PDFレンダリング:HTMLやURLからPDFを生成するサービス
  • プロキシ機能:URLを受け取って中継するAPI

歴史と背景

  • 2010年代前半:SSRF自体は古くから知られていたが、社内サーバーへの限定的な攻撃に留まり注目度は低かった
  • 2014年頃〜:クラウドサービス(AWS・GCP・Azure)の普及により、メタデータエンドポイントを狙ったSSRFが急増。クラウドの認証キーが一発で盗める危険性が認識されはじめる
  • 2019年:Capital One(米大手銀行)でSSRFを利用したクラウド侵害事故が発生。1億件超の顧客データが流出し、世界的に注目を集める
  • 2021年:OWASPが「OWASP Top 10 2021」でSSRFを独立カテゴリ(A10)として新設。Webアプリの10大リスクに公式ランクイン
  • 現在バグバウンティ脆弱性報奨金制度)でも高額報奨の対象となることが多く、攻撃者・研究者双方から注目されている

関連する攻撃・防御手法との比較

SSRFとよく混同される攻撃手法を整理します。

攻撃手法誰がリクエストを送るか主な目的
SSRFサーバー(踏み台にされる)内部ネットワークへの不正アクセス
CSRF被害者のブラウザ(罠を踏ませる)被害者の権限でサービスを不正操作
XSS被害者のブラウザ(スクリプト実行)Cookie窃取・フィッシング
オープンリダイレクトブラウザ(転送させる)フィッシングサイトへの誘導

SSRF vs CSRF の対比図

SSRF vs CSRF ― 「誰が」リクエストを送るかの違い SSRF 攻撃者 Webサーバー (踏み台) 内部サーバー (本当の標的) サーバーが勝手に 内部へアクセスする CSRF 攻撃者 被害者の ブラウザ 正規サービス (被害者の権限で操作) 被害者が知らずに リクエストを送らされる

SSRFの主な対策

対策内容効果
許可リスト(Allowlist)方式接続先URLを事前に登録したものだけ許可◎ 最も確実
プライベートIPブロック10.x 192.168.x 169.254.x等へのアクセスを禁止○ 一般的な対策
DNSリバインディング対策DNS解決後のIPを再検証する○ 迂回攻撃への対策
レスポンスの検証取得したコンテンツのContent-Typeを確認△ 補助的
IMDSv2の利用(AWS)メタデータへのアクセスにトークン認証を要求◎ クラウド環境では必須
URLスキームの制限file:// gopher:// など危険なスキームを禁止○ 攻撃の幅を狭める

関連する規格・RFC

規格・RFC番号内容
OWASP Top 10 2021 A10SSRFが独立カテゴリとして新設。判定基準と対策指針を定義
CWE-918SSRFの共通脆弱性列挙。「Server-Side Request Forgery」として登録
RFC 1918プライベートIPアドレス空間の定義(ブロック対象の基準)
RFC 3986URIの構文仕様。URLパース処理の統一基準として対策実装に参照される

関連用語