ここではHTTPヘッダインジェクションが発生する仕組みについて解説。どのような脆弱性により攻撃を受けてしまうのか、発生理由や対策する際のポイントなどをまとめました。
Webアプリケーションの脆弱性を利用した攻撃手法の一つです。クライアントから送信される値を適切に処理することなく、HTTPレスポンスヘッダに新たなヘッダ要素を追加されることでサーバーレスポンスを改ざんします。HTTPヘッダインジェクション自体で被害を発生させなくても、さまざまなサーバー攻撃の糸口となる可能性があります。
HTTP ヘッダインジェクションにより任意のレスポンスボディを追加されると、ブラウザに偽の情報を表示したり悪意のあるスクリプトを埋め込まれる可能性があります。フィッシングサイトに誘導されたり、任意のCookieが生成によりセッションIDを固定し、セッションの乗っ取りや、なりすましを許してしまいます。
HTTPヘッダインジェクション攻撃は、任意の文字列を生成して不正な動作を引き起こす攻撃です。任意の文字列を生成させるということは、Webページの改ざんができてしまいます。偽の情報を表示させたり、社会通念上不適切な情報を掲載させたりなどの攻撃を受ける可能性があります。また、マルウェアに感染させられるトラブルも考えられる被害です。Webページが改ざんされると、信用を失い利用者が離れてしまいます。マルウェアに感染すると、自社のサーバーが攻撃に加担することになりかねません。深刻な被害になるでしょう。
HTTPヘッダインジェクション攻撃は、Cookieを任意の値にされる可能性もある攻撃です。Cookieを任意の値にしてセッション固定攻撃を実行されるとセッションハイジャックというユーザーのセッションを乗っ取りユーザーに成りすまして通信を行う攻撃を仕掛けられる可能性も生じます。セッションが乗っ取られると、パスワードなどの情報が盗み取られて、不正アクセスや情報改ざんといった悪事を行う可能性が高いです。また、不正利用による金銭被害も生じかねません。
ユーザーが検索すると、遷移先の候補がいくつか表示され、情報がありそうなページをクリックしてリンク先に移動します。日常的に行っている行動ですが、HTTPヘッダインジェクション攻撃によって、このリンク先を本来得たかった情報とは別のページに転送やリダイレクトするといったことが起こる可能性があります。リダイレクトした先のページを本物のページに似せると、本来のページと異なるページに遷移したことに気づかず、詐欺などの被害が生じかねません。
HTTPヘッダインジェクション攻撃では、サーバーに負荷をかけ、処理落ちさせる攻撃であるDoS攻撃を受ける可能性も少なくありません。Webサービスを稼働しているサーバやネットワークに過剰な負担をかけると、快適な利用ができず、利用者離れにつながります。つまり、サービス妨害をする攻撃です。過剰な負荷をかけるだけではなく、脆弱性をつく攻撃もHTTPヘッダインジェクション攻撃によって成立してしまいます。
HTTPヘッダインジェクションによる直接的な被害についての報道や報告などは見つかりませんでした。但し、HTTPヘッダインジェクションの脆弱性が見つかり、脆弱性データベースであるJVNで注意喚起されることはあります。
ウェブログシステム・PebbleにおいてHTTP ヘッダインジェクションの脆弱性がIPAに報告され、ウェブブラウザ上で偽の情報が表示されたり、任意のスクリプトが実行される可能性があることからJPCERT/CCが開発者と調整を行いました。
トランスウエア提供のウェブメール「Active! mail 6」にHTTP ヘッダインジェクションの脆弱性が存在。HTTPレスポンス分割攻撃を受ける可能性があったため、JPCERT/CC が開発者との調整を実施しました。対策として最新版へアップデートするよう注意喚起しました。
HTTPヘッダインジェクションはユーザー入力値に改行コードが含まれ、適切に処理されないことによって発生します。そのためユーザーの入力データをサーバーのレスポンスヘッダに含めないといった対策が行う必要があります。
こうした対策が行われていないと被害が発生する原因となりますので、どうしてもレスポンスヘッダに含まなければならない場合には、改行コードなどの制御文字をチェックし、受け入れないような処理を行うことが重要です。
HTTPリクエストのパラメータ等の入力値に改行コードを含めて、HTTPレスポンスヘッダのフィールド値(Locationヘッダ、Set-Cookieヘッダ等)に直接渡されてしまわないかを確認します。反映される内容によって、レスポンスヘッダの改ざんやレスポンスボディの改ざん等、影響内容が変わるため、脆弱性診断員によるきめ細かな確認が必要です。
HTTP レスポンスヘッダの出力を直接行わず、ウェブアプリケーションの実行環境や言語に用意されているヘッダ出力用APIを使用します。ヘッダ出力用APIを利用できない場合は、改行を許可しないよう、開発者自身で適切な処理を実装します。
脆弱性診断(セキュリティ診断)とは?
目的や必要性について詳しく見る
HTTPヘッダインジェクション攻撃は、改行コードがフックとなって起こる攻撃です。そもそも改行コードを入れられなければ攻撃が成立しません。ユーザ⼊⼒値をレスポンスヘッダに含めないことで根本的な防御はできますが、どうしても含める必要がある場合は、改行コードを出力しないようにしましょう。そして外部からの入力すべて、改行コードを削除することをおすすめします。制御コードのすべてを削除するのもいいでしょう。
本サイトの監修者であるアルファネットではHTTPヘッダインジェクションなどのサイバー攻のリスクからシステムを守るアドバイスや社員教育も行っています。システムの脆弱性の有無を明らかにしたい場合は相談してみるとよいでしょう。
当ページの監修協力であるホワイトハッカーが所属する株式会社アルファネット。事務機器用品を中心とするカタログ通販サービス「たのめーる」が有名な大塚商会のグループ企業です。
大塚商会はコンピュータ・ネットワーク関連のシステムインテグレーション事業や、コンピュータ機器の保守、アウトソーシングのサービスも中核にしており、その中でアルファネットはサイバーセキュリティ対策の専門グループ企業として活躍しています。
巨大なデータベース・ネットワークを日々守り続けているのは、ホワイトハッカーの主導による正確な診断と、ツールによる包括的な診断によるもの。大塚商会のグループ企業や顧客を中心に、そのサービスを提供してきました。
またメール訓練など、社員育成の提供にも力を入れています。
ペネトレーションテスト(Webアプリケーション侵入試験)/標的型メール訓練サービス/情報セキュリティ教育/CSIRT構築/クラウド型WAFサービス/セキュリティ診断サービス/ランサムウェア対策調査サービス
偽の情報を表示させられる
任意のレスポンスボディを注入された場合、利用者のブラウザ上で偽の情報を表示させられたり、任意のスクリプトを埋め込まれたりする可能性があります。Set-Cookieヘッダを注入された場合、任意のCookie が発行され、利用者のブラウザに保存される可能性があります。