【えすえすあーるえふ】

SSRF(サーバーサイドリクエストフォージェリ) とは?

公開:
💡 受付に「社長室まで届けて」と偽の封筒を渡す手口
📌 このページのポイント
SSRFの仕組み ファイアウォール 外部ゾーン 内部ネットワーク 攻撃者 Attacker Webサーバー 公開サーバー 悪意あるURL送信 通常の外部リクエスト (ブロック) 内部ネットワーク メタデータAPI 169.254.169.254 内部DB / 管理画面 非公開API 攻撃リクエスト サーバーはファイアウォール内側からリクエストを送るため、 外部からは届かない内部リソースにアクセスできてしまう
サーバーを踏み台にして内部ネットワークへアクセスする
ひよこ ひよこ
SSRFってなに?サーバーが攻撃されるの?
ペンギン先生 ペンギン先生
サーバーが「自分でHTTPリクエストを送る機能」を持っているとき、その機能を悪用して内部ネットワークにアクセスさせる攻撃だよ。サーバー自身が踏み台になるんだね。
ひよこ ひよこ
サーバーってなんで自分でリクエストを送るの?
ペンギン先生 ペンギン先生
画像URLを受け取ってサムネイルを生成したり、Webhookで他サービスを呼び出したり、外部APIを叩いたりと、URLを受け取ってリクエストを送る機能はよくあるんだよ。その入力値が攻撃者にコントロールされると危ないんだね。
ひよこ ひよこ
内部ネットワークに入ったら何が盗めるの?
ペンギン先生 ペンギン先生
クラウドメタデータAPIAWSなら169.254.169.254)にアクセスすると一時的な認証情報が取得できたり、本来外から届かない内部データベースや管理画面に触れてしまうんだよ。
ひよこ ひよこ
CSRFとどう違うの?名前が似てるよね。
ペンギン先生 ペンギン先生
CSRFはユーザーのブラウザ踏み台にしてリクエストを送らせる攻撃だよ。SSRFはサーバー自身を踏み台にするから、ファイアウォールで守られた内部リソースにも到達できるのが大きな違いだね。
ひよこ ひよこ
どうやって防げばいいの?
ペンギン先生 ペンギン先生
リクエスト先URLをホワイトリストで検証すること、プライベートIPアドレス(192.168.x.x や 10.x.x.x など)へのアクセスを拒否すること、クラウドのメタデータエンドポイントへのアクセスを制限することが基本的な対策だよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SSRF」って出てきたら「サーバー踏み台にして内部ネットワークを攻撃する手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Server-Side Request Forgery」 = サーバーサイドリクエスト偽造
💬 CSRFが「ブラウザを踏み台にする」のに対して、SSRFは「サーバー自身を踏み台にする」攻撃を指しているんだよ。
← 用語集にもどる