【PHP】環境変数HTTP_PROXYに関する脆弱性対策覚書(wordpress用サーバ例含む)

脆弱性報告概要

proxyを含むリクエストヘッダを受信した場合に、サーバの環境変数HTTP_PROXYに意図しない値が設定されてしまいます。

そのため、中間者攻撃が行われたり、不正なホストに接続させられたりするなどの可能性があるとのこと。

対象は以下とのことです。

対象 共通脆弱性識別子
PHP CVE-2016-5385
GO CVE-2016-5386
Apache HTTP Server CVE-2016-5387
Apache Tomcat CVE-2016-5388
HHVM CVE-2016-1000109
Python CVE-2016-1000110

本記事は、PHPapache(多分)が対象です。

HTTP_PROXYが上書きされるのを確認する

まず、脆弱性対策を行っていないサーバのドキュメントルート以下で、phpinfo.phpを作成します。

中身はもちろん。

<?php phpinfo(); ?>

urlを開いてみて、HTTP_PROXYの値を見てみます。
例:http://domain.co.jp/phpinfo.php

私が自前サーバで見たところ、HTTP_PROXYを検索(Ctrl+F)しても存在しませんでした。

次に、ChromeのエクステンションのAdvanced REST clientで、herderにproxyというパラメータを付けて送ってみます。

SS 2016-07-25 13.09.59

レスポンスを確認してみるとそこには確かにHTTP_PROXYが…

HTTP_PROXY nyannyanmaru.com 

怖い!

対策概要

  • 1. リクエストに含まれるProxyヘッダを無効にする
  • 2. CGI において、環境変数HTTP_PROXYを使用しない
  • 3. ファイアウォールなどを用いてWebサーバからのHTTPアウトバウンド通信を必要最小限に制限する

この中でも、1つ目が簡単です。

ページ最後の参照先で散々書かれていますが、wordpressを運用してるけど、サーバ詳しくない・・・みたいな人がいたら救いになるかもと考え、コメント付きで対策を記載します。

対策:apache

apache、あんまり触ってないので、ちょい迷いました。

httpd.confに追記。

RequestHeader unset Proxy early

特定のディレクティブへのみ設定したい時は、そのディレクティブへ。

そもそもHTTP_PROXYを利用していないし、一切拒否する場合は、ファイルの最後にでも追加してください。

wordpress専用サーバなんかは一切合切拒否でファイル末尾へ追記で十分なはずです。

対策:nginx

fastcgi_param HTTP_PROXY ""nginx.confのphpの設定箇所に追記します。

wordpressの場合は以下のような設定がある箇所になります。

        location ~ \.php$ {
            root         /var/www/html/wordpress;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param REQUEST_URI $uri?$args;
            fastcgi_param HTTP_PROXY ""; # コレ!!
            include fastcgi_params;
        }

参考リンク

https://httpoxy.org/#affected-summary
https://www.jpcert.or.jp/at/2016/at160031.html
http://blog.ichikaway.com/entry/2016/07/19/123423
http://blog.shin1x1.com/entry/fix-httpoxy-for-php-application

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク