HTTPヘッダインジェクション【情報処理安全確保支援士講座】

情報処理安全確保支援士 HTTPヘッダインジェクション

今回は、情報処理安全確保支援士の試験で問われるHTTPヘッダインジェクションについて解説します。

アカリ
アカリ
HTTPヘッダインジェクションっていうからには、HTTPのヘッダ部に不正なコードを埋め込むのかな?
トモル
トモル
そうみたいだね~具体的な攻撃の流れと内容を確認してみよう!

この記事のまとめ

  1. HTTPヘッダインジェクションの概要
  2. HTTPヘッダインジェクションの流れ
  3. HTTPヘッダインジェクションの対策

HTTPヘッダインジェクション

情報処理安全確保支援士 HTTPヘッダインジェクション

HTTPヘッダインジェクションは、ユーザの入力データからHTTPメッセージのレスポンス(メッセージヘッダ・メッセージボディ)を生成するWebアプリケーション上で、不正なデータを入力し任意のフィールドやメッセージボディを追加したり、複数のレスポンスに分割したりする攻撃です。

キュー
キュー
HTTPレスポンスに改行コードを追加して複数のレスポンスを作る攻撃は、HTTPレスポンス分割とも呼ばれるで

HTTPヘッダインジェクションの攻撃例

HTTPヘッダインジェクションの攻撃例は下記の通りです。

HTTPヘッダインジェクションの攻撃例
  • ユーザのブラウザに偽の情報を表示する
  • 不正なスクリプトを組み込む
  • 任意のCookieを発行する
  • キャッシュサーバのキャッシュを汚染する

HTTPレスポンスのヘッダ情報には”Set-Cookie”や”Location”があります。

これらの生成にはユーザの入力情報を用いていますが、入力内容に不備があると任意のヘッダフィールドや改行コードを追加され、攻撃を受ける可能性があります。

HTTPヘッダインジェクションの対策方法

HTTPヘッダインジェクションの対策方法も確認しておきましょう。

HTTPヘッダインジェクションの対策方法
  • HTTPレスポンスヘッダをWebアプリケーションから直接出力させず、APIやライブラリを使用する
  • HTTPレスポンスヘッダの生成に用いるユーザ入力データに対して改行コードのチェックを行う
  • Cookie発行時にURLエンコードを実施する
📝【出題履歴】平成27年度春期 午後Ⅰ問1 HTTPヘッダインジェクション対策に関する出題

【問題文】
T君:サーバ側でのHTTPレスポンスヘッダの出力処理に問題があり,HTTPヘッダインジェクションの脆弱性が存在すると思います。具体的には,入力された検索文字列を適切に処理せずにSet-Cookieヘッダの値にセットしているものと思われます。この脆弱性を突いた攻撃では, b 攻撃と同様に,攻撃者が指定した任意のスクリピとをクライアント側で実行できます。

U主任:仮に問題があるとした場合,Set-Cookieヘッダの値をセットするサーバ側の処理において,どのような対策が考えられますか。

T君:幾つかの対策があります。例えば,HTTPレスポンスヘッダを適切に出力するために,Webアプリの実行環境やプログラム言語が用意している,ヘッダ出力用の関数やAPIを使用する方法が考えられます。それが使用できない場合は, c するといった処理を開発者が自身で実装する方法も考えられます。

【設問】

設問2
(2) 本文中の b に入れる適切な字句を解答群の中から選び,記号で答えよ
解答群
SQLインジェクション
イ TCP SYN Flood
ウ クロスサイトスクリプティング
ディレクトリトラバーサル

(3) 本文中の c に入れる適切な処理を,30字以内で具体的に述べよ。

出題:平成27年度春期 午後Ⅰ問1

スポンサーリンク

HTTPヘッダインジェクション・例題

実際に例題を解いて問題に慣れていきましょう。

Webアプリケーションが、利用者から受け取ったパラメータをそのままHTTPレスポンスヘッダに設定している。
このとき、パラメータに改行コードなどを埋め込むことで、攻撃者が任意のレスポンスヘッダやレスポンスボディを追加・改ざんできる脆弱性を何というか。(オリジナル)

ア:クロスサイトスクリプティング
イ:HTTPヘッダインジェクション
ウ:ディレクトリトラバーサル
エ:セッションフィクセーション

(ログイン後回答すると、ここに前回の正誤情報が表示されます)

問の正解を表示

問の解説を表示

HTTPヘッダインジェクションは、アプリケーションが利用者入力を適切に検証・無害化せず、そのままレスポンスヘッダに出力してしまうことによって発生する脆弱性です。

攻撃者が入力値に \r\n(CRLF)などの改行コードを含めると、下記のように本来存在しないヘッダを注入できてしまいます。

Location: /index.html\r\nSet-Cookie: SESSION=attacker

結果的に、任意のCookieの設定・キャッシュ制御の改ざん・不正なリダイレクト・レスポンスボディの改ざん(HTTPレスポンス分割)などが可能となり、XSSなどの二次被害につながる危険な攻撃です。

ア:クロスサイトスクリプティング
→HTML本文中にスクリプトを埋め込む攻撃であり、HTTPヘッダの改ざんではありません。

ウ:ディレクトリトラバーサル
→../ などを使って不正にファイルへアクセスする攻撃です。

エ:セッションフィクセーション
→攻撃者が指定したセッションIDを利用者に使わせる攻撃です。

これより、「イ」が正解です。

HTTPヘッダインジェクション・まとめ

この記事のまとめ

  1. HTTPヘッダインジェクションの概要
  2. HTTPヘッダインジェクションの流れ
  3. HTTPヘッダインジェクションの対策

今回はHTTPヘッダインジェクションについて学習しました。HTTPヘッダインジェクションはXSSなどと絡めて出題されることもあるので、あわせて確認しておきましょう。

次回はメールヘッダインジェクション攻撃について学習します。


本気で支援士を狙うなら・・・
支援士ゼミがおすすめです!
  • ベテラン講師による手厚いサポート
  • モチベーションを保てるセキュリティコラムが満載!
  • マンツーマン形式で個別相談もできる!

スポンサーリンク