Fin avril 2026, l'équipe Traefik a publié coup sur coup deux CVE classées CVSS 10.0 affectant le middleware ForwardAuth — le mécanisme central d'authentification déléguée du reverse proxy. Lorsque Traefik est déployé derrière un upstream supposé de confiance, les deux failles permettent à un attaquant non authentifié de se faire passer pour un utilisateur légitime ou de spoofer le contexte de confiance, et donc d'accéder à toutes les routes protégées par ForwardAuth.
Étant donné l'omniprésence de Traefik dans les infrastructures modernes (Kubernetes, Docker Swarm, microservices, edge), ces deux CVE doivent être considérées comme prioritaires absolues pour toute équipe SRE ou DevSecOps.
Détails techniques
CVE-2026-35051 — Bypass via trustForwardHeader=false
Lorsque l'option trustForwardHeader=false est explicitement configurée dans le middleware ForwardAuth et que Traefik est déployé derrière un upstream proxy de confiance, le mécanisme de filtrage des en-têtes ne fonctionne pas comme attendu. Un attaquant peut injecter ses propres en-têtes X-Forwarded-* qui sont transmis au backend d'authentification, lui faisant croire que la requête provient d'un contexte de confiance.
- CVSS 3.1 : 10.0 (CRITICAL)
- Vecteur :
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Scope changed : la vulnérabilité dépasse le périmètre du composant, ce qui justifie le score maximal
- CWE : authentification incorrecte
CVE-2026-39858 — Bypass via en-têtes alias avec underscore
Le sanitizer d'en-têtes de Traefik ne traite que les noms canoniques (X-Forwarded-Proto, X-Forwarded-Host…) et ne normalise pas les variantes alias avec underscore (X_Forwarded_Proto, X_Forwarded_Host). Ces en-têtes alias sont transmis tels quels au backend d'authentification.
Si le backend normalise les formes underscore et tiret de façon équivalente — ce que font Apache, Nginx en mode FastCGI, et la plupart des frameworks Python/Node.js — l'attaquant peut injecter un contexte de confiance falsifié et bypasser l'authentification sur les routes protégées sans aucune information d'identification valide.
- CVSS 3.1 : 10.0 (CRITICAL)
- Même vecteur que CVE-2026-35051 :
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
Pourquoi le score est-il à 10.0 ?
Le scope S:C (Changed) indique que l'exploitation impacte un composant différent de celui contenant la vulnérabilité — ici, les services backend protégés derrière Traefik. C'est ce qui pousse le score au maximum, en plus de l'absence totale de prérequis (réseau, complexité faible, pas d'authentification, pas d'interaction utilisateur).
Produits et versions affectés
| Composant | Versions affectées | Version corrigée |
|---|---|---|
| Traefik 2.x | < 2.11.43 | 2.11.43 |
| Traefik 3.x stable | < 3.6.14 | 3.6.14 |
| Traefik 3.7 release candidate | < 3.7.0-rc.2 | 3.7.0-rc.2 |
Les deux CVE sont corrigées dans les mêmes versions.
Exploitation et impact
Conditions d'exploitation
Pour CVE-2026-35051 : trustForwardHeader=false configuré dans le middleware ForwardAuth + Traefik derrière un upstream proxy.
Pour CVE-2026-39858 : aucune condition particulière côté Traefik. Il suffit que le backend d'authentification normalise les en-têtes underscore et tiret.
Ce qu'un attaquant peut faire
- Bypasser complètement l'authentification sur toutes les routes protégées par ForwardAuth
- Accéder à des dashboards d'administration internes (Grafana, Kibana, Prometheus, Portainer…) exposés derrière Traefik
- Atteindre des APIs métier avec un faux contexte d'utilisateur authentifié
- Pivoter vers des secrets injectés par le middleware d'authentification (JWT, headers
X-User-*)
Public Exploit
À ce jour, aucun PoC public n'a été publié pour les deux CVE, mais la simplicité de l'exploitation (injection d'en-têtes HTTP) garantit que des outils comme curl ou Burp suffisent à reproduire l'attaque dès que le mécanisme est compris.
À noter : ni l'une ni l'autre n'apparaît encore dans le catalogue CISA KEV, mais Traefik étant un composant critique de nombreuses infrastructures gouvernementales et CSP, son ajout dans les semaines à venir est probable.
Détection et IOC
Logs Traefik à surveiller
# Activer le log en mode JSON et tracer les en-têtes
[accessLog]
filePath = "/var/log/traefik/access.log"
format = "json"
fields.headers.defaultMode = "keep"
Recherchez dans access.log :
- En-têtes alias avec underscore :
X_Forwarded_Proto,X_Forwarded_Host,X_Forwarded_For - Réponses 200/302 sur des routes protégées par ForwardAuth depuis des IP non préalablement authentifiées
- Volume anormal de requêtes vers
/authou les endpoints du middleware
Requête de chasse Sigma
title: Traefik ForwardAuth header smuggling
logsource:
product: traefik
service: access
detection:
selection:
request_headers|contains:
- 'X_Forwarded_Proto'
- 'X_Forwarded_Host'
- 'X_Forwarded_For'
condition: selection
level: high
Indicateurs réseau
- Requêtes HTTP avec en-têtes underscore en provenance d'IP externes (non upstream connus)
- Trafic anormal vers les services backend habituellement protégés (dashboards admin, APIs internes)
Mitigation et patch
Action immédiate : patcher
# Docker
docker pull traefik:v2.11.43
docker pull traefik:v3.6.14
# Helm chart Kubernetes
helm upgrade traefik traefik/traefik \
--version <chart-version-correspondante> \
--set image.tag=v3.6.14
Workaround temporaire (si patch impossible immédiatement)
À l'edge ou sur l'upstream proxy (Nginx, Apache, HAProxy) devant Traefik, supprimez systématiquement tous les en-têtes alias underscore avant qu'ils n'atteignent Traefik :
# Nginx
proxy_set_header X_Forwarded_For "";
proxy_set_header X_Forwarded_Host "";
proxy_set_header X_Forwarded_Proto "";
underscores_in_headers off;
# Apache
RequestHeader unset X_Forwarded_For
RequestHeader unset X_Forwarded_Host
RequestHeader unset X_Forwarded_Proto
Hardening durable
- Activez
trustForwardHeader=trueuniquement si votre architecture inclut un upstream proxy maîtrisé qui définit les en-têtes - Côté backend d'authentification, rejetez explicitement les requêtes contenant des en-têtes underscore plutôt que de les normaliser
- Mettez en place une liste blanche d'IPs upstream au niveau du middleware ForwardAuth (option
trustedIPs)
Pourquoi surveiller en continu ces vulnérabilités
Traefik est utilisé par des milliers d'organisations comme point d'entrée critique. Un patch publié n'est efficace que s'il est déployé — or l'expérience montre qu'une part significative du parc reste sur des versions vulnérables plusieurs mois après la divulgation. Une surveillance automatisée de votre inventaire Traefik vous permet d'être alerté dès qu'une nouvelle CVE concerne votre version exacte, sans dépendre de la veille manuelle.
Avec cveo.tech, enregistrez vos instances Traefik dans votre parc et recevez un email automatique dès qu'une CVE de score CVSS ≥ 9.0 affecte une de vos versions déployées — pour ne plus jamais découvrir une faille critique deux semaines après les attaquants.