En sårbarhet (CVE-2026-111497, kodenavn Broccoli2Shell og HTTP2Shell) er identifisert i biblioteket som inneholder referanseimplementeringen av Brotli-datakomprimeringsdekoderen. Denne sårbarheten fører til bufferoverløp ved behandling av spesiallagde komprimerte data. Ifølge Google kan denne sårbarheten brukes til ekstern kodekjøring ved angrep på prosjekter som bruker den offisielle Brotli-dekoderimplementeringen. Berørte prosjekter inkluderer Node.js, Bun, Envoy, Istio, nettlesere, proxy-servere, HTTP-klienter, HTTP-servere, arkiveringsprogrammer, proxy-servere, UEFI-fastvare, JPEG XL-visningsprogrammer, innholdsdekodingsbiblioteker for Python, Ruby, Java, PHP og .NET, og deres tilhørende avhengigheter.
Problemet ble oppdaget av OpenAI i februar i år og blokkert i Brotli-kodebasen ved å forkaste ugyldige strømmer under dekoding. 22. oktober ble patch-utgivelser av Brotli 1.0.10, 1.1.1 og 1.2.1 publisert, som eksplisitt annonserte løsningen og adresserte det underliggende problemet. Samme dag ble det laget en prototype-utnyttelse som tillot ekstern kodekjøring i labforhold ved bruk av ikke-standard builds (standard builds ville krasje). Imperva oppdaget senere et angrep på standard Node.js 24.22.0 builds. Linux- miljø på ARM64-systemet.
Sårbarheten resulterer i en bufferskriving utenfor grensene på grunn av feil håndtering av feil under blokkparsing i en komprimert strøm. DecodeBlockTypeAndLength()-funksjonen returnerte bare sanne og usanne verdier i stedet for en feilkode, noe som forhindret innkalleren i å skille mellom strømkorrupsjon og en tilstand som krever at ytterligere data sendes til funksjonen. Hvis en feil komprimert datablokktype ble spesifisert i strømmen, tolket dekoderen det ikke som en feil, men som en tilstand utenfor data som krever ytterligere lesing fra strømmen. Men siden den tildelte bufferen ikke var designet for å håndtere ytterligere datalesing, ble dataene skrevet til et område utenfor bufferen som lagret dekoderens interne tilstand.
Berørte prosjekter:
- Brotli-referansebiblioteket, et problem som har vært til stede siden versjon 1.0.3 og ble løst i oppdateringene 1.0.10, 1.1.1 og 1.2.1, påvirker applikasjoner og biblioteker som bruker libbrotlidec-biblioteket.
- JavaScript-plattformen Node.js ble oppdatert i oppdateringene 26.12.1, 24.22.1 og 22.23.4. Programmer som bruker fetch()-metoden til å be om tredjepartsinnhold, som automatisk dekoder HTTP-svar med headeren "Content-Encoding: br", kan være sårbare. Sårbarheten manifesterer seg også når metodene zlib.brotliDecompress*(), createBrotliDecompress() og brotli.decompress() kalles direkte for å dekomprimere tredjepartsinnhold, eller når HTTP-forespørsler analysert gjennom Express 5- og body-parser 2.x-bibliotekene mottas.
- Python-pakkene brotli og brotlicffi (rettelse foreslått i versjon 1.2.1) og prosjekter som bruker dem, inkludert de populære bibliotekene urllib3, aiohttp, httpx og Scrapy, som dekoder svar med headeren "Content-Encoding: br" når de åpner eksterne nettressurser.
- HTTP-servere, HTTP-proxyer, HTTP-klienter og nettlesere som støtter Brotli-komprimering ("Accept-Encoding: br"). Apache httpd leveres med mod_brotli (deaktivert som standard). En tredjepartsmodul, ngx_brotli, er tilgjengelig for nginx (brotli-versjonen i avhengigheter er oppdatert til den nyeste versjonen). I Chrome/Chromium og Firefox er problemet allerede løst i en tidligere oppdatering. I proxy-server Envoy-sårbarheten er rettet i versjon 1.40.0, 1.39.3, 1.38.6, 1.37.8 og 1.36.12.
- .NET-kjøretidssystemet når metodene BrotliDecoder, BrotliStream og HttpClient brukes i et program. Sårbarheten er ennå ikke oppdatert.
- PHP brotli-utvidelsen når brotli_uncompress()-funksjonen brukes. Retting pågår.
- Ruby-pakken Brotli var sårbar for angrep ved bruk av Brotli.inflate-metoden. Sårbarheten er ennå ikke oppdatert.
- DuckDB ved import av komprimerte Parquet-filer. Retting pågår.
- ClickHouse DBMS. Retting pågår.
- YDB DBMS. Sårbarheten er ikke rettet ennå.
- Apache Arrow ved import av komprimerte Parquet-filer. Retting pågår.
- libjxl (bruker Brotli for komprimering av JPEG XL-metadata).
Rettelse under forberedelse. - Arkivprogrammene NanaZip, 7-Zip-zstd og p7zip er sårbare ved utpakking av .br-filer. Sårbarheten vedvarer.
- MuPDF. Sårbarheten har ikke blitt oppdatert.
- UEFI-firmware basert på EDK II og UEFITool, komprimert med Brotli. En rettelse er under forberedelse for EDK II og UEFITool.
- JavaScript-rammeverket Bun. Sårbarheten ble rettet i versjon 1.4.4.
- Istio, en plattform for administrasjon av mikrotjenester. Sårbarheten ble rettet i versjon 1.29.9, 1.30.6 og 1.31.2.
- curl og libcurl, manifesterer sårbarheten seg når en sårbar versjon av libbrotlidec er tilstede i avhengighetene.
- Parsers for the Web Open Font (WOFF) skriftformat, som bruker
Brøttli. - Brotli4j, SumatraPDF, Ghostscript, CatBoost og YTsaurus. Sårbarheten ble rettet i en oppdatering.
Kilde: opennet.ru
