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
