X-Forwarded-Forの偽装とは リバースプロキシの裏で送信元のIPアドレスを書き換えられる仕組み
X-Forwarded-Forは、通信を中継したサーバーが、元の利用者のIPアドレスを書き添えるための欄です。 この欄は、利用者の側でも自由に書けます。 そのため、この欄を信じて送信元を決めるサイトでは、IPアドレスを偽られます。
| 用語(英語/日本語) | 何の略か | 何が問題か | CWE |
|---|---|---|---|
| X-Forwarded-For | 略語ではない(HTTPのヘッダの名前) | 利用者が中身を書き換えられる | CWE-348 |
| リバースプロキシ(Reverse Proxy) | 略語ではない | 送信元がすべて中継のサーバーに見える | なし |
| IP偽装(IP Spoofing) | 略語ではない | IPアドレスによる制限をすり抜けられる | CWE-290 |
IPアドレスとは、インターネットにつながる機器ごとの番号です。 HTTPのヘッダとは、ブラウザとサーバーが本文の前にやり取りする、付け札のような情報です。
X-Forwarded-For
- 何の略か 略語ではありません。HTTPのヘッダの名前です。
- 日本語では 「X-Forwarded-For」と書きます。「XFF」と略すこともあります。
- 一言の定義 中継のサーバーが、元の利用者のIPアドレスを書き添えるためのHTTPのヘッダです。
- どんなリスクがあるか 利用者は、最初から好きな値をこの欄に入れて送れます。サイトがこの欄の値を送信元として信じると、管理画面のIPアドレスの制限や、ログインの失敗回数の制限をすり抜けられます。記録に残る送信元も、偽の値になります。
- 影響を受ける運用 管理画面を「会社のIPアドレスからだけ開ける」設定で守っていて、その判定にこの欄を使っているサイトです。
- 実際の事例 確認できませんでした。
- 分類番号 CWE-348(信頼の低い情報源の使用)です。OWASP Top 10:2025 では A01:2025(アクセス制御の不備)にあたります。
リバースプロキシ(Reverse Proxy)
- 何の略か 略語ではありません。
- 日本語では 「リバースプロキシ」と書きます。「逆向きの代理サーバー」という意味です。
- 一言の定義 利用者とWebサイトの本体の間に立ち、通信を受け取って本体へ渡すサーバーです。CDNやWAFも、この形で動くことが多くあります。
- どんなリスクがあるか 本体から見ると、すべての通信がリバースプロキシから来たように見えます。本当の送信元を知るためにX-Forwarded-Forを読むとき、どの中継のサーバーの値を信じるかを決めていないと、偽の値を使ってしまいます。
- 影響を受ける運用 CDNやWAFを後から入れたのに、本体の側の設定を見直していないサイトです。
- 実際の事例 確認できませんでした。
- 分類番号 リバースプロキシそのものは欠陥ではありません。信じる中継のサーバーを決めていない設定は、OWASP Top 10:2025 の A02:2025(セキュリティ設定の不備)にあたります。
IP偽装(IP Spoofing)
- 何の略か 略語ではありません。
- 日本語では 「IP偽装」「IPスプーフィング」と書きます。
- 一言の定義 送信元のIPアドレスを、別のものに見せかけることです。
- どんなリスクがあるか IPアドレスで利用者を見分けている仕組みは、偽装で破られます。Webサイトでは、X-Forwarded-Forの欄を書き換えるだけで偽装できる場合があります。
- 影響を受ける運用 IPアドレスの制限だけで、管理画面や社内向けのページを守っているサイトです。
- 実際の事例 確認できませんでした。
- 分類番号 CWE-290(なりすましによる認証の回避)です。OWASP Top 10:2025 では A07:2025(認証の失敗)にあたります。
自分のサイトで確かめる方法
確かめるのは、自分が管理するサイトだけにします。
- サーバーやアプリの設定で、送信元のIPアドレスをどこから読んでいるかを確かめます。
- nginx なら
set_real_ip_fromとreal_ip_headerの設定を見ます。 set_real_ip_fromに、自社が使うCDNやWAFのアドレスだけが書かれているかを確かめます。
プロンプト駅の「サーバー設定の点検」に、設定ファイルを貼ると、信じる中継のサーバーの決め方をAIに点検させる文を作れます。
直し方の要点
- X-Forwarded-Forの値は、自社が使う中継のサーバーから届いたときだけ使います。
- nginx では、
set_real_ip_fromに中継のサーバーのアドレスを書き、real_ip_recursive on;を使います。 - 管理画面は、IPアドレスの制限だけで守らず、パスワードと2段階の認証も使います。
出典
- MITRE「CWE-348 Use of Less Trusted Source」 https://cwe.mitre.org/data/definitions/348.html
- nginx「Module ngx_http_realip_module」 https://nginx.org/en/docs/http/ngx_http_realip_module.html
- MDN「X-Forwarded-For」 https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-For
関連するページ
- Webセキュリティ用語辞典の索引
- WAF・IDS・IPS
- Webサイトセキュリティ診断では、送信元の扱いを外から点検し、修正方法を添えて報告します。
下記フォームより直接ご相談・お問い合わせいただけます。
内容を確認のうえ、担当より折り返しご連絡いたします。