SSRFとは何か|仕組み・できること・対策を解説

SSRF(Server-Side Request Forgery)は、Webアプリケーションにおける代表的な脆弱性の一つです。

少し分かりにくい概念ですが、ポイントはシンプルです。

サーバーに対して、本来意図していないURLへリクエストを送らせる攻撃です。

この記事では、SSRFの基本から実際に何ができるのか、対策までを分かりやすく解説します。

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

SSRFとは、ユーザーが指定したURLに対してサーバーがリクエストを送る仕組みを悪用する攻撃です。

本来、この仕組みは次のような用途で使われます。

  • 外部APIの取得
  • 画像の読み込み
  • Webhook送信

しかし、入力値の検証が不十分な場合、攻撃に利用されます。


SSRFの仕組み

例えば、次のような機能を考えます。

「URLを入力すると、そのページの内容を取得する」

内部では、サーバーが次のようなリクエストを送ります。

GET http://example.com

ここで問題になるのは、ユーザーが自由にURLを指定できる点です。

攻撃者は、この仕組みを利用して意図しない場所へアクセスさせます。


SSRFでできること

SSRFが成立すると、通常は外部からアクセスできない場所に到達できます。

内部ネットワークへのアクセス

http://192.168.0.1
http://localhost/admin

内部の管理画面やAPIにアクセスできる可能性があります。

クラウドのメタデータ取得

http://169.254.169.254/latest/meta-data/

クラウド環境では認証情報が取得されることがあります。

非公開APIの操作

内部APIに対してリクエストを送ることで、管理機能を操作できるケースもあります。


なぜ危険なのか

SSRFの問題は、サーバー自身がアクセスしてしまう点にあります。

これにより、次のような影響が発生します。

  • ファイアウォールを回避する
  • 内部ネットワークにアクセスできる
  • 信頼された通信として扱われる

よくある対策とその限界

ドメイン制限(ホワイトリスト)

「特定のドメインのみ許可する」という対策はよく使われます。

しかし、次のような問題があります。

  • リダイレクトで別サイトに移動できる
  • DNSによってIPが変わる
  • サブドメインの扱いが曖昧

オープンリダイレクトによるバイパス例

例えば、許可されたドメインにリダイレクト機能がある場合です。

http://example.com/redirect?url=http://192.168.0.1

このURLを使うと、次のような流れになります。

  1. example.comとしてチェックを通過
  2. リダイレクトが発生
  3. 内部IPへアクセス

結果として、制限を回避できます。


SSRFが発生しやすい機能

URL入力機能

  • 画像URL入力
  • APIエンドポイント指定
  • OGP取得

外部連携機能

  • Webhook
  • 外部サービス連携
  • 自動投稿

WordPressでの例

WordPressでも以下のような機能が対象になります。

  • 外部画像の取り込み
  • RSS取得
  • プラグインのAPI連携

SSRFの基本対策

内部IPのブロック

以下のようなアドレスへのアクセスを禁止します。

  • 127.0.0.1
  • localhost
  • 192.168.x.x
  • 169.254.x.x

リダイレクトの制御

  • 自動リダイレクトを無効化する
  • リダイレクト先も検証する

URLの厳格な検証

  • ドメインだけでなくIPも確認する
  • DNS解決後の結果もチェックする

まとめ

SSRFはシンプルな仕組みですが、影響範囲が広く危険度の高い脆弱性です。

特に重要なのは次の点です。

  • ユーザー入力のURLは信用しない
  • ドメイン制限だけでは不十分
  • 最終的な到達先を検証する