CVE-2026-41263 — traefik
CVE-2026-41263 is a CWE-208 vulnerability in github.com/traefik/traefik/v3. A fix is available for github.com/traefik/traefik/v3 — see the affected versions and patch details below.
Traefik: BasicAuth middleware: timing side-channel vulnerability
Exploitation Status
No confirmed exploitation observed yet
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for CVE-2026-41263.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
Real-World Exposure
github.com/traefik/traefik/v3🐹github.com/traefik/traefik/v3🐹github.com/traefik/traefik/v2🐹github.com/traefik/traefikReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
Summary
There is a timing side-channel vulnerability in Traefik's BasicAuth middleware that allows an attacker to enumerate valid usernames through response-time differences.
The variable intended to hold a constant-time fallback secret always resolves to an empty string, causing the constant-time comparison to short-circuit in microseconds rather than performing a full bcrypt evaluation. This restores the original timing oracle and makes it possible to distinguish existing users from non-existing ones by measuring authentication response times.
Patches
- https://github.com/traefik/traefik/releases/tag/v2.11.43
- https://github.com/traefik/traefik/releases/tag/v3.6.14
- https://github.com/traefik/traefik/releases/tag/v3.7.0-rc.2
For more information
If there are any questions or comments about this advisory, please open an issue.
<details> <summary>Original Description</summary>BasicAuth Timing Regression: CVE-2026-32595 Fix Is a No-Op Due to Map Key/Value Confusion
TL;DR
The patch for CVE-2026-32595 is a no-op. Line 49 of basic_auth.go has a
map key/value confusion that makes notFoundSecret always "". The
"constant time" fallback calls goauth.CheckSecret(password, ""), which
fast-fails in ~1us instead of running bcrypt (~60ms).
Evidence (HEAD 786f7192e, 2026-04-09)
Black-box PoC against live traefik binary on port 28080:
| bucket | n | median | min |
|---|---|---|---|
| existing user (wrong pw) | 240 | 62.85 ms | 57.54 ms |
| nonexistent user (wrong pw) | 400 | 0.48 ms | 0.35 ms |
Median ratio: 130.4x. Classification: 8/8 correct.
Go in-tree test: goauth.CheckSecret direct ratio 12,746x.
Root cause (4-step trace)
basic_auth.go:49:users[slices.Collect(maps.Values(users))[0]]-- looks up a hash as a username key, returns"".basic_auth.go:119-120: callsgoauth.CheckSecret(password, "").go-http-auth/basic.go:87: empty string matches no prefix, falls to defaultcompareMD5HashAndPassword.basic.go:107-109:bytes.SplitN("", "$", 4)returns length 1, function returns instantly.
Files
poc/exploit.py-- black-box Python timing oraclepoc/basic_auth_timing_regression_test.go-- Go in-tree testpoc/traefik.yml+poc/dynamic.yml-- traefik configpoc/live_http_poc_output_head.txt-- verbatim PoC output on HEAD
Koda Reef
</details>Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/traefik/traefik/v3 | ≥ 3.7.0-ea.1&&< 3.7.0-rc.2 | 3.7.0-rc.2go get github.com/traefik/traefik/v3@v3.7.0-rc.2 |
| 🐹Go | github.com/traefik/traefik/v3 | ≥ 3.0.0-beta1&&< 3.6.14 | 3.6.14go get github.com/traefik/traefik/v3@v3.6.14 |
| 🐹Go | github.com/traefik/traefik/v2 | all versions | 2.11.43go get github.com/traefik/traefik/v2@v2.11.43 |
| 🐹Go | github.com/traefik/traefik | all versions | No fix |
Affected Products
traefiktraefikDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/traefik/traefik/v3, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/traefik/traefik/v3 to 3.7.0-rc.2 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2026-41263 is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
Fixing This On Your OS
If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.
To mitigate this issue, restrict network access to Traefik instances that utilize the BasicAuth middleware. Implement firewall rules or network access controls to limit connections to trusted networks or clients only. This reduces the exposure to remote attackers attempting username enumeration. Always ensure that any changes to network configurations are thoroughly tested to prevent service disruption. A service reload or restart may be required for changes to take effect.Source: Red Hat security advisory for CVE-2026-41263 (CC BY 4.0)
Frequently Asked Questions
Is CVE-2026-41263 in your dependencies?
Find it across Go, including transitive dependencies.