用語「HTTP Response Splitting」について
HTTP Response Splitting (えいちてぃーてぃーぴーれすぽんすすぷりってぃんぐ)
話題 : セキュリティ
日本語にすると「HTTP 応答分割攻撃」といったところでしょうか (IPA 的には「HTTP レスポンス分割」みたいです)。簡単に言うと、HTTP応答ヘッダに CR+LF やら Content-Length: 0 やらをインジェクションして、ひとつの HTTP 応答が二つの HTTP 応答であるように仕立てる攻撃です。
以下のような感じの応答を捏造します。
HTTP/1.1 302 Found Conetnt-Type: text/html Location: http://example.com Content-Length: 0 HTTP/1.1 200 OK Conetnt-Type: text/html 悪意あるコンテンツ
すると、Content-Length: 0 な応答の後にもう一つの HTTP 応答が返ってきているように見えます。ものによっては前者に従ってリダイレクトしつつ、何故か後者の内容をキャッシュしてしまったりすることがあったりするようです。
この攻撃は、HTTP 応答ヘッダに任意の内容がインジェクションできる場合に可能となります。よくあるのは Location: フィールドの値として出力する URL が外部から入力されるシステムで、このサニタイズを怠っているとあっさり成立することがあります。HTTP 応答ヘッダに外部入力を出力する際は、確実に CR+LF をサニタイズしなければなりません。
- 「HTTP Response Splitting」にコメントを書く