HTTPヘッダ・インジェクションとは
悪意のあるレスポンス内容の書き換えによりHTTPレスポンスヘッダの出力処理で発生する脆弱性。
クロスサイト・スクリプティングと共通の影響がある。
脆弱性の原理
ユーザが入力可能な欄からのリクエストによってレスポンスヘッダの書き換えが行われることにより発生する。
URLの入力欄は対象になりやすい。
具体的には、改行コードを認識してしまうことにより、入力された内容ので悪意のある改変が可能となっている。
脆弱性が悪用された際の影響
クロスサイト・スクリプティングと共通の影響がある。
- 任意のCookie発行
- 表示内容改ざん(ニセのフォームの作成、JavaScriptを用いたCookieの盗難にもつながる)
- キャッシュサーバの汚染(ウェブページの改ざんとなり、サーバ側の被害が大きい)
対策方法
PHP5.4以降は改行コードを認識しないため、ヘッダの書き換えが発生しない。
そのため、新しいバージョンのPHPを利用することが対策となる。
それ以前のバージョンを使う場合、改行コードが異なるので実装の際は注意する必要があるが、主な対策の方針は以下のとおりである。
- レスポンスヘッダに外部からのパラメータを出力しない。
- 専用APIを用いてリダイレクトやCookie出力を行う。
- ヘッダを生成する外部からのパラメータの改行文字をチェックする。