Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help


title: “SSRF から IMDSv1 への攻撃パス” part: “Part 6” chapter: “6-2”

SSRF から IMDSv1 への攻撃パス

クラウド環境における SSRF(Server-Side Request Forgery)は、単なる内部ネットワークスキャンに留まらず、メタデータサービス(IMDS)へのアクセスを通じてクラウド権限の奪取に直結する。本章では、特に AWS の IMDSv1 を例に、その攻撃パスを整理する。

本章のゴール

  • 前提:SSRF の成立条件(Part 2)と、IMDS の概要(前章)を把握している。
  • 到達目標:SSRF→IMDS→クラウド権限侵害の攻撃パスと、防御策(IMDSv2、最小権限、到達制御)および評価時の統制(許可・範囲・キー管理)を説明できる。
  • 対応演習:exercises/ssrf-imds/ のローカル疑似環境を用い、SSRF で 169.254.169.254 への到達可否を確認する(起動手順は 付録「演習環境クイックスタート」 を参照。商用アカウントや本番環境では実施しない)。

図6-2: SSRF から IMDS への攻撃パス(AWS)

graph LR
    A[攻撃者] -->|悪意ある URL を送信| W[Web アプリケーション]
    W -->|SSRF により HTTP リクエスト| M[EC2 内部の IMDS<br/>169.254.169.254]
    M -->|一時認証情報| W
    W -->|取得したクレデンシャルで AWS API 呼び出し| C[(AWS アカウント内リソース)]

図6-2 は、外部からの入力が SSRF を通じて IMDS に到達し、一時認証情報を取得して AWS API を操作するまでの流れを単一のチェーンとして示している。以降は、「SSRF の入力点」「IMDS への到達性」「付与ロールの権限範囲」を分けて整理すると、影響範囲の評価がしやすい。

IMDS(Instance Metadata Service)の概要

AWS EC2 には、インスタンス自身に関するメタデータを取得するためのサービス(IMDS)が用意されている。IMDS は、インスタンス内部からのみアクセス可能な特殊なエンドポイント(http://169.254.169.254/)で提供される。

代表的なメタデータには次のようなものがある。

  • インスタンスタイプ、AMI ID、ホスト名など
  • アタッチされているロールに紐づく一時的な認証情報(アクセスキー、シークレットキー、セッショントークン)

IMDSv1 では、HTTP 経由でメタデータが取得可能であり、追加のセッションバインディングがないため、SSRF 脆弱性を通じた悪用が容易である。

SSRF を起点とした攻撃シナリオ

典型的なシナリオは次のとおりである。

  1. 公開 Web アプリケーションに SSRF 脆弱性が存在し、任意の URL にサーバ側からリクエストを送信できる。
  2. 攻撃者は、SSRF を通じて http://169.254.169.254/latest/meta-data/iam/security-credentials/ にアクセスさせる。
  3. 取得した認証情報を用いて、AWS API を直接呼び出し、S3、DynamoDB、IAM などのリソースにアクセスする。

この場合、アプリケーションレイヤの脆弱性が、クラウドアカウント全体の侵害に繋がる可能性がある。付与されたロールの権限が大きいほど、影響は深刻になる。

IMDSv2 と防御策

AWS は IMDSv2 を導入し、セッション指向のメタデータ取得方式を提供している。IMDSv2 では、事前にセッショントークンを取得し、それをヘッダに付与してメタデータを取得する必要があるため、一部の SSRF 攻撃を困難にする。

防御策としては次のようなものがある。

  • IMDSv1 を無効化し、IMDSv2 のみに制限する
  • メタデータサービスへのアクセス権を最小限にする(不要な場合は完全に無効化)
  • ロールに付与する権限を最小化し、侵害時の影響範囲を限定する

Pentest の観点では、対象環境が IMDSv1 を許容しているか、IMDSv2 を利用しているかを確認し、SSRF からの到達可能性を評価する。

評価時の注意点

IMDS から取得した認証情報は非常にセンシティブであり、評価時には次の点に注意する。

  • 商用の AWS アカウントや本番システムに対して、許可なく IMDS へのアクセスや認証情報の取得を試みてはならない
  • 実際の環境で認証情報を取得する場合は、事前にスコーピングと許可を明確にする
  • 取得したキーは評価後速やかに破棄し、必要に応じてローテーションを実施してもらう
  • 検証は限定的な API コールに留め、リソースの破壊や大量データ取得は行わない

本書の演習では、exercises/ssrf-imds/ のローカル疑似環境を利用し、SSRF を起点とした 169.254.169.254 への到達と、IMDS 相当エンドポイントからの情報取得を安全な範囲で確認する。
この演習は IMDSv1 相当(トークン取得なし)の挙動を前提とし、返却される認証情報はダミーである。

次に読む章

本章のポイント

  • クラウド環境の SSRF は、内部到達だけでなく IMDS へのアクセスを通じてクラウド権限の奪取に繋がりうる。
  • IMDSv1 はセッションバインディングがなく悪用されやすいため、IMDSv2 への移行と最小権限設計を前提に、到達可能性と影響範囲を評価する。
  • 認証情報の取得は高リスクであり、スコーピング・許可・最小限の検証・キー破棄/ローテーションなど運用面の統制を前提とする。