Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

github логотип

GHSA-6x2q-h3cr-8j2h

Опубликовано: 24 апр. 2026
Источник: github
Github: Прошло ревью
CVSS4: 6.3
CVSS3: 3.7

Описание

Traefik: A timing side-channel vulnerability allows for valid username enumeration via BasicAuth middleware

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

For more information

If there are any questions or comments about this advisory, please open an issue.

Original Description

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:

bucketnmedianmin
existing user (wrong pw)24062.85 ms57.54 ms
nonexistent user (wrong pw)4000.48 ms0.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)

  1. basic_auth.go:49: users[slices.Collect(maps.Values(users))[0]] -- looks up a hash as a username key, returns "".
  2. basic_auth.go:119-120: calls goauth.CheckSecret(password, "").
  3. go-http-auth/basic.go:87: empty string matches no prefix, falls to default compareMD5HashAndPassword.
  4. basic.go:107-109: bytes.SplitN("", "$", 4) returns length 1, function returns instantly.

Files

  • poc/exploit.py -- black-box Python timing oracle
  • poc/basic_auth_timing_regression_test.go -- Go in-tree test
  • poc/traefik.yml + poc/dynamic.yml -- traefik config
  • poc/live_http_poc_output_head.txt -- verbatim PoC output on HEAD

Koda Reef


Пакеты

Наименование

github.com/traefik/traefik/v3

go
Затронутые версииВерсия исправления

>= 3.7.0-ea.1, < 3.7.0-rc.2

3.7.0-rc.2

Наименование

github.com/traefik/traefik/v3

go
Затронутые версииВерсия исправления

>= 3.0.0-beta1, < 3.6.14

3.6.14

Наименование

github.com/traefik/traefik/v2

go
Затронутые версииВерсия исправления

< 2.11.43

2.11.43

Наименование

github.com/traefik/traefik

go
Затронутые версииВерсия исправления

<= 1.7.34

Отсутствует

EPSS

Процентиль: 30%
0.00369
Низкий

6.3 Medium

CVSS4

3.7 Low

CVSS3

Дефекты

CWE-208

Связанные уязвимости

CVSS3: 5.3
redhat
3 месяца назад

Traefik is an HTTP reverse proxy and load balancer. Prior to versions 2.11.43, 3.6.14, and 3.7.0-rc.2, 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. This issue has been patched in versions 2.11.43, 3.6.14, and 3.7.0-rc.2.

CVSS3: 3.7
nvd
3 месяца назад

Traefik is an HTTP reverse proxy and load balancer. Prior to versions 2.11.43, 3.6.14, and 3.7.0-rc.2, 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. This issue has been patched in versions 2.11.43, 3.6.14, and 3.7.0-rc.2.

CVSS3: 3.7
debian
3 месяца назад

Traefik is an HTTP reverse proxy and load balancer. Prior to versions ...

EPSS

Процентиль: 30%
0.00369
Низкий

6.3 Medium

CVSS4

3.7 Low

CVSS3

Дефекты

CWE-208