Kritična ranjivost u Brotli dekoderu utiče na Node.JS, Bun, preglednike, HTTP klijente i druge projekte.

Ranjivost (CVE-2026-111497, kodna imena Broccoli2Shell i HTTP2Shell) identificirana je u biblioteci koja sadrži referentnu implementaciju dekodera za kompresiju podataka Brotli. Ova ranjivost dovodi do prelijevanja bafera prilikom obrade posebno izrađenih komprimiranih podataka. Prema Googleu, ova ranjivost se može koristiti za udaljeno izvršavanje koda prilikom napada na projekte koji koriste službenu implementaciju dekodera Brotli. Pogođeni projekti uključuju Node.js, Bun, Envoy, Istio, web preglednike, proxy servere, HTTP klijente, HTTP servere, arhivere, proxy servere, UEFI firmver, JPEG XL preglednike, biblioteke za dekodiranje sadržaja za Python, Ruby, Java, PHP i .NET, te njihove povezane zavisnosti.

Problem je otkrio OpenAI u februaru ove godine i blokirao ga u Brotli kodnoj bazi odbacivanjem nevažećih streamova tokom dekodiranja. Dana 22. oktobra objavljena su zakrpe za Brotli 1.0.10, 1.1.1 i 1.2.1, koje su eksplicitno najavile ispravku i riješile osnovni problem. Istog dana, kreiran je prototip exploita koji je omogućavao udaljeno izvršavanje koda u laboratorijskim uslovima korištenjem nestandardnih verzija (standardne verzije bi se rušile). Imperva je kasnije otkrila napad na standardne Node.js 24.22.0 verzije. Linux- okruženje na ARM64 sistemu.

Ranjivost rezultira pisanjem u bafer izvan granica zbog nepravilnog rukovanja greškama tokom parsiranja blokova u komprimovanom toku. Funkcija DecodeBlockTypeAndLength() vraćala je samo vrijednosti true i false umjesto koda greške, što je spriječilo pozivaoca da razlikuje oštećenje toka od stanja koje zahtijeva prosljeđivanje dodatnih podataka funkciji. Ako je u toku naveden pogrešan tip komprimovanog bloka podataka, dekoder ga nije interpretirao kao grešku, već kao stanje nedostatka podataka koje zahtijeva dodatno čitanje iz toka. Međutim, budući da dodijeljeni bafer nije bio dizajniran za smještaj dodatnih podataka za čitanje, podaci su upisani u područje izvan bafera koje je pohranjivalo interno stanje dekodera.

Pogođeni projekti:

  • Referentna biblioteka Brotli, problem koji je prisutan od verzije 1.0.3 i ispravljen je u ažuriranjima 1.0.10, 1.1.1 i 1.2.1, utiče na aplikacije i biblioteke koje koriste biblioteku libbrotlidec.
  • Node.js JavaScript platforma je ažurirana u ažuriranjima 26.12.1, 24.22.1 i 22.23.4. Aplikacije koje koriste metodu fetch() za zahtjev sadržaja treće strane, koja automatski dekodira HTTP odgovore sa zaglavljem "Content-Encoding: br", mogu biti ranjive. Ranjivost se također manifestira prilikom direktnog pozivanja metoda zlib.brotliDecompress*(), createBrotliDecompress() i brotli.decompress() za dekompresiju sadržaja treće strane ili prilikom primanja HTTP zahtjeva parsiranih putem biblioteka Express 5 i body-parser 2.x.
  • Python paketi brotli i brotlicffi (ispravka predložena u verziji 1.2.1) i projekti koji ih koriste, uključujući popularne biblioteke urllib3, aiohttp, httpx i Scrapy, koje dekodiraju odgovore sa zaglavljem "Content-Encoding: br" prilikom pristupanja vanjskim web resursima.
  • HTTP serveri, HTTP proxyji, HTTP klijenti i web preglednici koji podržavaju Brotli kompresiju ("Accept-Encoding: br"). Apache httpd se isporučuje s mod_brotli (onemogućeno prema zadanim postavkama). Modul treće strane, ngx_brotli, dostupan je za nginx (verzija brotli u ovisnostima je ažurirana na najnoviju verziju). U Chromeu/Chromiumu i Firefoxu, problem je već riješen u prethodnom ažuriranju. U proxy-server Ranjivost Envoy-a je ispravljena u izdanjima 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12.
  • .NET runtime pri korištenju metoda BrotliDecoder, BrotliStream i HttpClient u aplikaciji. Ranjivost još nije ispravljena.
  • PHP brotli ekstenzija pri korištenju funkcije brotli_uncompress(). Ispravka u toku.
  • Ruby paket Brotli bio je ranjiv na zloupotrebe korištenjem metode Brotli.inflate. Ranjivost još nije ispravljena.
  • DuckDB prilikom uvoza komprimiranih Parquet datoteka. Ispravka u toku.
  • ClickHouse DBMS. Popravka u toku.
  • YDB DBMS. Ranjivost još nije ispravljena.
  • Apache Arrow prilikom uvoza komprimiranih Parquet datoteka. Ispravka u toku.
  • libjxl (koristi Brotli za kompresiju JPEG XL metapodataka).
    Ispravka u pripremi.
  • Arhivatori NanaZip, 7-Zip-zstd i p7zip su ranjivi prilikom raspakivanja .br datoteka. Ranjivost i dalje postoji.
  • MuPDF. Ranjivost nije ispravljena.
  • UEFI firmver baziran na EDK II i UEFITool-u, komprimovan pomoću Brotli-ja. Ispravka je u pripremi za EDK II i UEFITool.
  • Bun JavaScript framework. Ranjivost je ispravljena u verziji 1.4.4.
  • Istio, platforma za upravljanje mikroservisima. Ranjivost je ispravljena u verzijama 1.29.9, 1.30.6 i 1.31.2.
  • curl i libcurl, ranjivost se manifestuje kada je ranjiva verzija libbrotlideca prisutna u zavisnostima.
  • Parseri za format fonta Web Open Font (WOFF), koji koristi
    Brotli.
  • Brotli4j, SumatraPDF, Ghostscript, CatBoost i YTsaurus. Ranjivost je ispravljena u ažuriranju.

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster