- Webアプリの脆弱性を利用した攻撃手法の一つであるHTTPヘッダーインジェクションについてメモする。
概要
-
フォームやURLで入力するリクエストパラメータやクエリパラメータを、想定しないデータに改変して送信し、HTTP レスポンスヘッダに新たなヘッダ要素を追加したり、レスポンスボディに任意の文字列を追加する攻撃
-
例:改行コードによる任意のヘッダー設定
-
HTTPリクエスト
http://example.com/account/aaa?redirect_url=http://example.com/account/login%0D%0ASet-Cookie:+SSO_ID=XYZ123
-
HTTPレスポンス
HTTP/1.1 302 Found Date: Sun, 18 Jun 2021 21:34:35 GMT Location: http://example.com/account/login Set-Cookie: SSO_ID=XYZ123
※改行コード(%0D%0A)により、以降の文字列を次の要素として扱われてしまい、Set-Cookieヘッダが有効になる。
-
想定される脅威
- 利用者のブラウザ上での偽情報を表示、任意のスクリプト埋め込み
- 任意のCookie発行※セッションIDの固定
対応策
- 外部からのパラメータをそのまま使用しない、HTTPレスポンスヘッダに出力しない実装/ライブラリ使用を行う。
- 使用する場合は、エスケープなどを行う。