HTTP2Shell is a cross-ecosystem security issue caused by CVE-2026-111497, an out-of-bounds write in Google’s Brotli decoder. Malformed compressed data can corrupt process memory and potentially cause information disclosure, denial of service or remote code execution. Systems need patched Brotli code wherever applications embed, bundle or statically link the decoder; updating the operating system library alone may leave vulnerable copies running.
Qu’est-ce qu’HTTP2Shell et comment fonctionne la faille de Brotli ?
HTTP2Shell est un schéma d’exposition à une vulnérabilité dans lequel des données Brotli contrôlées par un attaquant atteignent un décodeur affecté par CVE-2026-111497. Lors du traitement d’une entrée compressée malformée, le décodeur peut écrire en dehors d’une région mémoire allouée, ce qui peut provoquer un plantage, divulguer des informations ou permettre l’exécution de code à distance dans le processus affecté.
Le défaut sous-jacent se situe dans le décodeur Brotli natif de Google, et non dans le protocole HTTP/2. Le nom HTTP2Shell est apparu lorsque des chercheurs ont constaté que le même décodeur pouvait être atteint par l’intermédiaire de plusieurs clients HTTP, serveurs et frameworks d’application, selon le rapport de JFrog du 23 octobre 2026.
Cette distinction est importante. Un service ne devient pas sûr simplement parce qu’il désactive HTTP/2, modifie ses frameworks web ou bloque les requêtes entrantes compressées. Un client côté serveur peut toujours récupérer une réponse malveillante contenant Content-Encoding: br, puis transmettre le corps à un décodeur vulnérable.
Google published fixed Brotli releases on October 21, 2026. Affected upstream versions are 1.0.3 through 1.0.9, 1.1.0 and 1.2.0; the corresponding repaired branches are 1.0.10, 1.1.1 and 1.2.1. A vendor-confirmed backport can also be safe even when its displayed version differs.
Quelles versions et quelles plateformes HTTP2Shell nécessitent-elles des correctifs ?
HTTP2Shell affecte les logiciels contenant du code Brotli vulnérable, notamment Node.js 22.x, 24.x et 26.x avant leurs versions de sécurité du 21 octobre 2026. Bun 1.4.4, les packages Windows PHP reconstruits et les packages .NET corrigés illustrent l’ampleur du problème : chaque écosystème a dû remplacer son propre décodeur intégré ou référencé.
| Produit ou branche | Informations sur les versions affectées | Version corrigée | Date de publication |
|---|---|---|---|
| Branche Google Brotli 1.0 | 1.0.3–1.0.9 | 1.0.10 | 21 octobre 2026 |
| Branche Google Brotli 1.1 | 1.1.0 | 1.1.1 | 21 octobre 2026 |
| Branche Google Brotli 1.2 | 1.2.0 | 1.2.1 | 21 octobre 2026 |
| Node.js 22.x | 22.x avant 22.23.4 | 22.23.4 | 21 octobre 2026 |
| Node.js 24.x | 24.x avant 24.22.1 | 24.22.1 | 21 octobre 2026 |
| Node.js 26.x | 26.x avant 26.12.1 | 26.12.1 | 21 octobre 2026 |
| Bun | Versions utilisant le décodeur intégré vulnérable | 1.4.4 avec Brotli 1.2.1 | 23 octobre 2026 |
| Builds Windows officiels de PHP | Packages 8.5.12, 8.4.27, 8.3.36 et 8.2.35 sans la reconstruction -1 | 8.5.12-1, 8.4.27-1, 8.3.36-1 et 8.2.35-1 | 26 octobre 2026 |
| .NET | Packages .NET 8, 9, 10 et 11-preview affectés | Packages corrigés hors cycle de Microsoft | 25 octobre 2026 |
Le tableau représente au moins 13 versions de remplacement ou lignes de packages nommément identifiées : trois branches amont de Brotli, trois lignes Node.js, une version de Bun, quatre reconstructions Windows de PHP et les familles de packages .NET affectées. Ce décompte explique pourquoi une simple mise à jour du système d’exploitation constitue une stratégie de remédiation peu fiable.
Les versions de Node.js en fin de vie ne doivent pas être considérées comme protégées, car elles ne figurent pas parmi les lignes maintenues et corrigées. L’avis de Microsoft du 25 octobre 2026 couvrait les packages .NET 8, 9, 10 et 11-preview affectés, tout en indiquant que .NET Framework n’était pas affecté.
Les équipes qui répondent déjà à d’autres failles urgentes, telles que la vulnérabilité d’exécution de code à distance de GitLab ou le problème activement exploité d’Atlassian, doivent suivre Brotli séparément. La remédiation d’HTTP2Shell suit les instances de dépendances plutôt qu’un seul produit exposé sur Internet.
HTTP2Shell peut-il réellement conduire à une exécution de code à distance ?
CVE-2026-111497 peut potentiellement conduire à une exécution de code à distance, car une écriture hors limites permet à une entrée Brotli malformée de corrompre la mémoire du processus. JFrog a signalé le 22 octobre 2026 qu’Imperva avait démontré une exécution de code contre une build officielle vulnérable de Node.js, mais Red Hat n’avait pas observé d’exploit public et fiable permettant une exécution de code à distance au 26 octobre 2026.
Red Hat a attribué à CVE-2026-111497 un score CVSS v3.1 de 8,1 et a classé le problème comme Important le 26 octobre 2026. Son évaluation incluait une complexité d’attaque élevée, ce qui signifie qu’il est plus difficile de transformer l’erreur mémoire en exécution de code fiable que de provoquer simplement un plantage.
Ne considérez pas la « complexité élevée » comme une « faible priorité ». Les récupérateurs exposés sur Internet peuvent traiter à plusieurs reprises des données non fiables, et les agencements mémoire diffèrent selon les environnements d’exécution, les systèmes d’exploitation et les configurations de compilation. Une tentative d’exploitation échouée peut tout de même devenir un événement de déni de service.
L’évaluation raisonnable est sérieuse, mais mesurée : une exécution de code aurait été démontrée dans un cas contrôlé, tandis qu’une exploitation publique, étendue et fiable n’avait pas été confirmée par Red Hat au moment de la publication. Cela suffit pour appliquer rapidement les correctifs, sans présenter chaque décodeur vulnérable comme étant déjà compromis.
Comment une réponse Brotli malveillante peut-elle atteindre votre serveur ?
HTTP2Shell can reach a server when an application fetches attacker-controlled content and automatically decodes a Brotli-compressed response. Likely response-side paths include webhook processors, URL-preview generators, crawlers, reverse proxies and server-side request features. Blocking compressed request bodies does not stop malicious Content-Encoding: br réponses provenant de ces connexions sortantes.
Dans cURL, la décompression automatique des réponses est désactivée par défaut, selon sa documentation de 2026. Les applications peuvent l’activer via CURLOPT_ACCEPT_ENCODING, le paramètre PHP CURLOPT_ENCODING ou l’option de ligne de commande --compressed . L’accessibilité nécessite également que la version de libcurl sélectionnée prenne en charge Brotli.
La documentation 2026 de Guzzle indique que decode_content a pour valeur par défaut true. L’exposition réelle dépend toujours du gestionnaire choisi et de la prise en charge de Brotli par la version sous-jacente de libcurl. Examinez le comportement à l’exécution plutôt que de supposer qu’une valeur par défaut du framework suffit à prouver la vulnérabilité ou la sécurité.
Un cas limite souvent ignoré concerne une application de confiance qui récupère une URL non fiable après une redirection. Les aperçus d’URL, la validation des webhooks et les services proxy peuvent suivre des destinations contrôlées par un attaquant ; les données dangereuses arrivent donc sous forme de réponse plutôt que par l’interpréteur de requêtes public. Des erreurs similaires à la frontière de confiance apparaissent également dans les failles de sécurité entre agents.
Comment auditer et corriger HTTP2Shell ?
Un audit de HTTP2Shell doit identifier chaque décodeur Brotli présent dans les artefacts déployés, remplacer les copies vulnérables, reconstruire les logiciels intégrés et redémarrer les processus concernés. Vérifiez le binaire ou le paquet réellement exécuté en production. Les manifestes de paquets peuvent omettre les bibliothèques statiques, le code source intégré par le fournisseur, les couches de conteneurs, les exécutables autonomes et les dépendances transitives.
Utilisez la checklist de remédiation 2026 suivante pour couvrir les copies directes et cachées des décodeurs :
- Dressez l’inventaire des paquets du système d’exploitation, des environnements d’exécution Node.js, des bundles PHP pour Windows, des images de conteneurs, des exécutables compilés, des liaisons de langage et des bibliothèques natives qui contiennent Brotli.
- Exigez Brotli 1.0.10, 1.1.1 ou 1.2.1, ou obtenez une confirmation écrite du fournisseur indiquant qu’un rétroportage de sécurité corrige CVE-2026-111497.
- Mettez Node.js à niveau vers la version 22.23.4, 24.22.1 ou 26.12.1, ou une version ultérieure, puis reconstruisez et redéployez les conteneurs, les images d’intégration continue et les applications à exécutable unique.
- Pour PHP sous Windows, vérifiez que le nom de fichier contient 8.5.12-1, 8.4.27-1, 8.3.36-1 ou 8.2.35-1. Le paquet correspondant sans
-1ne contient pas la reconstruction des dépendances du 26 octobre 2026. - Recherchez
CURLOPT_ACCEPT_ENCODING,CURLOPT_ENCODING,--compressedainsi que ledecode_contentde Guzzle, puis testez quels chemins acceptent les réponses Brotli provenant d’hôtes sélectionnés par un attaquant. - Générez une nomenclature logicielle adaptée à la compilation, qui sépare les instances de composants en double, consigne les relations entre dépendances et identifie les graphes de dépendances incomplets comme des inconnues connues.
- Régénérez la nomenclature logicielle après l’application des correctifs, reconstruisez les artefacts autonomes, redéployez-les et redémarrez chaque processus concerné.
Le détail du nom de fichier PHP est particulièrement facile à manquer. La version 8.4.27-1 utilise la même version de l’environnement d’exécution PHP que 8.4.27 ; le -1 indique un paquet Windows reconstruit contenant Brotli 1.2.1. À mon avis, vérifier uniquement phpversion() est insuffisant, car cela peut ne pas révéler cette différence de conditionnement.
Les recommandations 2025 de la CISA concernant les éléments minimaux d’une SBOM préconisent les relations entre dépendances et suffisamment d’informations d’identification des composants pour distinguer les instances logicielles. Pour cette faille, les instances en double sont importantes sur le plan opérationnel : une bibliothèque système corrigée et un ancien décodeur intégré à un exécutable constituent deux cibles de remédiation distinctes.
Terminez par les preuves de déploiement. Consignez le condensat d’un artefact, inspectez le décodeur au sein de cet artefact et confirmez que le processus redémarré utilise la nouvelle compilation. La rigueur des interventions d’urgence appliquée à failles non corrigées de serveurs de sauvegarde s’applique également ici, mais HTTP2Shell ajoute la difficulté de localiser les dépendances natives dupliquées.
FAQ HTTP2Shell
HTTP/2 en lui-même est-il vulnérable à HTTP2Shell ?
HTTP/2 n’est pas le composant défectueux de HTTP2Shell. La vulnérabilité CVE-2026-111497 se situe dans le décodeur Brotli de Google et peut être exploitée par l’intermédiaire de logiciels qui traitent des données Brotli malveillantes, notamment des clients et des serveurs HTTP utilisant différentes versions du protocole.
La mise à jour de libbrotli sous Linux corrige-t-elle toutes les applications concernées ?
La mise à jour de la bibliothèque système libbrotli ne corrige pas les applications qui établissent un lien statique vers un décodeur vulnérable, qui l’intègrent ou qui en incluent une copie fournie par le fournisseur. Chaque artefact déployé doit être inspecté, reconstruit et redéployé si nécessaire.
Les installations PHP sous Linux sont-elles concernées par l’avis de reconstruction pour Windows ?
L’annonce du 26 octobre 2026 concernant les paquets PHP a précisément reconstruit les paquets Windows officiels avec Brotli 1.2.1. L’exposition sous Linux dépend des bibliothèques Brotli et cURL fournies ou intégrées par la distribution, le conteneur ou la compilation de l’application concerné(e).
La désactivation de la décompression Brotli peut-elle servir de mesure d’atténuation temporaire ?
Désactiver la décompression automatique Brotli peut réduire les vecteurs d’attaque accessibles lorsque ce paramètre est appliqué à l’ensemble des chemins de code des clients et des serveurs. Il reste toutefois préférable d’installer les correctifs, car des bibliothèques masquées, des gestionnaires alternatifs ou des fonctionnalités récemment déployées peuvent réintroduire le décodage.
Quel numéro CVE est attribué à HTTP2Shell ?
HTTP2Shell désigne l’exposition liée à la CVE-2026-111497, l’écriture hors limites dans le décodeur Brotli de Google révélée en octobre 2026.


