Kritisk sÄrbarhet i avkodaren Brotli, som pÄverkar Node.JS, Bun, webblÀsare, HTTP-klienter och andra projekt

I referensbiblioteket med den referensimplementationen av Brotli komprimeringsdekodern har en sÄrbarhet (CVE-2026-111497, kodnamn Broccoli2Shell och HTTP2Shell) identifierats, som leder till buffertöverskridning vid hantering av speciellt utformad komprimerad data. Enligt Google kan sÄrbarheten anvÀndas för fjÀrrexekvering av kod vid attacker mot projekt som anvÀnder den officiella implementationen av Brotli-dekodern. Bland de pÄverkade projekten finns: Node.js, Bun, Envoy, Istio, webblÀsare, proxytjÀnster, HTTP-klienter, HTTP-servrar, arkiveringsprogram, UEFI-firmware, JPEG XL-visare, dekoderbibliotek för Python, Ruby, Java, PHP och .NET samt relaterade beroenden.

Problemet upptÀcktes av OpenAI i februari i Är och blockerades i kodbasen för Brotli genom att ogiltiga strömmar avvisades vid avkodning. Den 22 oktober publicerades korrigerande versioner av Brotli 1.0.10, 1.1.1 och 1.2.1 dÀr det tydligt angavs att sÄrbarheten ÄtgÀrdades och kÀrnproblemet löstes. Samma dag skapades en prototyp av ett exploit som möjliggjorde fjÀrrexekvering av kod i laboratoriemiljöer via anpassade versioner (vanliga versioner kraschade). Senare dokumenterade Imperva en attack pÄ standardversionerna av Node.js 24.22.0 i Linuxmiljö pÄ ARM64-system.

SÄrbarheten leder till skrivning utanför bufferten pÄ grund av felaktig felhantering under analysen av block i det komprimerade flödet. Funktionen DecodeBlockTypeAndLength() returnerade istÀllet för felkod endast vÀrdena true och false, vilket hindrade anropande kod frÄn att skilja pÄ en strömförstöring och ett tillstÄnd som krÀvde överföring av ytterligare data till funktionen. Om en ogiltig blocktyp för komprimerad data angavs i strömmen, uppfattade dekodern det inte som ett fel, utan som ett tillstÄnd med otillrÀckliga data som krÀvde ytterligare lÀsning frÄn strömmen. Men eftersom den allokerade bufferten inte var avsedd för de ytterligare lÀsta data, skrevs de i omrÄdet utanför bufferten dÀr dekoderns interna tillstÄnd lagrades.

Projekt som Àr pÄverkade av sÄrbarheten:

  • Referensbiblioteket brotli, problemet upptrĂ€der frĂ„n och med version 1.0.3 och Ă„tgĂ€rdades i uppdateringarna 1.0.10, 1.1.1 och 1.2.1. SĂ„rbarheten pĂ„verkar applikationer och bibliotek som anvĂ€nder biblioteket libbrotlidec.
  • JavaScript-plattformen Node.js, problemet Ă„tgĂ€rdades i uppdateringarna 26.12.1, 24.22.1 och 22.23.4. Applikationer som anvĂ€nder metoden fetch() för att begĂ€ra extern innehĂ„ll kan attackeras, eftersom den automatiskt avkodar HTTP-svar med rubriken "Content-Encoding: br". SĂ„rbarheten upptrĂ€der ocksĂ„ vid direkt anrop av metoderna zlib.brotliDecompress*(), createBrotliDecompress() och brotli.decompress() för att packa upp extern innehĂ„ll eller vid mottagande av HTTP-förfrĂ„gningar som analyseras via biblioteken Express 5 och body-parser 2.x.
  • Python-paketet brotli och brotlicffi (fix föreslagen i version 1.2.1) och projekt som anvĂ€nder dem, inklusive populĂ€ra bibliotek som urllib3, aiohttp, httpx och Scrapy, som avkodar svar med rubriken "Content-Encoding: br" vid anrop till externa webbresurser.
  • HTTP-servrar, HTTP-proxy, HTTP-klienter och webblĂ€sare som stöder Brotli-komprimering ("Accept-Encoding: br"). I Apache httpd levereras mod_brotli (avstĂ€ngd som standard). För nginx finns en tredjepartsmodul ngx_brotli (versionen av brotli i beroenden har höjts till den aktuella). I Chrome/Chromium och Firefox har problemet redan Ă„tgĂ€rdats i en av de tidigare uppdateringarna. I proxyn -servern Envoy Ă„tgĂ€rdades sĂ„rbarheten i versionerna 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12.
  • .NET-runtime nĂ€r den anvĂ€nds i applikationen med metoderna BrotliDecoder, BrotliStream och HttpClient. SĂ„rbarheten har Ă€nnu inte Ă„tgĂ€rdats.
  • PHP-tillĂ€gget brotli vid anvĂ€ndning av funktionen brotli_uncompress(). En fix Ă€r under beredning.
  • Ruby-paketet brotli vid anvĂ€ndning av metoden Brotli.inflate. SĂ„rbarheten har Ă€nnu inte Ă„tgĂ€rdats.
  • Databasen DuckDB vid import av komprimerade Parquet-filer. En fix Ă€r under beredning.
  • Databasen ClickHouse. En fix Ă€r under beredning.
  • Databasen YDB. SĂ„rbarheten har Ă€nnu inte Ă„tgĂ€rdats.
  • Apache Arrow vid import av komprimerade Parquet-filer. En fix Ă€r under beredning.
  • libjxl (nĂ€r metadata komprimeras i JPEG XL anvĂ€nds Brotli).
    En fix Àr under beredning.
  • Arkiverare NanaZip, 7-Zip-zstd och p7zip vid uppackning av br-filer. SĂ„rbarheten har inte Ă„tgĂ€rdats.
  • MuPDF. SĂ„rbarheten har inte Ă„tgĂ€rdats.
  • UEFI-firmware baserad pĂ„ EDK II och UEFITool, komprimerad med Brotli. En fix Ă€r under beredning – EDK II och UEFITool.
  • JavaScript-plattformen Bun. SĂ„rbarheten Ă„tgĂ€rdades i version 1.4.4.
  • Plattformen för hantering av mikrotjĂ€nster Istio. SĂ„rbarheten Ă„tgĂ€rdades i versionerna 1.29.9, 1.30.6 och 1.31.2.
  • curl och libcurl, sĂ„rbarheten upptrĂ€der vid förekomsten av en sĂ„rbar version av libbrotlidec i beroenden.
  • Parser för fontformatet Web Open Font (WOFF), dĂ€r Brotli anvĂ€nds.
    Brotli.
  • Brotli4j, SumatraPDF, Ghostscript, CatBoost och YTsaurus. SĂ„rbarheten har Ă„tgĂ€rdats i en av uppdateringarna.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster