Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-72815-poc — Local Go PoC demonstrating CVE-2026-72815, an X-Forwarded-For IP spoofing flaw in go-chi/chi middleware.RealIP that bypasses IP-based ACLs, with a v5.3.0 fixed comparison. | Kitploit
ツール/GitHubGitHub/saku0512/cve-2026-72815-poc
Defensive ToolsVulnerability AnalysisCode AnalysisExploitationWeb SecurityAuthenticationPapers & ResearchLearning & Education
GitHubsaku0512/cve-2026-72815-poc

CVE-2026-72815-poc

Local Go PoC demonstrating CVE-2026-72815, an X-Forwarded-For IP spoofing flaw in go-chi/chi middleware.RealIP that bypasses IP-based ACLs, with a v5.3.0 fixed comparison.

リポジトリを見る
22時間51分前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-72815: go-chi/chi middleware.RealIP IP Spoofing PoC

English version

概要

このリポジトリは、go-chi/chi の middleware.RealIP に存在する IP spoofing 脆弱性 CVE-2026-72815(GHSA-3fxj-6jh8-hvhx)のローカル Proof of Concept (PoC) です。

脆弱な RealIP middleware は X-Forwarded-For の最初(左端)の値を無条件に信頼し、その値で http.Request.RemoteAddr を上書きします。クライアントが X-Forwarded-For を指定できる構成では、攻撃者が任意の IP アドレスを送信元として偽装し、IP ベースの ACL、rate limit、監査ログなどを回避・汚染できる可能性があります。

この PoC は httptest のみを使用し、外部ホストへの通信を行いません。

免責事項

教育目的および許可されたセキュリティ検証にのみ使用してください。第三者の環境に対して無断で使用しないでください。

脆弱性の詳細

  • CVE ID: CVE-2026-72815
  • GitHub Advisory: GHSA-3fxj-6jh8-hvhx
  • 製品: github.com/go-chi/chi/v5
  • 脆弱な API: middleware.RealIP
  • 種別: Authentication Bypass by Spoofing (CWE-290)
  • CVSS v4.0: 6.9 (Moderate)
  • CVE レコード上の影響バージョン: >= 5.2.1, < 5.3.0
  • 修正版: 5.3.0

根本原因

middleware.RealIP は X-Forwarded-For が存在すると、カンマ区切りの最初の値を取得して RemoteAddr に設定します。

概念的には次の処理です。

root@kitploit:~
if xff := r.Header.Get("X-Forwarded-For"); xff != "" {
    ip, _, _ = strings.Cut(xff, ",")
}

r.RemoteAddr = ip

通常、reverse proxy は既存の X-Forwarded-For の末尾へ実際の送信元 IP を追加します。そのため攻撃者が次のような値を事前に指定できる場合、左端は信頼できません。

root@kitploit:~
X-Forwarded-For: 127.0.0.1, 203.0.113.50

脆弱な RealIP は 127.0.0.1 をクライアント IP として採用します。

PoC

必要環境

  • Go 1.23 以降(v5.2.1 の vulnerable case 単体は Go 1.20 以降)
  • 初回の module download に必要なネットワーク接続

1. 脆弱版 v5.2.1 の再現

root@kitploit:~
cd vulnerable
GOWORK=off go run .

PoC は、実際のクライアントを 203.0.113.50、管理者として許可される IP を 127.0.0.1 と仮定します。

通常リクエストは HTTP 403 になりますが、次のヘッダーを付けたリクエストでは RealIP が RemoteAddr を 127.0.0.1 に書き換え、HTTP 200 になります。

root@kitploit:~
X-Forwarded-For: 127.0.0.1, 203.0.113.50

期待される主要出力:

root@kitploit:~
=== CVE-2026-72815 vulnerable case ===
[*] go-chi/chi version: v5.2.1
[*] normal request status: 403
[*] spoofed request status: 200
[!] VULNERABLE: attacker-controlled X-Forwarded-For bypassed the IP ACL.

2. v5.3.0 の安全な API を使用した場合

root@kitploit:~
cd fixed
GOWORK=off go run .

v5.3.0 では RealIP の代替として ClientIPFromHeader、ClientIPFromXFF、ClientIPFromXFFTrustedProxies、ClientIPFromRemoteAddr が追加されています。

この PoC の fixed case は「サーバーの直前に信頼済み proxy が1台あり、その proxy が実クライアント IP を XFF の末尾に追加する」構成を想定して ClientIPFromXFF() を使用します。同じ偽装ヘッダーを送っても右端の 203.0.113.50 が採用されるため ACL を突破できません。

期待される主要出力:

root@kitploit:~
=== CVE-2026-72815 safe replacement case ===
[*] go-chi/chi version: v5.3.0
[*] normal request status: 403
[*] spoofed request status: 403
[+] SAFE: the spoofed leftmost X-Forwarded-For value did not bypass the IP ACL.

3. 両方をまとめて確認

root@kitploit:~
bash scripts/run-version-matrix.sh

v5.3.0 に関する注意

v5.3.0 でも、後方互換性のため 旧 middleware.RealIP の挙動自体は残されています。RealIP には deprecated の注記が追加され、安全な ClientIPFrom* API への移行が推奨されています。

したがって、単に dependency を v5.3.0 に更新しただけで middleware.RealIP を使い続けるのではなく、実際の network / reverse proxy 構成に合った ClientIPFrom* middleware へ移行する必要があります。

PoC の範囲

このリポジトリは以下のみを検証します。

  1. middleware.RealIP が攻撃者制御の左端 XFF 値を RemoteAddr に反映すること
  2. その結果、単純な IP ベース ACL を回避できること
  3. v5.3.0 の ClientIPFromXFF() を適切な proxy 構成で使用すると同じ入力を拒否できること

実ネットワークへのスキャン、第三者サービスへのリクエスト、DoS、永続化などは行いません。

対策

  • go-chi/chi を v5.3.0 以降へ更新する
  • middleware.RealIP から、実際のインフラに合った ClientIPFrom* middleware へ移行する
  • reverse proxy 側でも、クライアントが送信した forwarding header を適切に上書き・除去する
  • IP アドレスだけを重要な認証・認可の根拠にしない

参考資料

  • CVE-2026-72815
  • GHSA-3fxj-6jh8-hvhx
  • go-chi/chi PR #967: middleware.ClientIP
  • go-chi/chi v5.3.0
ツールをダウンロード