Server-Side Request Forgery(SSRF)攻撃とは、Webアプリケーションの欠陥を悪用して内部リソースにアクセスすることです。アプリケーションとAPIを保護する方法をご紹介します。

SSRFは、攻撃者がWebアプリケーションやAPIを改ざんして内部リソースにリクエストを送信させることで発生するセキュリティ欠陥の一種であり、不正アクセス、データ漏洩、システム侵害、リモート コード実行などにつながる可能性があります。ファイアウォールや仮想プライベート ネットワーク(VPN)ソリューションで保護されていても、攻撃者は入力検証をすり抜け、アプリケーションを悪意のあるWebサイトにアクセスさせます。

SSRF攻撃とは何か、どのように機能するのか

SSRF攻撃の場合、攻撃者は一般に、サーバ側HTTPリクエストのターゲットURLを指定するために使用される入力を改ざんします。これは、アプリケーションがリモート リソースからデータを取得する前に、ユーザーが入力したURLを検証またはサニタイズしない場合に発生する可能性があります。攻撃者は、標的となったサーバに任意の宛先へのリクエストを実行させることができるため、さまざまなセキュリティ リスクにつながる可能性があります。

またこのような攻撃は、標的となるリソースが、クラウドのメタデータ サービスやバックエンドのAPIなど、他のシステムと信頼関係を構築している場合にも発生し、攻撃者はこれらの信頼されたサービスにリクエストを行って機密情報を引き出したり、不正なアクションを実行したりすることができます。

最新のWebアプリケーションはエンドユーザーに便利な機能を提供するために、URLの取得が一般的なシナリオになっており、その結果、SSRFの発生率が上昇しています。また、APIとクラウド サービスが普及し、コンピューティング アーキテクチャが分散され複雑になるにつれて、SSRFの重大度も高くなっています。

SSRFは、最も重要なWebアプリケーション セキュリティ リスクのリストとして広く知られているOWASP Top 10 Application Security Risksの1つに挙げられています。また、アプリケーションとAPIの両方に共通するOWASP Top 10セキュリティ リスクの1つでもあり、セキュリティ ソリューションを実装する際に特別な考慮が必要です。

SSRF攻撃の仕組みをここで見てみましょう。

  • アプリケーションで、ユーザー入力によってサーバ側リクエストのターゲットURLまたはリソースを指定できます。これには、URLのパラメータからの入力、フォーム フィールドからのユーザー入力、または他のデータ ソースからの入力があります。
  • 攻撃者は、リクエストに特殊な細工を施して、攻撃者がアクセスしたい、あるいは悪用したいリソースを指すように入力を改ざんして送信します。このリソースには、ファイアウォールの内側にあり、外部ネットワークからアクセスできない内部サーバ、バックエンド サービス、APIなどの内部システムが考えられます。
  • サーバは、ユーザーの悪意のある入力を処理し、指定されたURLへのリクエストを作成します。このリクエストは、ユーザーのブラウザではなくサーバ側から行われるため、サーバ側リクエストになります。
  • 標的となったサーバが内部ネットワークにある場合、攻撃者は内部リソースの機密情報にアクセスして取得しようとし、攻撃者が管理する外部の場所にそのデータを盗み出そうとします。またSSRFは、内部システムのポートをスキャンするためにも使用され、これによって攻撃者は潜在的な弱点や脆弱性を特定することができます。
  • SSRF攻撃は、インスタンスが機密メタデータ サービスにアクセスできるクラウド環境で特に問題になっています。
  • SSRF攻撃の影響は深刻で、機密データやサービスへの不正アクセスから、内部システムの悪用、クラウド環境全体の侵害にまで及ぶ可能性があります。

SSRF攻撃の例

ここで、SSRF攻撃が実際にどのように行われるかを説明します。

ユーザーが画像をアップロードして処理できる、セキュリティで保護されていないWebアプリケーションがあり、ユーザーが処理する画像のURLを入力する機能があるとします。しかし攻撃者は、正当な画像のURLではなく、内部ファイルやバックエンド データベースなど、アプリケーション サーバ上の内部リソースを指す悪意のあるURLを含んだ入力を入念に細工して、送信します。アプリケーション サーバはその悪意のあるURLをそのまま処理し、攻撃者の入力に従って、URLで指定された内部リソースにリクエストを行い、機密データを取得したりデータベースにクエリを行ったりして、そのデータを攻撃者に返します。

サーバが侵害されると、攻撃者は外部システムにリクエストを行ったり、脆弱性を探ったり、サーバがアクセスできるサービスを操作したりできるようになります。SSRF攻撃の影響は、システムのアーキテクチャと侵害されたサーバの権限によって異なる場合があります。これらの攻撃が、不正なデータ アクセス、サービス中断、内部システムの侵害につながる可能性があります。

SSRF攻撃の3つの基本的なタイプ

SSRF攻撃は、攻撃者がどのようにサーバを操作して情報を抽出するかによって、さまざまなタイプに分類できます。

標準的なSSRF攻撃

標準的なSSRF攻撃では、攻撃者はユーザー入力の一部に悪意のあるURLを注入して、サーバから指定されたリソースにリクエストを送信させます。攻撃者はサーバからのレスポンスを直接監視し、データの取得方法やアクセス可能なサービスの特定方法など、内部ネットワークに関する情報を収集できます。

ブラインドSSRF攻撃

ブラインドSSRF攻撃では、攻撃者はサーバから直接レスポンスを受け取りません。代わりに、アプリケーションの動作の変化を監視して、間接的にSSRF攻撃の成否を確認します。

攻撃者は、細工した入力を送信して、サーバから外部または内部リソースにリクエストを行わせます。攻撃者は、アプリケーションのアクティビティでエラー メッセージの違い、応答時間、その他の副次的作用などの識別できる変化を探します。この情報により攻撃者は、レスポンスを直接確認しなくても、SSRFが成功したかどうかを推測できます。

時間ベースのブラインドSSRF攻撃

時間ベースのブラインドSSRF攻撃では、サーバのレスポンスを直接確認するのではなく、レスポンスの遅延を利用してSSRFの成否を推測します。

他のSSRF攻撃と同様に、攻撃者は悪意のある入力を送信して、サーバから外部または内部リソースにリクエストを行わせ、アプリケーションが応答するのにかかる時間を監視します。応答時間の遅延は、SSRFの成功を示す場合があります。攻撃者は繰り返しペイロードを調整し、内部ネットワークまたはリソースに関する情報を抽出するために応答時間の遅延を監視します。

SSRF攻撃から保護するには

SSRF攻撃から保護するには、以下のような予防的サイバーセキュリティ対策を組み合わせて実装する必要があります。

  • 入力検証。特に、アプリケーションが外部リソースにリクエストを行うときに、ユーザー入力を厳格に検証してサニタイズします。URL許可リストを実装して、アプリケーションがアクセスする必要のある信頼できるドメインや特定のURLのみを許可します。httpやhttpsなどの所定のプロトコルのみが許可され、SSRF攻撃で悪用されることの多いfile://やftp://などの潜在的に危険なプロトコルが拒否されるようにします。また、ユーザーが入力したURLが、所定のパターンや形式に従っているかどうかを検証して、悪意のあるURLが注入される可能性を低減します。
  • ホストとIPアドレスの許可リスト。アプリケーションとのやり取りを許可されているホストとIPアドレスの許可リストを維持します。これにより、リクエストの宛先を意図した信頼できるものに制限して、SSRFの攻撃対象を減らすことができます。
  • 内部リソースへのアクセスの制限。ネットワーク セグメンテーションを実装して内部リソースの露出を制限します。外部向けサーバによる内部システムやサービスへのアクセスを最小限に抑えます。Web Application Firewall(WAF)アクセス制御を設定して、アプリケーション サーバからのアウトバウンド接続を制限します。事前に定義された必要な接続だけを許可し、不要なアウトバウンド トラフィックをブロックします。アプリケーションと外部リソースの間の仲介者として機能するリバース プロキシを導入します。アプリケーションがアクセスできる外部リソースを制御するようにプロキシを設定して、制御レイヤを追加します。

こうした予防策はSSRF攻撃の防止にどのように役立つのでしょうか。架空のシナリオを見てみましょう。

あるオンライン コンテンツ管理システムで、ユーザーはURLを入力して投稿に外部画像を挿入することができます。このシステムは適切な入力検証を行わずに、ユーザーが入力したURLを処理します。攻撃者は入力検証が行われないことを知り、内部APIエンドポイントやデータベース サーバなどの内部リソースを指す悪意のあるURLを入力して、システムを悪用しようとします。そこでアプリケーションのセキュリティ チームは、システムの入力検証を強化して、承認されるURLに厳格なルールを適用します。システムは、ユーザーが入力したURLが所定のパターンに従っているかどうかの検証を開始し、さらにチームは、外部リソースに許容されるドメインのホワイトリストを実装します。

攻撃者は、SSRF欠陥を悪用するように細工したURLを含む投稿を送信しますが、入力検証によって悪意のあるURLが検出されるようになります。入力検証によって処理中に悪意のあるURLが拒否され、攻撃者が指定した内部リソースにアプリケーションがリクエストを行うのを防ぎます。SSRF攻撃は、強化された入力検証によって阻止されます。システムは内部リソースへの不正なリクエストを拒否し、内部システムの整合性とセキュリティが維持されます。

入力検証を実装することで、アプリケーションは悪意のある入力を拒否またはサニタイズできるため、不正なリクエストを防ぎ、SSRF攻撃のリスクが緩和されます。

F5がお手伝いできること

SSRF攻撃が危険なのは、攻撃者がファイアウォールやアクセス制御などの従来のネットワーク セキュリティ対策をすり抜けて、一般に組織の内部ネットワーク内で保護され、インターネットから直接アクセスできないようにしている機密情報やリソースにアクセスできるためです。SSRF攻撃は、データとシステムの機密性、整合性、可用性に重大なリスクをもたらすため、組織は、WAF、適切な入力検証、アクセス制御、ネットワーク セグメンテーションなどの堅牢なセキュリティ対策とベスト プラクティスを実装して、SSRF脆弱性の脅威を緩和し、悪用の可能性を防ぐ必要があります。

F5 WAFソリューションは、SSRFを含むOWASP Top 10に起因する幅広いリスクを防ぎ、軽減します。F5 WAFソリューションは、F5 Labsの脅威インテリジェンスや機械学習(ML)による自動化されたセキュリティなどのシグネチャと動作保護を組み合わせて、新たな脅威に対処します。これにより、クラウド、オンプレミス、エッジの各環境でアプリケーションを一貫して保護する負担と複雑さが軽減され、さまざまな導入オプションを選択できます。BIG-IP Advanced WAFは、SSRF攻撃からアプリケーションを保護し、ソフトウェアの脆弱性に対する重要な暫定措置を提供できる堅牢なソリューションであるのに対し、F5 Distributed Cloud WAFは、使いやすいアズ ア サービス セキュリティ プラットフォームによって運用が大幅に簡素化され、あらゆる拠点のアプリケーションを保護します。

F5 Web Application and API Protection(WAAP)ソリューションは、WAF、APIセキュリティ、L3~L7 DDoS緩和策、自動攻撃や自動化された脅威を防御するボット対策などを含む包括的な保護対策により、最新のアプリケーションの攻撃対象全体を保護します。分散型プラットフォームにより、アプリケーションとAPIがホストされている場所に関係なく、これらの資産全体にわたって一貫したポリシーを導入してセキュリティを拡張することが容易になり、APIライフサイクルとより広範なエコシステムにセキュリティを統合することができます。