guzzlephpのpsr-7における複数の脆弱性

JVNDB

概要

guzzlehttp/psr7はPHPでのPSR-7 HTTPメッセージライブラリの実装です。バージョン2.10.2未満では、ASCII制御文字、空白文字、またはDELがファーストパーティのURIホストコンポーネントで拒否されませんでした。脆弱なフローは以下の通りです。まず、アプリケーションはユーザー制御のURLを受け入れます。次に、そのURLを使ってPSR-7の`Uri`または`Request`を構築します。三番目に、ホストコンポーネントにCRLFまたは他のヘッダーに不適切な文字が含まれています。四番目に、明示的な`Host`ヘッダーが提供されていない場合、そのホストがPSR-7の`Host`ヘッダーにコピーされます。最後に、そのリクエストがシリアル化されるか、独立して不正なホストを拒否しないHTTPクライアントによって送信されます。このフローにおいて、攻撃者はシリアル化されたリクエストに追加の攻撃者制御ヘッダー行を含めることが可能です。例えば、ホストに`”rnX-Injected: yes”`が含まれていると、生成された`Host`ヘッダーが複数行のHTTPヘッダーになる場合があります。ユーザー制御のURLを外向きHTTPリクエスト、URL転送、プロキシ、クローリング、Webhook配信または同様のリクエストディスパッチフローで使用するアプリケーションが影響を受けます。HTTP/1.1接続の再利用、プロキシ、ゲートウェイ、ロードバランサーを含む展開では、解析方法によって、下流のコンポーネントでリクエストスマグリングやキャッシュポイズニングが発生する可能性もあります。この問題は`2.10.2`以降で修正されています。`1.x`はサポート終了しており、パッチは提供されません。回避策として、PSR-7の`Uri`や`Request`インスタンスを構築する前に、すべての信頼できないURI文字列を検証し、ASCII制御文字、空白文字、DEL(CRLF、タブ、スペース、NUL、DEL文字を含む)を含む入力を拒否してください。リクエストを転送するアプリケーションは、最終的なHTTPクライアントまたはシリアライザが無効なURIとヘッダーデータを拒否してからネットワークに書き込むことを保証する必要があります。

技術情報

  • 公開日: 2026-06-16T13:36:06+09:00
  • 更新日: 2026-06-16T13:36:06+09:00

参考リンク

JVNDB の詳細はこちら

対処方法

該当ソフトウェアの最新版への更新、または開発元が提供する緩和策の適用を推奨します。運用環境に応じて事前検証の上で実施してください。

免責

本記事は公開情報をもとに自動集約された速報です。正確性・完全性は保証できません。必ず一次情報(上記リンク等)をご確認ください。