HTMLヘッダインジェクション(HTTP Header Injection)は、Webアプリケーションの脆弱性を利用して、HTTPレスポンスヘッダに不正な文字列を挿入する攻撃手法です。これにより、攻撃者はユーザーを偽のサイトにリダイレクトさせたり、Cookieを不正に設定したりすることができます。
仕組み
- ユーザー入力の受け取り:攻撃者がWebアプリケーションの入力フィールドに不正な文字列を入力します。
- HTTPレスポンスヘッダの改ざん:アプリケーションがユーザー入力を適切に検証せずにHTTPレスポンスヘッダに反映させることで、改ざんが行われます。
- 不正な動作の誘発:改ざんされたHTTPレスポンスヘッダにより、ユーザーが意図しない動作を引き起こします。
被害内容
- リダイレクト:ユーザーをフィッシングサイトなどの悪意あるサイトにリダイレクトさせる。
- Cookieの不正設定:任意のCookieを設定し、セッションハイジャックやセッション固定攻撃を行う。
- コンテンツの改ざん:レスポンスボディに不正なコンテンツを挿入し、Webページを改ざんする。
防止策
- 入力値のバリデーションとサニタイズ:ユーザー入力を適切に検証し、危険な文字やシーケンスを除去します。
- 改行コードの除去:HTTPレスポンスヘッダに含まれる改行コード(CRLF)を除去し、不正なヘッダの挿入を防ぎます。
- セキュリティ診断の実施:定期的にセキュリティ診断を行い、脆弱性を早期に発見・修正します。
具体的な事例
- フィッシングサイトへのリダイレクト:攻撃者がHTTPレスポンスヘッダに不正なLocationヘッダを挿入し、ユーザーをフィッシングサイトにリダイレクトさせる。
- セッション固定攻撃:攻撃者がSet-Cookieヘッダを挿入し、任意のセッションIDを設定することで、セッションハイジャックを行う。
HTMLヘッダインジェクションは、適切な対策を講じることで防ぐことができます。セキュリティ対策を徹底し、システムの安全性を確保しましょう。