HTTP ヘッダー・インジェクションとは
HTTP ヘッダーインジェクションとは、リダイレクト先を指定する Location ヘッダーなどに改行コードを含めることにより、以下のようなことを行える脆弱性です。
- 任意のレスポンスヘッダーの追加
- レスポンスボディの偽造
これにより、クロスサイト・スクリプティングと同様の被害が起きます。
- 偽ページの表示
- Cookie の発行
- 任意のスクリプト実行
- 情報漏えい
また、HTTP のレスポンスを分割することもできます。複数のレスポンスを作り出す攻撃は「HTTP レスポンス分割攻撃」と呼ばれます。
HTTP ヘッダー・インジェクションの対策
- HTTP ヘッダー出力用 API を使用する
- 改行コードを適切に処理する HTTP ヘッダー用 API がない場合は適切な対処を行う
■HTTP ヘッダー出力用 API を使用する
HTTP ヘッダーの出力は単純ではないため、言語で用意された HTTP ヘッダー出力用の API を指定します。
■改行コードを適切に処理する HTTP ヘッダー用 API がない場合は適切な対処を行う
HTTP ヘッダーを出力する API が適切に改行コードを処理できない場合は、以下のような対応を行います。
- 改行の後に空白を入れることで継続行として処理する
- 改行コード以降の文字を削除する
- 改行が含まれていたら処理を中断する
- 改行コードを削除する
■改行コードを削除する
外部からの入力全てについて改行コードを削除することで、HTTP ヘッダーを加工されないようにします。
参考
Webアプリケーションセキュリティに関する記事は、以下のページにまとまっています。ぜひご確認ください。
コメント