httpoxy

概要

HTTPアクセス時に”proxy:”ヘッダをつけると
サーバ側で HTTP_PROXY として認識される(ヘッダのproxyが大文字に変換され、HTTP_が付与される)
CGIアプリケーションはこの値をHTTPプロキシの値として認識し
例えばPHPは外部接続時にHTTP_PROXYを利用して通信する

影響

サーバから外部にHTTP通信時にプロキシを経由させることができる
つまり通信内容を傍受可能となる
2016-07-19_220225
Mitigating the HTTPoxy Vulnerability with NGINX

対策

・リクエストに含まれる Proxy ヘッダを無効にする
・CGI において、環境変数 HTTP_PROXY を使用しない
・ファイアウォールなどを用いて Web サーバからの HTTP アウトバウンド通信を必要最小限に制限する
CGI等を利用するWebサーバの脆弱性に関する注意喚起 – JPCERT/CC

nginx対策方法

リクエストに含まれるProxyヘッダを無効にする対応は
複数サイト運用だと複数のファイル変更が必要となり、キツイためCGIにてHTTP_PROXYを使用しないことで対応

### 設定追加してreloadする ###
root@debian9:/etc/nginx# vi fastcgi_params
=====
fastcgi_param HTTP_PROXY "";
=====
root@debian9:/etc/nginx# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@debian9:/etc/nginx# /etc/init.d/nginx reload

apache対策方法

検証環境が手元にないが、以下でリクエストに含まれるProxyヘッダを無効にすることが可能とのこと

RequestHeader unset Proxy

確認方法

PHPに関するHTTPOXY脆弱性の問題と対応方法より

curl -H 'Proxy: 127.0.0.1:12345' "http://localhost"

でアクセス。PHP側は

var_dump($_SERVER['HTTP_PROXY']);
putenv('HTTP_PROXY=');
var_dump(getenv('HTTP_PROXY'));
exit;

その他

主なディストリビューションの対応方法
httpoxy : CGI/言語などを利用したHTTP_PROXY書き換えの脆弱性(CVE-2016-5387 etc.)

メニューを閉じる