En sÄrbarhet (CVE-2026-111497, kodnamn Broccoli2Shell och HTTP2Shell) har identifierats i biblioteket som innehÄller referensimplementeringen av Brotli-datakomprimeringsavkodaren. Denna sÄrbarhet leder till ett buffertspill vid bearbetning av specialskapad komprimerad data. Enligt Google kan denna sÄrbarhet anvÀndas för fjÀrrkörning av kod vid attacker av projekt som anvÀnder den officiella Brotli-avkodarimplementeringen. Berörda projekt inkluderar Node.js, Bun, Envoy, Istio, webblÀsare, proxyservrar, HTTP-klienter, HTTP-servrar, arkiverare, proxyservrar, UEFI-firmware, JPEG XL-visare, innehÄllsavkodningsbibliotek för Python, Ruby, Java, PHP och .NET, och deras tillhörande beroenden.
Problemet upptÀcktes av OpenAI i februari i Är och blockerades i Brotlis kodbas genom att ogiltiga strömmar ignorerades under avkodning. Den 22 oktober publicerades patchversioner av Brotli 1.0.10, 1.1.1 och 1.2.1, som uttryckligen tillkÀnnagav korrigeringen och ÄtgÀrdade det underliggande problemet. Samma dag skapades en prototypattack som möjliggjorde fjÀrrkörning av kod i laboratorieförhÄllanden med icke-standardiserade builds (standardversioner kraschade). Imperva upptÀckte senare en attack mot standard Node.js 24.22.0-builds. Linux- miljö pÄ ARM64-systemet.
SÄrbarheten resulterar i en buffertskrivning utanför grÀnserna pÄ grund av felaktig felhantering under blockparsning i en komprimerad ström. Funktionen DecodeBlockTypeAndLength() returnerade endast sanna och falska vÀrden istÀllet för en felkod, vilket förhindrade anroparen frÄn att skilja mellan strömkorruption och ett tillstÄnd som krÀver att ytterligare data skickas till funktionen. Om en felaktig komprimerad datablocktyp angavs i strömmen tolkade avkodaren det inte som ett fel, utan som ett tillstÄnd dÀr data inte fanns tillgÀngliga som krÀver ytterligare lÀsning frÄn strömmen. Eftersom den allokerade bufferten inte var utformad för att hantera ytterligare data som lÀstes, skrevs data till ett omrÄde utanför bufferten som lagrade avkodarens interna tillstÄnd.
Berörda projekt:
- Brotli-referensbiblioteket, ett problem som har funnits sedan version 1.0.3 och som ÄtgÀrdades i uppdateringarna 1.0.10, 1.1.1 och 1.2.1, pÄverkar program och bibliotek som anvÀnder libbrotlidec-biblioteket.
- JavaScript-plattformen Node.js uppdaterades i uppdateringarna 26.12.1, 24.22.1 och 22.23.4. Program som anvÀnder metoden fetch() för att begÀra innehÄll frÄn tredje part, vilket automatiskt avkodar HTTP-svar med rubriken "Content-Encoding: br", kan vara sÄrbara. SÄrbarheten manifesterar sig ocksÄ nÀr metoderna zlib.brotliDecompress*(), createBrotliDecompress() och brotli.decompress() anropas direkt för att dekomprimera innehÄll frÄn tredje part, eller nÀr HTTP-förfrÄgningar tas emot som parsats via biblioteken Express 5 och body-parser 2.x.
- Python-paketen brotli och brotlicffi (rÀttelse föreslagen i version 1.2.1) och projekt som anvÀnder dem, inklusive de populÀra biblioteken urllib3, aiohttp, httpx och Scrapy, som avkodar svar med rubriken "Content-Encoding: br" vid Ätkomst till externa webbresurser.
- HTTP-servrar, HTTP-proxyservrar, HTTP-klienter och webblÀsare som stöder Brotli-komprimering ("Accept-Encoding: br"). Apache httpd levereras med mod_brotli (inaktiverat som standard). En tredjepartsmodul, ngx_brotli, Àr tillgÀnglig för nginx (brotli-versionen i beroenden har uppdaterats till den senaste versionen). I Chrome/Chromium och Firefox har problemet redan ÄtgÀrdats i en tidigare uppdatering. I proxy-server Envoy-sÄrbarheten Àr ÄtgÀrdad i versionerna 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12.
- .NET-körningstid nÀr metoderna BrotliDecoder, BrotliStream och HttpClient anvÀnds i en applikation. SÄrbarheten har Ànnu inte ÄtgÀrdats.
- PHP brotli-tillÀgget nÀr funktionen brotli_uncompress() anvÀnds. à tgÀrdning pÄgÄr.
- Ruby-paketet Brotli var sÄrbart för attacker med Brotli.inflate-metoden. SÄrbarheten har Ànnu inte ÄtgÀrdats.
- DuckDB vid import av komprimerade Parquet-filer. à tgÀrdning pÄgÄr.
- ClickHouse DBMS. à tgÀrdning pÄgÄr.
- YDB DBMS. SÄrbarheten har Ànnu inte ÄtgÀrdats.
- Apache Arrow vid import av komprimerade Parquet-filer. à tgÀrdning pÄgÄr.
- libjxl (anvÀnder Brotli för komprimering av JPEG XL-metadata).
RÀttelse under förberedelse. - Arkiveringsprogrammen NanaZip, 7-Zip-zstd och p7zip Àr sÄrbara vid uppackning av .br-filer. SÄrbarheten kvarstÄr.
- MuPDF. SÄrbarheten har inte ÄtgÀrdats.
- UEFI-firmware baserad pÄ EDK II och UEFITool, komprimerad med Brotli. En fix förbereds för EDK II och UEFITool.
- JavaScript-ramverket Bun. SÄrbarheten ÄtgÀrdades i version 1.4.4.
- Istio, en plattform för hantering av mikrotjÀnster. SÄrbarheten ÄtgÀrdades i versionerna 1.29.9, 1.30.6 och 1.31.2.
- curl och libcurl, manifesterar sig sÄrbarheten nÀr en sÄrbar version av libbrotlidec finns i beroendena.
- Parsers for the Web Open Font (WOFF) teckensnittsformat, som anvÀnder
Brotli. - Brotli4j, SumatraPDF, Ghostscript, CatBoost och YTsaurus. SÄrbarheten ÄtgÀrdades i en uppdatering.
KĂ€lla: opennet.ru
