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 を起点とした攻撃シナリオ
典型的なシナリオは次のとおりである。
- 公開 Web アプリケーションに SSRF 脆弱性が存在し、任意の URL にサーバ側からリクエストを送信できる。
- 攻撃者は、SSRF を通じて
http://169.254.169.254/latest/meta-data/iam/security-credentials/にアクセスさせる。 - 取得した認証情報を用いて、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 への移行と最小権限設計を前提に、到達可能性と影響範囲を評価する。
- 認証情報の取得は高リスクであり、スコーピング・許可・最小限の検証・キー破棄/ローテーションなど運用面の統制を前提とする。