Contexte et découverte

En 2026, la faille identifiée sous le numéro CVE-2026-111497 a été publiée pour le composant Node2Shell. Initialement, Node2Shell exploitait une faiblesse dans la prise en charge du format de compression Brotli au sein d’applications Node.js. Le même vecteur a été réutilisé dans une version dérivée baptisée HTTP2Shell, qui cible l’ensemble des bibliothèques et applications effectuant des requêtes HTTP, quel que soit le langage d’implémentation.

Mécanisme de la vulnérabilité

Le cœur du problème réside dans la désérialisation de flux Brotli non validés. Lorsqu’un serveur ou un client accepte un corps compressé sans vérifier la taille maximale ou les limites de mémoire, un attaquant peut injecter un flux spécialement conçu. Ce flux déclenche un dépassement de tampon au moment de la décompression, ouvrant la possibilité d’exécuter du code arbitraire dans le processus appelant. La transition de Node2Shell à HTTP2Shell ne modifie pas le principe sous‑jacent : la chaîne de traitement HTTP (ou HTTP/2) intègre automatiquement la décompression Brotli, ce qui rend chaque appel de fonction brotli_decompress() potentiellement vulnérable.

Les bibliothèques HTTP les plus couramment utilisées – qu’elles soient implémentées en JavaScript, Python, Java ou Go – intègrent souvent des wrappers autour de la même bibliothèque native de Brotli. Ainsi, la vulnérabilité se propage de façon transversale, sans que chaque projet doive explicitement inclure le code vulnérable.

Impacts et mesures d’atténuation

Les conséquences observées comprennent l’exécution de code à distance, la compromission de la chaîne d’approvisionnement logicielle et la possibilité d’instaurer des portes dérobées persistantes. Les environnements de production qui traitent des flux HTTP externes – API, micro‑services, serveurs de contenu – sont particulièrement exposés. Aikido, dans son Advanced AppSec suite, propose une combinaison de SCA (Software Composition Analysis) et de SAST (Static Application Security Testing) pour détecter automatiquement les dépendances contenant la version vulnérable de Brotli. La plateforme offre également une protection runtime capable d’intercepter les appels de décompression et de bloquer les flux anormaux.

En pratique, les équipes de sécurité doivent d’abord identifier les paquets contenant la bibliothèque Brotli via un audit de SBOM (Software Bill of Materials). Ensuite, il faut mettre à jour vers les versions corrigées publiées par les mainteneurs ou appliquer des patches de contournement qui limitent la taille maximale des flux compressés. Enfin, l’activation de la surveillance en temps réel des décompressions, comme le propose Aikido, permet de détecter rapidement toute tentative d’exploitation.