レスポンスヘッダ+改行コード=脆弱性?! − @IT

すてっきー経由

レスポンスヘッダインジェクションの記事です。いつもはるぷの絵は和みますなぁ。

例えば、「ヘッダ値」の部分に改行が挿入されると、ヘッダ値は改行の直前で終了し、改行後の文字列は“次のヘッダ”として解釈される。そのため、ヘッダ値に改行の挿入が可能な状態であると、任意のヘッダを追加することが可能となってしまう。この問題をレスポンスヘッダインジェクションと呼ぶ。
任意のレスポンスヘッダを挿入されてしまうことによって、ユーザーのCookieが汚染されてしまったり、悪意のあるサイトへの誘導をされてしまったりする恐れがある。またWebサーバとブラウザの組み合わせによってはクロスサイトスクリプティングが発生する場合もある。
仮にヘッダへ改行が入ってしまい、この攻撃が成功してしまう予兆があったとしても、HTTPレスポンスヘッダを意識せずにWebアプリケーションを開発している場合、気付くことはかなり難しいといえる。

レスポンスヘッダインジェクションの対策は、改行コードなどをエラーにするか、URLエンコードを必須みたいにするかですか

レスポンスヘッダインジェクションの対策としては、以下のような対策が挙げられる。

  • 入力チェックを行い改行コードがある場合にはエラーとする
  • 出力時にパーセントエンコードされていることを保証する

(「%0d%0a」のままの文字列として扱われればレスポンスヘッダインジェクションの問題は起きない)

また、レスポンスヘッダ出力用のライブラリなどを使うことでこれらの対策が行える場合があるため、そのような安全なものが用意されている場合はそのライブラリを積極的に利用することが望ましい。

はるぷ芸が細かい!!!画像の中のURLエンコード文字もきちんと戻せるw

おはよー♪

%82%A8%82%CD%82%E6%81%5B%81%F4

ナツさん!

%83i%83c%82%B3%82%F1%81I

screenshot