HTTPヘッダインジェクション攻撃とは?対策方法についてまとめました。
【HTTPヘッダインジェクションとは】悪意あるスクリプトなどが実行されてしまう攻撃
HTTPヘッダインジェクションとは、HTTPリクエストのクエストリング(URLの後ろに?で続ける部分)で、改行コードを悪用して不正なコードが実行されてしまう攻撃です。
例えば、「任意のクッキーがセットされる」、「任意のURLへリダイレクトされる」などの問題が発生します。
【具体例と対策】任意のクッキーがブラウザに設定される
以下だと「Set-Cookie」に指定された値がブラウザのCookieにセットされてしまいます。
http://example.com/aaa.cgi?redirect_url=http://example.com/login%0D%0ASet-Cookie:+SID=XXXX
HTTPレスポンスは下記となり、先ほどは存在しなかった「Set-Cookie」があります。
HTTP/1.1 302 Found Date: Sun, 18 Jun 2021 21:34:35 GMT Location: http://example.com/login Set-Cookie: SID=XXXX
本来、「redirect_url」に指定された値は、レスポンスヘッダの「Location」に入りますが、改行コード(%0D%0A)があると、以降の文字列が次の要素として扱われてしまうため、Set-Cookieヘッダが有効になってしまいます。
他レスポンスヘッダとレスポンスボディは空白行で分割されているため、連続で改行コード(%0D%0A%0D%0A)を入れることで、レスポンスボディに任意のHTMLやJavaScriptを挿入される攻撃にもなってしまいます。
対策としては、外部からのパラメータをHTTPレスポンスヘッダに出力しないようにします。
例えば、「redirect_url」に指定された値に「login」が含まれていたら、「http://example.com/login」にリダイレクトさせるといったように、「redirect_url」に指定された値をそのまま使用しないようにします。
情報処理安全確保支援士試験(登録セキスペ)の概要、攻略法
情報処理安全確保支援士試験(登録セキスペ)の概要、攻略法についてまとめました。
【情報処理入門】用語解説・資格試験対策まとめ
情報処理分野の用語・原理・資格試験対策について解説します。
コメント