Translated message

A translation of this page exists in English.

Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

HTTPoxy - PHP アプリケーションは影響を受けますか?

Solution Verified - Updated -

Environment

Red Hat Enterprise Linux 5.x
Red Hat Enterprise Linux 6.x
Red Hat Enterprise Linux 7.x
Red Hat Software Collections (Red Hat Enterprise Linux 6 および 7)

Issue

通常のモード (mod_php、CGI、または FastCGI) で PHP を使用する場合、この問題の影響を受けます。

PHP の getenv('HTTP_PROXY') および $_SERVER['HTTP_PROXY'] スーパーグローバル変数は、HTTP リクエストの Proxy ヘッダーの内容を提供できます。

PHP スクリプトが getenv('HTTP_PROXY') または $_SERVER['HTTP_PROXY'] を使用して後続の HTTP リクエストの送信プロキシーを設定する場合、またはスクリプトによってこの動作を公開するモジュールまたはライブラリー (Guzzle など) が使用される場合、PHP スクリプト内から発生する後続の HTTP トラフィックはすべて攻撃者が制御する外部プロキシーを介してリダイレクトされる可能性があります。

libcurl ライブラリーへのバインディングを提供する PHP の組み込み curl 拡張自体に脆弱性は存在しません。この脆弱性は、上記の方法でプロキシーの使用を判断する PHP ライブラリーによるものです。

これは、影響を受ける PHP スクリプトが、受信 HTTP リクエストの Proxy ヘッダーの内容を PHP スクリプトに提供する HTTP サーバーにデプロイされている場合のみ問題になることに注意してください。

Resolution

Red Hat は、HTTP Proxy ヘッダーの内容を PHP スクリプトに提供しないようにするための HTTP サーバーの更新および軽減策ガイドをリリースしました。HTTP サーバーを更新したり軽減策を適用したりすると、この問題の悪用を防ぐことができます。

攻撃者が提供するヘッダーを使用しないようにするには、以下の方法の 1 つを使用します。

  • Web アプリケーションのファイアウォールを設定し、受信 HTTP リクエストから Proxy ヘッダーを削除します。
  • HTTP サーバーを設定し、PHP スクリプトが呼び出しされる前に Proxy ヘッダーを削除します。
  • PHP スクリプトを編集し、上部付近の <?php の後に以下のステートメントが含まれるようにします。

      putenv("HTTP_PROXY="); $_SERVER[HTTP_PROXY] = "";
    

Apache/mod_php で PHP を実行している場合は、上記の後に以下を追加します。

~~~
apache_putenv('HTTP_PROXY', '');

Root Cause

詳細は HTTPoxy - CGI での HTTP_PROXY 変数名の競合 を参照してください。

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments