Ce qui se passe
Les fiches des 22 et 24 octobre suivaient CVE-2026-111497 côté Node.js. Le
défaut est pourtant dans le décodeur Brotli de Google, une bibliothèque C
(versions 1.0.3 à 1.2.0) : un flux compressé forgé fait écrire au-delà d'un
tampon, ce qui peut planter le programme, révéler de la mémoire ou exécuter du
code. Chaque logiciel embarque sa propre copie du décodeur et doit donc publier
son propre correctif.
Le correctif amont figurait dans le code de Brotli depuis le 27 février, sans que l'on sache alors qu'il fermait une faille ; aucune version ne l'a livré avant le 21 octobre. L'équipe Codex Security d'OpenAI (Khai Tran, Sylvie Mayer) a signalé la faille. Google la note 9,2 (CVSS 4.0, critique), Node.js « haute », Red Hat 8,1.
Qui est touché
| Produit | Touché | Corrigé | Exposé quand |
|---|---|---|---|
| Brotli (bibliothèque C) | 1.0.3 à 1.2.0 | 1.0.10, 1.1.1, 1.2.1 | du Brotli non fiable est décodé |
| Node.js | 22.x, 24.x, 26.x avant correctif ; 20.x et antérieures (fin de vie) | 22.23.4, 24.22.1, 26.12.1 | fetch() d'une réponse br, ou corps br via Express ou body-parser |
| Bun | 1.4.3 et antérieures | 1.4.4 | fetch() d'une réponse br, ou node:zlib |
| Envoy | 1.39.2, 1.38.5, 1.37.7, 1.36.11 | 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12 | décompresseur Brotli configuré |
| Istio | 1.31.0 à 1.31.1, 1.30.0 à 1.30.5, 1.29.0 à 1.29.8 | 1.31.2, 1.30.6, 1.29.9 | décompression Brotli activée |
Python Brotli |
1.2.0 et antérieures | 1.2.1 | paquet installé, client HTTP qui décode br |
Python brotlicffi |
1.2.0.x et antérieures | 1.2.1.0 | idem |
| cdxgen (binaires et images) | 13.4.0 et 12.8.8 et antérieures | 13.5.0, 12.8.9 | analyse d'entrées non fiables |
Debian 13 (trixie) a corrigé son paquet brotli le 23 octobre
(1.1.0-2+deb13u1) ; Amazon Linux 2023 listait encore ses paquets brotli et
Node.js 24 en attente au 22 octobre.
Le piège Python
Il suffit que Brotli ou brotlicffi soit installé : requests,
urllib3, httpx et aiohttp décodent alors le Brotli d'eux-mêmes, sans que
votre code l'importe. Et le piège est double : la fiche CVE nomme le dépôt
Google, pas les paquets PyPI, et l'avis GitHub ne liste aucun paquet touché, ce
que lit Dependabot. Selon Aikido, pip-audit, Dependabot et Safety ne
signalaient rien au 23 octobre. Les entrées PYSEC-2026-4322 (Brotli) et
PYSEC-2026-4323 (brotlicffi) existent depuis le 23 octobre : vérifiez les
versions à la main.
Comment s'y prendre
Chercher les paquets, dans chaque environnement et chaque image :
Terminal pip freeze | grep -i brotliMettre à jour, puis redémarrer et reconstruire les images : un processus en cours garde l'ancien décodeur.
Terminal pip install -U "Brotli>=1.2.1" "brotlicffi>=1.2.1.0"Impossible de mettre à jour ? Désinstaller
Brotlietbrotlicffi(et les extras commehttpx[brotli]) : les clients retombent sur gzip et deflate, mais un serveur qui envoie dubrquand même peut produire une réponse illisible.Refuser les requêtes entrantes
Content-Encoding: brau proxy, avant tout décodage, et rejeter les réponsesbrcôté client avant qu'elles soient décodées.
Retirer br de Accept-Encoding ne suffit pas : un serveur malveillant en
envoie quand même, et urllib3 choisit son décodeur d'après l'en-tête de la
réponse. Les règles de pare-feu de Vercel, elles, ne couvrent pas « les réponses
que vos fonctions vont chercher ailleurs ».
Ce qu'il ne faut pas en conclure
Une exécution de code n'est démontrée que sur Node.js 24.22.0 (Imperva), pas sur Bun, Envoy ni Python. Aucune attaque réelle n'est signalée ; l'évaluation de la CISA du 23 octobre note l'exploitation « none ».
Source : The Hacker News, 24 octobre 2026. Source en anglais. Compléments : Aikido, avis Node.js, OpenAI.