{"id":"CVE-2026-88010","kind":"vulnerability","aliases":["CVE-2026-88010","GHSA-8fcf-v89g-xpg6","GO-2026-6558"],"related":[],"title":"Traefik: BasicAuth singleflight coalescing reintroduces an unauthenticated username-enumeration timing oracle","description":"Traefik is an open source HTTP reverse proxy and load balancer. From 3.6.11 until 3.7.13, checkPassword in pkg/middlewares/auth/basic_auth.go constructs the BasicAuth singleflight key from the submitted password and stored secret. Concurrent requests for absent usernames therefore coalesce on one key while configured usernames perform separate password hashes, creating an unauthenticated timing discrepancy that reveals whether a username exists. Sequential checks remain cost-equalized, Traefik v2 and Digest authentication are not affected, and the issue does not disclose credentials or bypass authentication. This issue is fixed in version 3.7.13.","summary":"Traefik's BasicAuth middleware leaks whether a username exists through response timing when many requests run concurrently. An attacker can list valid usernames but cannot read passwords or bypass login.","severity":"medium","cvss":6.3,"epss":0.00691,"exploited":false,"exploited_at":null,"products":[{"name":"github.com/traefik/traefik","fixed":[],"affected":"all versions","ecosystem":"go"}],"ecosystems":["go"],"tags":["basic-auth","package","self-hosted","traefik"],"not_affected_if":["digest-auth","no-basicauth-middleware","traefik-v2"],"how_to_check":"Check the Traefik version with 'traefik version'; affected if it is 3.6.11 through 3.7.12 (Traefik v2 and Digest auth are not affected).\nLook for basicAuth middleware in the Traefik dynamic configuration or labels.","fix":"Upgrade Traefik to 3.7.13 or later.","status":"open","published_at":"2026-09-22T16:18:06+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","triaged_at":"2026-10-23T21:46:08+00:00","updated_at":"2026-10-23T21:46:08+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-23T21:46:08Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade Traefik to 3.7.13 or later.\nunknown","reach":"internet","impact":"low","summary":"Traefik's BasicAuth middleware leaks whether a username exists through response timing when many requests run concurrently. An attacker can list valid usernames but cannot read passwords or bypass login.","category":"package","who_cares":["traefik","self-hosted","basic-auth"],"confidence":0.8,"needs_auth":"no","worst_case":"Attacker learns which usernames exist via timing; no credentials exposed.","analyst_note":"","how_to_check":"Check the Traefik version with 'traefik version'; affected if it is 3.6.11 through 3.7.12 (Traefik v2 and Digest auth are not affected).\nLook for basicAuth middleware in the Traefik dynamic configuration or labels.\nunknown","needs_analyst":false,"not_affected_if":["traefik-v2","digest-auth","no-basicauth-middleware"],"user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000493,"input_tokens":3041,"output_tokens":377,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,22A,25A '-6558':23A '-88010':15A,26A '/traefik/traefik':29A '3.6.11':80C '3.7.13':82C,156C '8fcf':18A 'absent':101C 'affect':139C 'attack':56B 'auth':32B 'authent':136C,149C 'balanc':78C 'basic':31B 'basic-auth':30B 'basicauth':2A,40B,88C 'bypass':66B,148C 'cannot':62B 'check':127C 'checkpassword':83C 'coalesc':4A,104C 'concurr':54B,98C 'configur':109C 'construct':86C 'cost':130C 'cost-equ':129C 'creat':115C 'credenti':146C 'cve':13A,24A 'digest':135C 'disclos':145C 'discrep':119C 'enumer':10A 'equal':131C 'exist':46B,125C 'fix':153C 'ghsa':17A 'ghsa-8fcf-v89g-xpg6':16A 'github.com':28A 'github.com/traefik/traefik':27A 'go':21A 'hash':114C 'host':36B 'http':73C 'issu':142C,151C 'key':90C,107C 'leak':42B 'list':58B 'load':77C 'login':67B 'mani':51B 'middlewar':41B 'one':106C 'open':71C 'oracl':12A 'packag':33B 'password':64B,94C,113C 'perform':111C 'pkg/middlewares/auth/basic_auth.go':85C 'proxi':75C 'read':63B 'reintroduc':5A 'remain':128C 'request':52B,99C 'respons':48B 'reveal':121C 'revers':74C 'run':53B 'secret':97C 'self':35B 'self-host':34B 'separ':112C 'sequenti':126C 'singleflight':3A,89C 'sourc':72C 'store':96C 'submit':93C 'therefor':103C 'time':11A,49B,118C 'traefik':1A,37B,38B,68C,132C 'unauthent':7A,117C 'usernam':9A,45B,60B,102C,110C,124C 'username-enumer':8A 'v2':133C 'v89g':19A 'valid':59B 'version':155C 'whether':43B,122C 'xpg6':20A","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-22T16:18:06+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"govuln","external_id":"GO-2026-6558","url":"https://pkg.go.dev/vuln/GO-2026-6558","severity":null,"published_at":"2026-10-01T20:23:38+00:00","modified_at":"2026-10-01T20:23:38+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","fetched_at":"2026-10-23T19:13:08+00:00","note":null},{"source":"epss","external_id":"CVE-2026-88010","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-88010","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-23T19:13:43+00:00","fetched_at":"2026-10-23T19:13:43+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-88010","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-88010","severity":null,"published_at":"2026-09-22T16:18:06+00:00","modified_at":"2026-09-24T21:22:19+00:00","first_seen_at":"2026-10-23T19:35:23+00:00","fetched_at":"2026-10-23T19:35:23+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}