Traefik 3.7.6 corrige trois CVE, dont un bypass ForwardAuth CVSS 9.1
Traefik 3.7.6 et 2.11.51 (30 juin) corrigent CVE-2026-54763 — spoofing d'identité ForwardAuth via headers underscore, CVSS 9.1. CERT-FR a publié l'avis AVI-0823 le 1er juillet.
Le CERT-FR a publié le 1er juillet 2026 l'avis CERTFR-2026-AVI-0823 sur Traefik, qui répercute les releases 3.7.6, 3.6.22 et 2.11.51 publiées par Traefik Labs le 30 juin. Trois CVE au total ; la plus sévère — CVE-2026-54763 — remonte à CVSS 9.1 sur son vecteur ForwardAuth authResponseHeaders, sans besoin d'authentification préalable. C'est un patch qui répare un patch : l'éditeur qualifie explicitement le correctif d'"incomplete fix for CVE-2026-33433 + CVE-2026-39858".
Les trois CVE
D'après les Security Advisories publiés par le projet Traefik :
- CVE-2026-54763 — headerField underscore-variant identity spoofing in BasicAuth / DigestAuth / ForwardAuth (GHSA-x677-9fxg-v5c5). CVSS 7.5 en variante BasicAuth/DigestAuth, 9.1 en variante ForwardAuth
authResponseHeaders. Le correctif précédent (CVE-2026-33433) supprimait les en-têtes d'identité fournis par l'attaquant avecHeader.Del(), mais "did not account for underscore-variant header names (e.g.X_Auth_User), which many backends normalize identically to the dashed form." Résultat : un attaquant injecte des en-têtes en variante underscore qui survivent au filtrage de Traefik et atteignent le backend à côté de la valeur authentifiée par Traefik. Dans le cas ForwardAuthauthResponseHeaders, "the attacker does NOT need credentials". Le correctif introduit l'optionallowHeadersWithUnderscores: falseau niveau entryPoint. Reporter : Matteo Panzeri. - CVE-2026-54764 — ForwardAuth middleware leaks X-Forwarded-Port spoofing via untrusted X-Forwarded-Proto when trustForwardHeader=false (GHSA-3q9r-p662-5j8m). CVSS 6.9. Même avec
trustForwardHeader: false, le middleware dérive leX-Forwarded-Portenvoyé au service d'authentification à partir duX-Forwarded-Protoattaquant-contrôlé de la requête entrante. Un attaquant non authentifié peut "bypass port-based security checks (e.g., 'only allow requests arriving on HTTPS port 443') by injecting a single X-Forwarded-Proto: https header on a plain HTTP connection." Fix incomplet de GHSA-6384-m2mw-rf54 — le vecteur X-Forwarded-Proto/Prefix avait été traité, X-Forwarded-Port avait été manqué. CWE-345. - CVE-2026-54765 — Gateway HTTPRoute backendRef filters can leak backend context across routes sharing a Service:port (GHSA-6p8f-p8j2-rqmv). CVSS 3.1, uniquement branche 3.7.x (≥ 3.7.0). Dans le provider Kubernetes Gateway API, lorsque plusieurs HTTPRoute acceptées visent le même Service:port avec des
backendReffilters différents, "Traefik may resolve both routes to the same child service and apply only one route's filter set to all requests reaching that backend." Cause racine :loadServiceconstruit le nom de service dynamique à partir denamespace + Service nameseulement, sans inclure l'identité de la route, du listener, de la règle, ni du filtre.
Statut d'exploitation
Pas de PoC public référencé, pas d'exploitation en conditions réelles documentée par Traefik Labs ni par le CERT-FR au moment de la publication. Aucune de ces CVE n'est ajoutée au catalogue CISA KEV. Le risque réel est ailleurs : CVE-2026-54763 est un bypass d'identité non authentifié dans un middleware d'authentification, et le pattern underscore vs dash est archi-connu (voir la famille de CVE Node.js/Express des années 2020). N'importe quel attaquant capable de lire l'avis GHSA peut reconstruire la charge utile en dix minutes ; l'EPSS n'a pas encore intégré ce délai.
Le sous-ensemble exposé est spécifique : Traefik en front d'un backend qui ré-utilise un en-tête d'identité placé par un middleware d'auth (BasicAuth headerField, DigestAuth headerField, ForwardAuth authResponseHeaders, ou snippet ingress-nginx authResponseHeaders). Si votre backend lit X-Auth-User mais accepte aussi X_Auth_User, vous êtes concerné. Beaucoup de frameworks web font cette normalisation par défaut — Node.js http, Go net/http, PHP $_SERVER['HTTP_*'].
Que faire
- Mettre à jour vers Traefik 3.7.6 sur la branche 3.7, 3.6.22 sur la branche 3.6 LTS, ou 2.11.51 sur la branche 2.11 maintenue. Les images officielles
docker.io/traefik:3.7.6ettraefik:2.11.51sont disponibles depuis le 30 juin ; les notes de release GitHub documentent le migration guide côté 3.7. - Activer explicitement
allowHeadersWithUnderscores: falsesur les entryPoints qui portent des middlewares d'auth. C'est la porte que CVE-2026-54763 ouvre — la fermer manuellement neutralise la variante underscore même si vous n'avez pas encore basculé sur la version corrigée. - Auditer vos backends pour la normalisation dash/underscore. Un simple
curl -H "X_Auth_User: admin"sur un endpoint protégé par ForwardAuth suffit à tester. Si le backend voitadmin, votre stack est vulnérable au bypass — indépendamment de la version de Traefik. - Si vous êtes derrière ForwardAuth avec
trustForwardHeader: falseet que votre logique d'autorisation utiliseX-Forwarded-Port, considérer ce contrôle comme contourné jusqu'à la mise à jour. CVE-2026-54764 en fait un soft check trivialement contournable viaX-Forwarded-Proto: httpsen clair. - Sur les clusters Kubernetes utilisant Gateway API, réviser les HTTPRoute qui partagent un Service:port avec des
backendReffilters divergents (typiquement des politiques par-tenant ou par-namespace). CVE-2026-54765 mélange les filter sets entre routes ; c'est CVSS 3.1 mais peut transporter des en-têtes d'identité tenant.
Contexte
Traefik est un projet français (Traefik Labs, ex-Containous, Lyon), très déployé dans l'écosystème DevOps français — ingress Kubernetes, front d'API, load balancer edge. L'avis CERTFR-2026-AVI-0823 est donc à traiter comme une alerte native dans le périmètre NIS2 des opérateurs qui exposent des applications via Traefik en production.
Le vrai motif de cette vague : les correctifs de bypass d'en-tête HTTP sont récurrents parce que la normalisation d'en-tête est un contrat implicite entre le proxy et le backend. Chaque Header.Del() posé côté proxy suppose que le backend voit la même chaîne canonique — et ce n'est pas garanti. CVE-2026-54763 est le troisième round sur ce même chemin (CVE-2026-33433, CVE-2026-39858 en juin, celle-ci en juillet). La quatrième round arrivera si un chercheur trouve une autre variante que Traefik ne normalise pas encore — points, tirets bas doublés, encodage MIME, etc. Pour les équipes qui gèrent l'ingress d'un cluster multi-tenants, la parade durable n'est pas "filtrer côté proxy" mais "toujours re-vérifier l'identité côté backend" : traiter tout en-tête d'identité comme non-fiable jusqu'à validation par le service métier.