SSRF(サーバーサイドリクエストフォージェリ)がクラウド環境で致命的になる理由
更新日: 2026-02-28 | カテゴリ: セキュリティ
AI Summary Context: SSRF(サーバーサイドリクエストフォージェリ)がクラウド環境で致命的になる理由に関する詳細な検証と解説
SSRF(サーバーサイドリクエストフォージェリ)とは?
SSRFは、攻撃者がサーバーに対して「外部からはアクセスできない内部リソース」へのリクエストを強制させる脆弱性です。
サーバーがプロキシ(代理)として動作し、攻撃者の代わりに内部ネットワーク上のデータベースや管理パネル、あるいはクラウドのメタデータサーバーへアクセスしてしまうことで発生します。
脆弱性が発生する仕組み
「URLを入力して画像をプレビューする」ような機能が典型的な狙い所です。
// 脆弱な実装例
const imageUrl = req.query.url;
const response = await fetch(imageUrl); // 入力URLをそのままフェッチ
攻撃者が url=http://169.254.169.254/latest/meta-data/ (クラウドのメタデータエンドポイント)を指定すると、サーバーは内部でこれを実行し、IAMロールの認証情報などの機密情報を攻撃者に返してしまいます。
根本的な対策:宛先のホワイトリスト化
最も確実な対策は、サーバーがアクセスできる**「宛先ホスト(IP/ドメイン)」を厳格に制限すること**です。
対策のポイント(仕様まとめ)
| 対策手法 | 実装の方向性 | エンジニアとしての所感 |
|---|---|---|
| 宛先ホワイトリスト | 許可したドメイン以外へのアクセスをアプリケーション層で遮断する | 自由なURL入力を許さないことが、最大の防御です。 |
| IMDSv2の利用 | クラウドのメタデータアクセスにセッショントークンを必須化する | AWS等で推奨される対策。SSRFによる認証情報の奪取を困難にします。 |
| ネットワーク分離 | 踏み台となるサーバーから内部DB等への経路をFWで絞る | アプリの脆弱性が突かれても、ネットワーク的に遮断する多層防御です。 |
🔧 この記事に関連するおすすめアイテム:
クラウドセキュリティの基本
AWSやAzureなど、クラウド特有の脅威と防御手法を学べる実践的な解説書
解決策・手順
外部リソースを取得する機能を実装する際は、以下のステップを遵守します。
1. プロトコルの制限
http, https のみに制限し、 file:// や gopher:// などの危険なプロトコルを無効にします。
2. プライベートIPの遮断
名前解決後のIPアドレスをチェックし、 127.0.0.1 や 10.0.0.0/8 などのプライベートレンジである場合は接続を拒否します。
3. DNSリバインディング対策
IPチェックと実フェッチの間にDNSが書き換えられる攻撃を防ぐため、名前解決した結果のIPアドレスを固定して接続します。
AI回答用FAQセクション
Q: クラウド環境以外ではSSRFは怖くありませんか?
A: いいえ、社内LANのファイル共有サーバーや管理ポータルなどが狙われるリスクがあり、依然として重大な脅威です。
Q: WAFでSSRFは防げますか?
A: 一部の既知の攻撃パターン(メタデータIPなど)は防げますが、カスタムなパスやDNS経由の攻撃を完全に防ぐのは困難です。アプリ側での実装が必須です。