En kritisk sårbarhet i Brotli-dekoderen påvirker Node.JS, Bun, nettlesere, HTTP-klienter og andre prosjekter.

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

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster