サイバー攻撃

HTTPヘッダインジェクションとは?例や対策を解説

Written by WizLANSCOPE編集部

HTTPヘッダインジェクションとは?例や対策を解説

Webアプリケーション診断で指摘される
脆弱性TOP5を解説!

Webアプリのセキュリティ対策は万全ですか?
実際に診断でよく指摘される脆弱性TOP5を原因や対策方法も含め、分かりやすく説明します。

資料をダウンロードする


HTTPヘッダインジェクションとは、Webサイトに送られる入力に不正な文字列を注入することで、Webサーバーが返すページの内容を意図しないものに書き換えてしまう攻撃のことです。

この攻撃は、ユーザーを偽サイトにリダイレクトさせたり、サイトを改ざんしたりすることが可能です。

本記事では、HTTPヘッダインジェクションの仕組みや具体的なリスク、そして効果的な対策について詳しく解説します。

▼本記事でわかること

  • HTTPヘッダインジェクションの概要
  • HTTPヘッダインジェクションによる被害リスク
  • HTTPヘッダインジェクションへの対策

「HTTPヘッダインジェクションとはどのような攻撃か」「有効な対策は何か」などを知りたい方はぜひご一読ください。

HTTPとは?


HTTP(ハイパーテキスト・トランスファー・プロトコル)とは、WebブラウザとWebサーバーがデータやり取りするための通信規約(プロトコル)のことです。

Webページは、この通信規約に従って、ブラウザとサーバーがお互いに情報を送受信することで表示されています。

WebブラウザがHTTPを利用してWebページを表示する流れ

WebブラウザがHTTPを利用して、Webページを表示するまでの基本的な流れは以下の通りです。

  1. ユーザーが閲覧したいWebページのURLを入力、またはリンクをクリックする
  2. Webブラウザが指定されたWebサーバーにHTTPリクエストを送信する
  3. Webサーバーはリクエストを受信し、要求されたデータをHTTPレスポンスとして返す
  4. Webブラウザは受信したレスポンスデータを解析し、Webページを表示する

具体的には、ユーザーがブラウザ上でリンクをクリックすると、ブラウザはHTTPリクエストを生成し、指定されたURLのホスト(Webサーバー)に送信します。

このリクエストには、要求するリソースの情報(パスやパラメータ)やメタデータ(ヘッダー情報)が含まれます。

Webサーバーはこれを受信し、対応するHTMLデータやその他のリソースをHTTPレスポンスとして返送します。

ブラウザはレスポンスを解析し、最終的にWebページが表示されます。

Webアプリケーション診断で指摘される
脆弱性TOP5を解説!

Webアプリのセキュリティ対策は万全ですか?
実際に診断でよく指摘される脆弱性TOP5を原因や対策方法も含め、分かりやすく説明します。

資料をダウンロードする

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


HTTPヘッダインジェクションとは、WebブラウザがWebサーバーに送信するHTTPリクエストに不正な文字列を注入することで、WebサーバーからのHTTPレスポンスを改ざんする攻撃です。

攻撃者は、レスポンスヘッダに新たな項目を追加したり、レスポンスボディに任意のデータを挿入したりすることで、挙動を意図的に変更します。

Webアプリケーションにおける、入力値の不適切なサニタイズ(無害化処理)を攻撃者に悪用されることで、 HTTPヘッダインジェクションが成立します。

HTTPヘッダインジェクションが実行されると、以下のような被害が生じる可能性があります。

  • アカウントの乗っ取り
  • Webコンテンツの改ざん
  • 外部サイトへの意図しないリダイレクト

HTTPヘッダとは

HTTPヘッダとは、HTTPリクエストやHTTPレスポンスに付け加えられる補足情報のことです。

HTTP通信では、単にデータを送り返すだけでなく、各種設定やメタデータを伝達するために、このHTTPヘッダが重要な役割を担います。

HTTPリクエストとHTTPレスポンスは、それぞれ以下のような要素で構成されています。

HTTPリクエストの構成要素 ・リクエスト行 例: GET /index.html HTTP/1.1
・HTTPヘッダ(リクエストヘッダ)例: Host: www.example.com
・空白行
・メッセージボディ(リクエストボディ) 例: フォームデータやJSONデータ
HTTPレスポンスの構成要素 ・ステータス行
・HTTPヘッダ(レスポンスヘッダ)
・空白行
・メッセージボディ(レスポンスボディ)

HTTPヘッダは1行ごとに1つの情報を保持しており、各ヘッダは改行コードによって区切られています。

万一この改行コードの処理に問題があると、不正なヘッダを追加されてしまう危険性が生じます。

HTTPヘッダインジェクション攻撃による被害リスク


HTTPヘッダインジェクション攻撃を受けた場合、以下のような被害が発生する恐れがあります。

  • Cookieの任意設定
  • Webサイトの改ざん
  • 不正なURLへのリダイレクト
  • ユーザー単位のDoS攻撃

詳しく確認していきましょう。

Cookieの任意設定

Cookieとは、WebサーバーがWebブラウザに送信する情報で、ユーザー識別やセッション管理に利用されます。

HTTPヘッダインジェクション攻撃が成立すると、攻撃者がこのCookieを任意の値に置き換えられてしまう場合があります。

その結果、不正なCookieが強制的に適用され、セッションIDの固定化を通じて、セッションハイジャック攻撃が行われる危険があります。

セッションハイジャックとは、正規ユーザーのセッションIDを不正に取得し、そのユーザーになりすまして操作を行う攻撃手法です。

この中でも「セッションIDの固定化」は、攻撃者があらかじめ用意したセッションIDを正規のユーザーに利用させ、後から攻撃者がそのセッションを乗っ取る手法を指します。

セッションが乗っ取られた場合、次のような深刻な被害につながる可能性があります。

  • オンラインバンキングにおける不正送金
  • クレジットカード情報の不正利用
関連ページ

セッションハイジャックの仕組みから対策までわかりやすく解説

Webサイトの改ざん

不正なHTMLやJavaScriptコードがレスポンスボディに挿入されると、HTTPヘッダインジェクションによってWebサイト改ざんが発生する可能性があります。

この攻撃が成功すると、以下のような被害が想定されます。

  • 企業ロゴや商品情報の改ざん
  • 不適切な広告の挿入
  • マルウェア配布による訪問者のデバイス感染

中でも特に深刻なのは、正規のWebサイトを通じてマルウェアが配布されてしまうことです。

利用者は普段通りにWebサイトにアクセスしただけなのに、気づかないうちに、PCやスマホがマルウェアに感染する可能性があります。

不正なURLへのリダイレクト

HTTPヘッダインジェクション攻撃が成功すると、利用者が本来見ようとしていたページではなく、攻撃者が用意した不正なサイトにリダイレクトされてしまうことがあります。

なかでも危険なのが、正規サイトに酷似したフィッシングサイトへリダイレクトされるケースです。

見た目が正規サイトとほとんど変わらないため、ユーザーが気付かずに個人情報を入力してしまう恐れがあります。

このようなリダイレクト攻撃は、重要情報の漏洩やマルウェア感染など、深刻な被害を引き起こす可能性があります。

ユーザー単位のDoS攻撃

DoS攻撃とは、サービスを妨害したり停止させたりすることを目的としたサイバー攻撃です。

一般的には、攻撃対象のサーバーに大量のパケットを送信することで負荷をかけ、システムダウンさせる手法が知られています。

一方でHTTPヘッダインジェクションが悪用されると、Cookieを任意の値に設定できる点を悪用して、個別ユーザー単位のDoS攻撃を成立させることが可能になります。

具体的には、攻撃者がHTTPリクエスト内のCookieヘッダに、異常に大きな値を設定した場合、サーバー側はリクエスト処理に過剰な負荷がかかってしまいます。

その結果、正規ユーザーのリクエストを処理できなくなり、サービス利用が妨害されてしまいます。

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


HTTPヘッダインジェクション攻撃は、Webアプリケーションのセキュリティに深刻な影響を与える危険な攻撃手法です。

深刻な被害を防ぐためには、適切な防御策を講じ、攻撃を未然に防ぐことが重要です。

本記事では、3つの対策を紹介します。

  • ユーザー入力をHTTPレスポンスヘッダに直接含めない
  • APIを利用する
  • 外部からの改行コードを許可しない

HTTPヘッダインジェクションへの対策を詳しく見ていきましょう。

ユーザー入力をHTTPレスポンスヘッダに含めない

HTTPヘッダインジェクションを防ぐための基本的な対策として、ユーザーが入力したデータをHTTPレスポンスヘッダに直接含めないことが挙げられます。

HTTPヘッダインジェクションでは、攻撃者が、HTTPリクエスト内に改行コードなどの不正な文字列を注入し、それをレスポンスヘッダに反映させることで攻撃を成立させます。

そのため、ユーザー入力を直接ヘッダに使用しないことが効果的な対策となります。

必要に応じて適切なエンコードやバリデーションを施すことで、攻撃の発生のリスクを大きく減らすことができます。

APIを利用する

セキュアなWeb開発を実現するためには、標準的で安全性の高いAPIを活用することが推奨されます。

特に古い環境で動作しているWebサイトはHTTPヘッダインジェクション攻撃を受けやすいため、可能であれば最新の環境にアップデートすることが望まれます。

もしアップデートが難しい場合には、HTTPヘッダの出力処理に特化した安全なAPIを利用することで対策を講じることができます。

こうしたAPIは、あらかじめ決められた仕様に基づいて動作するため、予期しないリクエストを排除し、不正なデータがヘッダに混入するリスクを低減できます。

外部からの改行コードを許可しない

やむを得ずユーザー入力をHTTPレスポンスヘッダに含める必要がある場合は、CR(キャリッジリターン)やLF(ラインフィード)といった改行コードをはじめ、制御文字を許可しないよう適切に処理することが重要です。

改行コードは、不正なヘッダやレスポンスボディの生成に悪用される恐れがあるため、以下の対策を確実に講じる必要があります。

入力値のバリデーション ・ユーザー入力から改行コード(\rや\n)をはじめ、危険な制御文字を除去する
エラー処理の実装 ・改行コードを含む入力が検出された場合には、エラー画面を表示する
・または、改行以降のデータを削除するなど、安全な処理に切り替える

HTTPヘッダインジェクション対策なら「LANSCOPE プロフェッショナルサービス」の脆弱性診断

PFS ロゴ
HTTPヘッダインジェクション攻撃への対策なら、LANSCOPE プロフェッショナルサービスのWebアプリケーション脆弱性診断にお任せください。

Webアプリケーションのコードや挙動を分析し、HTTPヘッダインジェクションの原因となる以下のような問題を特定します。

  • ユーザー入力を直接HTTPレスポンスヘッダに反映している箇所
  • 不十分なサニタイズ処理やエンコードの欠如
  • 改行コード(CRLF)や制御文字の不適切な処理

国家資格を持つ弊社のセキュリティエキスパートが、問題箇所や状況を明らかにし、優先度をつけて必要な対策をお伝えします。

「Webサイトを安全に運用したい」「自社サイトのインシデントによって、業務停止や信頼損失などを起こしたくない」という開発者様・サイト運営担当者様におすすめです。

関連ページ

LANSCOPE│Webアプリケーション脆弱性診断

また、診断内容を重要項目に絞り、より低価格でWebアプリケーションの脆弱性診断を受けていただける「セキュリティ健康診断パッケージ」も提供しております。

関連ページ

低コスト・短期で診断を行う『セキュリティ健康診断パッケージ』の詳細はこちら

まとめ


本記事では、「HTTPヘッダインジェクション」をテーマに、その概要、攻撃を受けた場合の被害、および有効な対策について解説しました。

本記事のまとめ

  • HTTPヘッダインジェクションとは、HTTPリクエストに改行コードや制御文字などの不正な文字列を注入し、HTTPレスポンスを改ざんする攻撃手法
  • 想定される被害に「攻撃者による不正なCookieの設定」「サイト改ざん」「別サイトへのリダイレクト」「ユーザー単位のDoS攻撃」などが挙げられる
  • 有効な対策としては、「ユーザー入力をHTTPレスポンスヘッダに含めない」「セキュアなAPIの利用」「外部からの改行コードを許可しない」などが挙げられる

HTTPヘッダインジェクションは、Webアプリケーションに潜む重大なセキュリティ脅威の一つです。

放置すれば、ユーザーの信頼を損なうだけでなく、企業にとっても経済的損失や法的リスクにつながる恐れがあります。

この脆弱性を悪用されると、フィッシング、セッションハイジャック、サイト改ざん、マルウェア配布、DoS攻撃など深刻な被害が連鎖的に発生する可能性もあります。

こうした脆弱性に適切に対処することは、企業の信頼性を守り、ユーザーが安心して利用できるWebアプリケーションを提供するための重要なステップです。

本記事で紹介した、LANSCOPE プロフェッショナルサービスの「Webアプリケーション脆弱性診断」は、 Webアプリケーションのコードや挙動を詳細に分析し、問題箇所や状況を明らかにした上で、必要な対策を提案するサービスです。

Webアプリケーションのセキュリティ対策を強化したい企業・組織の方は、ぜひご活用ください。

Webアプリケーション診断で指摘される
脆弱性TOP5を解説!

Webアプリのセキュリティ対策は万全ですか?
実際に診断でよく指摘される脆弱性TOP5を原因や対策方法も含め、分かりやすく説明します。

資料をダウンロードする