CVE-2026-111497 a été publiée par NVD le 22 octobre 2026. Cinq jours plus tard, le 27 octobre, la CISA l'a ajoutée à son catalogue KEV, avec une échéance au 10 novembre.
Ce n'est pas une faille dans un produit, mais dans une bibliothèque de compression : le décodeur Brotli de Google. Brotli sert à décompresser du contenu HTTP (Content-Encoding: br), des polices WOFF2, des archives, des colonnes de bases analytiques. Il est embarqué dans Node.js, .NET, Envoy, Bun, ClickHouse, DuckDB, Apache Arrow… La configuration NVD liste à elle seule une quinzaine de produits.
Autrement dit : la question n'est pas « est-ce que j'utilise Brotli ? », mais « où est-il embarqué chez moi ? ».
La vulnérabilité
| Champ | Valeur |
|---|---|
| CVE | CVE-2026-111497 |
| CVSS 3.1 (NVD) | 9.8 (CRITICAL) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CVSS 4.0 (Google) | 9.2 (CRITICAL) — AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
| Type | Valeur de retour non vérifiée (CWE-252), écriture hors limites (CWE-787) |
| Composant | Décodeur Brotli (c/dec/decode.c) |
| Statut NVD | Analyzed |
| Publication NVD | 2026-10-22 |
| Ajout CISA KEV | 2026-10-27 |
| Échéance CISA | 2026-11-10 |
Description NVD (extrait) :
A buffer overflow vulnerability in the Brotli decoder (c/dec/decode.c) in Google Brotli versions 1.0.3 through 1.2.0 on all platforms allows a remote unauthenticated attacker to corrupt adjacent decoder state memory […]
Ce que permet un flux Brotli piégé
Selon NVD, un attaquant distant et non authentifié qui fait décoder un flux Brotli spécialement construit peut :
- corrompre la mémoire de l'état du décodeur ;
- lire des contenus mémoire sensibles ;
- provoquer un déni de service ;
- potentiellement exécuter du code arbitraire.
La fiche KEV précise la cause : une valeur de retour non vérifiée dans le décodeur. Le code continue comme si une opération avait réussi, et écrit ensuite hors du tampon prévu.
Pourquoi la surface est aussi large
Un décodeur de compression traite par nature des données venues de l'extérieur : le corps d'une requête HTTP compressée, une réponse d'un serveur amont, un fichier téléversé, une police web. Tout service qui décompresse du Brotli reçu d'un tiers expose ce code, souvent sans que l'équipe qui l'exploite le sache.
C'est ce qui explique l'écart entre les deux scores : NVD retient le pire cas (9.8), Google ajoute AT:P (des conditions préalables à l'attaque) et arrive à 9.2. Les deux restent CRITICAL.
Versions affectées
Brotli lui-même
| Branche | Versions affectées (NVD) | Première version hors plage |
|---|---|---|
| 1.0 | 1.0.3 et suivantes, avant 1.0.10 | 1.0.10 |
| 1.1 | 1.1.0, avant 1.1.1 | 1.1.1 |
| 1.2 | 1.2.0, avant 1.2.1 | 1.2.1 |
La description NVD le dit explicitement : mettre à jour toute bibliothèque ou binaire Brotli entre 1.0.3 et 1.2.0 vers 1.0.10, 1.1.1 ou 1.2.1.
Produits qui l'embarquent (configuration NVD)
| Produit | Versions affectées (NVD) |
|---|---|
| Node.js | antérieures à 22.23.4 ; 23.0.0 et suivantes avant 24.22.1 ; 25.0.0 et suivantes avant 26.12.1 |
| Microsoft .NET | 8.0 avant 8.0.33 ; 9.0 avant 9.0.22 ; 10.0 avant 10.0.14 ; 11.0.0 preview 1 à 7, RC1 et RC2 |
| Envoy | antérieures à 1.37.8 ; 1.38 avant 1.38.6 ; 1.39 avant 1.39.3 |
| Istio | antérieures à 1.29.9 ; 1.30 avant 1.30.6 ; 1.31 avant 1.31.2 |
| Bun | antérieures à 1.4.4 |
| brotlicffi (Python) | antérieures à 1.2.1.0 |
| andybalholm/brotli (Go) | antérieures à 1.2.7 |
| ClickHouse | jusqu'à 26.10.2.103 inclus |
| DuckDB | jusqu'à 2.0.0 inclus |
| Apache Arrow | jusqu'à 26.0.0 inclus, et 27.0.0-dev |
| TianoCore EDK2 | jusqu'à 202608 inclus |
| 7-Zip-zstd | jusqu'à 26.02-1.5.7-r2 inclus |
| p7zip | jusqu'à 16.02 inclus |
| Google woff2 | listé sans borne de version |
| Debian | 12 |
⚠️ Ce sont des bornes issues de NVD, pas forcément la version à installer. Pour les produits listés « jusqu'à … inclus », NVD ne donne pas de version corrigée : vérifie l'advisory de l'éditeur. Pour Node.js, .NET et Debian, les annonces de sécurité correspondantes sont citées dans les références NVD.
Cette liste n'est pas exhaustive. Toute application qui lie statiquement Brotli, ou qui embarque sa propre copie (images de conteneurs, binaires Go ou Rust, appliances), peut être concernée sans apparaître dans NVD.
Détection
Le plus dur ici est l'inventaire, pas la détection d'une attaque.
Trouver les copies de Brotli :
# Bibliothèques système
ldconfig -p | grep -i brotli
dpkg -l | grep -i brotli # Debian / Ubuntu
rpm -qa | grep -i brotli # RHEL / Fedora
# Version embarquée dans Node.js
node -p "process.versions.brotli"
- Dépendances applicatives : chercher
brotli,brotlicffi,andybalholm/brotlidans les fichiers de verrouillage (package-lock.json,requirements.txt,go.sum,Cargo.lock) - Images de conteneurs : un scanner d'images (SBOM) remonte les copies de Brotli embarquées dans les couches
- Proxys et maillages de services : Envoy et Istio décompressent le trafic qui les traverse
Signes d'exploitation : plantages répétés (segfault) de processus qui décompressent du contenu, en particulier après réception de requêtes avec Content-Encoding: br.
Mitigation
1. Mettre à jour Brotli et tout ce qui l'embarque
L'échéance CISA est le 10 novembre. Mettre à jour la bibliothèque système ne suffit pas : Node.js, .NET, Bun, Envoy embarquent leur propre copie et doivent être mis à jour séparément.
2. Reconstruire les images
Un conteneur construit avant le correctif garde l'ancienne version. Reconstruire et redéployer, pas seulement mettre à jour l'hôte.
3. En attendant, réduire l'exposition
Là où c'est possible, refuser Content-Encoding: br sur les requêtes entrantes au niveau du proxy ou du serveur web. C'est une mesure temporaire : elle ne protège pas un client qui télécharge un contenu Brotli depuis un serveur malveillant.
4. Triage forensique
L'entrée KEV renvoie à la directive BOD 26-04, qui exige un triage forensique en plus de la mise à jour. Pour un service exposé qui a pu traiter du Brotli d'origine non maîtrisée, vérifier les processus, les connexions sortantes et les fichiers modifiés récemment.
Pourquoi surveiller en continu les composants de votre parc
Une faille dans une bibliothèque de compression ne porte le nom d'aucun produit que tu as acheté. Elle arrive par Node.js, par .NET, par le proxy devant tes services. Sans inventaire des versions qui tournent, impossible de savoir en cinq jours ce qui est exposé.
Avec cveo.tech, inventorie tes serveurs, runtimes et équipements avec leur version exacte, et reçois une alerte automatique dès qu'une CVE qui les concerne est publiée ou entre au catalogue CISA KEV.