Vulnérabilité critique dans le décodeur Brotli, affectant Node.JS, Bun, les navigateurs, les clients HTTP et d'autres projets.

Une vulnérabilité a été découverte dans la bibliothèque avec l'implémentation de référence du décodeur du format de compression de données Brotli (CVE-2026-111497, noms de code Broccoli2Shell et HTTP2Shell), entraînant un débordement de tampon lors du traitement de données comprimées spécialement conçues. Selon Google, la vulnérabilité peut être exploitée pour exécuter du code à distance lors d'attaques sur des projets utilisant l'implémentation officielle du décodeur Brotli. Parmi les projets touchés par la vulnérabilité, on trouve : Node.js, Bun, Envoy, Istio, navigateurs web, serveurs proxy, clients HTTP, serveurs HTTP, outils de compression, firmwares UEFI, visionneuses JPEG XL, bibliothèques de décodage de contenu pour Python, Ruby, Java, PHP et .NET ainsi que leurs dépendances.

Le problème a été découvert par OpenAI en février de cette année et a été corrigé dans la base de code de Brotli en écartant les flux incorrects lors du décodage. Le 22 octobre, des versions correctives de Brotli 1.0.10, 1.1.1 et 1.2.1 ont été publiées, dans lesquelles il a été clairement indiqué que la vulnérabilité avait été corrigée et que le problème fondamental était résolu. Ce même jour, un prototype d'exploit a été créé, permettant d'exécuter du code à distance dans des conditions de laboratoire, en utilisant des compilations non standard (des plantages se produisaient avec des compilations standard). Plus tard, la société Imperva a confirmé une attaque sur les compilations standard de Node.js 24.22.0 dans un environnement Linux sur un système ARM64.

La vulnérabilité entraîne une écriture hors limites du tampon en raison d'un traitement incorrect des erreurs lors de l'analyse des blocs dans le flux compressé. La fonction DecodeBlockTypeAndLength() renvoyait uniquement les valeurs true et false au lieu d'un code d'erreur, ce qui empêchait le code appelant de distinguer une corruption de flux d'un état nécessitant le passage de données supplémentaires à la fonction. En cas d'indication d'un type de bloc de données compressées incorrect dans le flux, le décodeur ne le considérait pas comme une erreur, mais comme un état de manque de données nécessitant une lecture supplémentaire à partir du flux. Cependant, comme le tampon alloué n'était pas prévu pour des données lues en plus, elles étaient écrites dans une zone en dehors de ses limites, où se trouvait l'état interne du décodeur.

Projets vulnérables :

  • La bibliothèque de référence brotli présente un problème depuis la version 1.0.3 et a été corrigée dans les mises à jour 1.0.10, 1.1.1 et 1.2.1. La vulnérabilité concerne les applications et les bibliothèques utilisant la bibliothèque libbrotlidec.
  • La plateforme JavaScript Node.js, problème résolu dans les mises à jour 26.12.1, 24.22.1 et 22.23.4. Les applications utilisant la méthode fetch() pour demander du contenu tiers peuvent être attaquées, car celle-ci décode automatiquement les réponses HTTP comportant l'en-tête « Content-Encoding: br ». La vulnérabilité se manifeste également lors de l'appel direct des méthodes zlib.brotliDecompress*(), createBrotliDecompress() et brotli.decompress() pour décompresser du contenu tiers ou lors de la réception de requêtes HTTP analysées via les bibliothèques Express 5 et body-parser 2.x.
  • Les paquets Python brotli et brotlicffi (correctif proposé dans la version 1.2.1) et les projets qui les utilisent, y compris les bibliothèques populaires urllib3, aiohttp, httpx et Scrapy, qui décodent les réponses avec l'en-tête « Content-Encoding: br » lors de l'accès à des ressources web externes.
  • Serveurs HTTP, proxies HTTP, clients HTTP et navigateurs web prenant en charge la compression Brotli (« Accept-Encoding: br »). Dans Apache httpd, mod_brotli est fourni (désactivé par défaut). Pour nginx, un module tiers ngx_brotli est disponible (la version brotli dans les dépendances a été mise à jour vers la version actuelle). Dans Chrome/Chromium et Firefox, le problème a déjà été résolu dans une des mises à jour précédentes. Dans le proxy-le serveur Envoy, la vulnérabilité a été corrigée dans les versions 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12.
  • .NET runtime lors de l'utilisation dans l'application des méthodes BrotliDecoder, BrotliStream et HttpClient. La vulnérabilité n'a pas encore été corrigée.
  • L'extension PHP brotli lors de l'utilisation de la fonction brotli_uncompress(). Un correctif est en préparation.
  • Le paquet Ruby brotli lors de l'utilisation de la méthode Brotli.inflate. La vulnérabilité n'a pas encore été corrigée.
  • SGBD DuckDB lors de l'importation de fichiers Parquet compressés. Un correctif est en préparation.
  • SGBD ClickHouse. Un correctif est en préparation.
  • SGBD YDB. La vulnérabilité n'a pas encore été corrigée.
  • Apache Arrow lors de l'importation de fichiers Parquet compressés. Un correctif est en préparation.
  • libjxl (lors de la compression des métadonnées dans JPEG XL, Brotli est utilisé).
    Un correctif est en préparation.
  • Les archives NanaZip, 7-Zip-zstd et p7zip lors de la décompression de fichiers br. La vulnérabilité n'est pas corrigée.
  • MuPDF. La vulnérabilité n'est pas corrigée.
  • Les firmwares UEFI basés sur EDK II et UEFITool, compressés à l'aide de Brotli. Un correctif est en préparation — EDK II et UEFITool.
  • La plateforme JavaScript Bun. La vulnérabilité a été corrigée dans la version 1.4.4.
  • La plateforme de gestion de microservices Istio. La vulnérabilité a été corrigée dans les versions 1.29.9, 1.30.6 et 1.31.2.
  • curl et libcurl, la vulnérabilité se manifeste en présence d'une version vulnérable de libbrotlidec dans les dépendances.
  • Les analyseurs du format de police Web Open Font (WOFF), dans lequel est utilisé
    Brotli.
  • Brotli4j, SumatraPDF, Ghostscript, CatBoost et YTsaurus. La vulnérabilité a été corrigée dans une des mises à jour.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster