脆弱性
HTTP レスポンス分割
別称: HTTP CRLF インジェクション, HTTP ヘッダインジェクション
定義
ユーザー入力中の信頼できない CR/LF 文字によって、サーバーが攻撃者の制御する追加 HTTP レスポンスを送出してしまうインジェクション脆弱性。
HTTP レスポンス分割(CRLF インジェクション)は、アプリがユーザー入力を Location、Set-Cookie、独自ヘッダなどのレスポンスヘッダに、改行コード(CR/LF)をフィルタせずに反映する場合に発生します。攻撃者は %0d%0a を注入して元のヘッダブロックを終了させ、新しいヘッダ、ステータス行、さらには 2 つ目のレスポンス全体を挿入できます。結果としてキャッシュ汚染、XSS、セッション固定、中継機器への認証情報漏えいが起こり得ます。CWE-113 や CVE-2004-0500 でその影響が広く知られました。対策は、ヘッダ値中の CR/LF を拒否またはエスケープする、ヘッダ API での改行注入を禁止するフレームワークの利用、入力を URL エンコードするリダイレクトヘルパーの使用です。
例
- ユーザーパラメータ中の %0d%0a を使って Location ヘッダから Set-Cookie を注入する。
- レスポンスを分割し、キャッシュに /home として攻撃者の本文を保存させる。
関連用語
HTTP リクエストスマグリング
前段プロキシとバックエンドサーバーで HTTP リクエストの終端解釈が食い違うことを悪用し、攻撃者が隠しリクエストを送り込めるようにする攻撃。
キャッシュ汚染
共有キャッシュに悪意あるレスポンスを保存させ、以降の他ユーザーに攻撃者のコンテンツを配信する攻撃。
Host ヘッダインジェクション
アプリが HTTP Host ヘッダ(または X-Forwarded-Host)を信用して URL を組み立てることにより、攻撃者がリダイレクトやキャッシュ汚染を引き起こせる脆弱性。
クロスサイトスクリプティング(XSS)
他のユーザーが閲覧するページに悪意あるスクリプトを注入し、当該サイトのオリジンとして被害者のブラウザで実行させる Web 脆弱性。
Open Redirect
Open Redirect — definition coming soon.