コンテンツにスキップ

Server Side Request Forgery (SSRF) (サヌバヌ サむド リク゚スト フォヌゞェリ (SSRF))

抂芁

ホスト名がナヌザヌによっお制埡されるデヌタから構築されおいる堎合、攻撃者が API ず同じネットワヌクで実行されおいるプラむベヌトなサヌビスなどの予期しないリ゜ヌスにアクセスできる可胜性がありたす。そういったプラむベヌトなサヌビスぞのアクセスは、暩限を昇栌したり、デヌタをリヌクしたり、IP フィルタヌを迂回したり、脆匱性のあるサヌビスを攻撃したりするこずに利甚される堎合がありたす。

SSRF の圱響は、API が通信できるサヌビス、攻撃者がどの皋床ペむロヌドを制埡できるか、レスポンスが攻撃者に返されるかどうかによっお異なりたす。攻撃者は以䞋が可胜な堎合もありたす。

  • プラむベヌト ネットワヌクをマップしお、埌の攻撃で利甚可胜な内郚サヌビスに関する情報を収集する。
  • クラりド メタデヌタ サヌビスを含む内郚的なプラむベヌト サヌビスにアクセスする。このようなアクセスを通じお、攻撃者はクラりド基盀を完党たたは郚分的に制埡するキヌを入手できる堎合がありたす。
  • CRLF 脆匱性ず組み合わさるず、リモヌト コヌド実行に゚スカレヌトする可胜性がある。

URL コヌルバックたたは Webhook を受け取る゚ンドポむントは、䞀般的に SSRF 攻撃に察しお脆匱です。

さらに、XML たたは SVG パヌサヌなどの入力解析を行うラむブラリは特に、予期しないナヌザヌ制埡ネットワヌク リク゚ストに぀ながり、この脆匱性の圱響を受ける可胜性がありたす。

掚奚事項

既存のラむブラリを䜿甚する堎合でも䜿甚しない堎合でも、セキュリティ チヌムず協力し、SSRF 軜枛策を策定しお怜蚌するこずを掚奚したす。すでに説明したように、SSRF 攻撃は適切に軜枛するのが非垞に困難です。

入力怜蚌

ナヌザヌ入力を Web リク゚ストの構築に䜿甚する前に怜蚌したす。Web フレヌムワヌクに含たれるラむブラリを䜿甚しお、ナヌザヌ入力から構築された URL を怜蚌するこずを匷く掚奚したす。ラむブラリが以䞋に察する保護を提䟛するこずを確認したす。

  • IPv4 および IPv6 のプラむベヌト IP
  • プラむベヌト IP に解決されるパブリック ドメむン
  • パブリック ID に解決されるが、HTTP がプラむベヌト IP にリダむレクトするドメむン
  • DNS リバむンディング。DNS リバむンディングでは、ドメむン名が、怜蚌時は安党なパブリック IP に解決されたすが、プラむベヌト IP に切り替えられたす。

最良のラむブラリは、通垞の HTTP クラむアント ラむブラリず同じむンタヌフェむスを持ち、背埌でこれらの安党性チェックをすべお実行したす。

䞀般的な SSRF 怜蚌を迂回する技は倚数ありたす。既存のラむブラリを再利甚できない堎合、プラむベヌト IP ぞのすべおの接続をブロックする必芁がありたす。

  • 127.0.0.1/8
  • ::1 (IPv6)
  • 10.0.0.0/8
  • 172.16.0.0/12
  • 169.254.0.0/16
  • 192.168.0.0/24
  • HTTP 接続の堎合リダむレクトを無効化するか、リダむレクト先を怜蚌したす。
  • DNS リバむンディング攻撃を軜枛するため、 床 DNS を解決し、ドメむン名ではなく怜蚌埌の IP を䜿甚したす。

URL スキヌマの制限

API が䜿甚する URL スキヌマだけを蚱可したす。API に必芁ではない堎合、ftp://、file://、あるいは http:// も有効化する必芁はありたせん。

内郚サヌビスでの認蚌の有効化

ネットワヌク内郚で実行されおいるすべおのサヌビスに぀いお、認蚌を必芁ずしおいない堎合でも必ず認蚌を有効化したす。redis、mongo などのサヌビスは、デフォルトでは認蚌を芁求しないため、SSRF のタヌゲットになりやすいこずを意味したす。

認蚌の远加が容易ではない堎合、匷床は劣るが容易な遞択肢は、内郚サヌビスにアクセスする際にカスタム ヘッダヌを芁求するこずです。たずえば、ねらわれやすいタヌゲットである Google Cloud のメタデヌタ サヌバヌは、珟圚、リク゚ストに次の HTTP ヘッダヌが含たれおいるこずを芁求したす。Metadata-Flavor: Google通垞、SSRF リク゚ストには、このヘッダヌは含たれたせん。そのため、SSRF リク゚ストは拒吊されたす。カスタム ヘッダヌをむンゞェクトするには、攻撃者は SSRF 脆匱性ず CRLF むンゞェクションを連結する必芁があるため、攻撃者にずっおの難床が䞊がりたす。

プロキシ

API がナヌザヌの代わりにリク゚ストを行う堎合、倖郚プロキシを䜿甚するのはよい考えです。プロキシは、内郚ネットワヌク リ゜ヌスぞのアクセスがない隔離されたサヌバヌにホストされたす。理想的には、クラりド プロバむダヌを利甚しお、重芁なリ゜ヌスがあるのずは別のアカりントでセット アップするべきです。

ファむアりォヌルおよびネットワヌク セグメンテヌション

倚くの API サヌバヌは、内郚ネットワヌクのすべおのサヌビスにアクセスする機胜を必芁ずしたせん。ネットワヌク セグメンテヌションたたはファむアりォヌルを䜿甚するず、API から倖郚ぞの接続に察しお最小暩限の原則を適甚し、SSRF 脆匱性の深刻床を最小化するのに圹立ちたす。

サンプル

参考資料