Kritična ranljivost v dekoderju Brotli vpliva na Node.JS, Bun, brskalnike, odjemalce HTTP in druge projekte.

V knjižnici, ki vsebuje referenčno implementacijo dekoderja stiskanja podatkov Brotli, je bila odkrita ranljivost (CVE-2026-111497, kodni imeni Broccoli2Shell in HTTP2Shell). Ta ranljivost povzroči prelivanje medpomnilnika pri obdelavi posebej izdelanih stisnjenih podatkov. Po Googlovih podatkih se ta ranljivost lahko uporabi za oddaljeno izvajanje kode pri napadih na projekte, ki uporabljajo uradno implementacijo dekoderja Brotli. Prizadeti projekti vključujejo Node.js, Bun, Envoy, Istio, spletne brskalnike, proxy strežnike, odjemalce HTTP, arhivarje, proxy strežnike, vdelano programsko opremo UEFI, pregledovalnike JPEG XL, knjižnice za dekodiranje vsebine za Python, Ruby, Javo, PHP in .NET ter njihove povezane odvisnosti.

Težavo je OpenAI odkril februarja letos in jo blokiral v kodni bazi Brotli tako, da je med dekodiranjem zavrgel neveljavne tokove. 22. oktobra so bile objavljene izdaje popravkov za Brotli 1.0.10, 1.1.1 in 1.2.1, ki so izrecno napovedale popravek in obravnavale osnovno težavo. Istega dne je bil ustvarjen prototip izkoriščanja, ki je omogočal oddaljeno izvajanje kode v laboratorijskih pogojih z uporabo nestandardnih gradenj (standardne gradnje so se sesule). Imperva je kasneje zaznal napad na standardne gradnje Node.js 24.22.0. Linux- okolje na sistemu ARM64.

Ranljivost povzroči pisanje v medpomnilnik izven meja zaradi nepravilnega obravnavanja napak med razčlenjevanjem blokov v stisnjenem toku. Funkcija DecodeBlockTypeAndLength() je namesto kode napake vrnila le vrednosti true in false, kar je klicatelju preprečilo razlikovanje med poškodbo toka in stanjem, ki zahteva dodatne podatke, ki jih je treba posredovati funkciji. Če je bil v toku določen napačen tip stisnjenega podatkovnega bloka, ga dekoder ni interpretiral kot napako, temveč kot stanje izven podatkov, ki zahteva dodatno branje iz toka. Ker pa dodeljeni medpomnilnik ni bil zasnovan za shranjevanje dodatnega branja podatkov, so bili podatki zapisani v območje zunaj medpomnilnika, ki je shranjevalo notranje stanje dekoderja.

Prizadeti projekti:

  • Referenčna knjižnica Brotli, težava, ki je prisotna že od izdaje 1.0.3 in je bila odpravljena v posodobitvah 1.0.10, 1.1.1 in 1.2.1, vpliva na aplikacije in knjižnice, ki uporabljajo knjižnico libbrotlidec.
  • Platforma Node.js JavaScript je bila popravljena v posodobitvah 26.12.1, 24.22.1 in 22.23.4. Aplikacije, ki uporabljajo metodo fetch() za zahtevanje vsebine tretjih oseb, ki samodejno dekodira odgovore HTTP z glavo »Content-Encoding: br«, so lahko ranljive. Ranljivost se pokaže tudi pri neposrednem klicanju metod zlib.brotliDecompress*(), createBrotliDecompress() in brotli.decompress() za razpakiranje vsebine tretjih oseb ali pri prejemanju zahtev HTTP, razčlenjenih prek knjižnic Express 5 in body-parser 2.x.
  • Paketa Python brotli in brotlicffi (popravek predlagan v različici 1.2.1) in projekti, ki ju uporabljajo, vključno s priljubljenimi knjižnicami urllib3, aiohttp, httpx in Scrapy, ki dekodirajo odgovore z glavo »Content-Encoding: br« pri dostopu do zunanjih spletnih virov.
  • HTTP strežniki, HTTP posredniki, HTTP odjemalci in spletni brskalniki, ki podpirajo stiskanje Brotli ("Accept-Encoding: br"). Apache httpd je dobavljen z mod_brotli (privzeto onemogočen). Za nginx je na voljo modul drugega proizvajalca, ngx_brotli (različica brotli v odvisnostih je bila posodobljena na najnovejšo različico). V brskalnikih Chrome/Chromium in Firefox je bila težava že odpravljena v prejšnji posodobitvi. V proxy-strežnika Ranljivost Envoy je odpravljena v izdajah 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12.
  • Izvajalno okolje .NET pri uporabi metod BrotliDecoder, BrotliStream in HttpClient v aplikaciji. Ranljivost še ni bila odpravljena.
  • Razširitev brotli v PHP pri uporabi funkcije brotli_uncompress(). Popravek v teku.
  • Rubyjev paket Brotli je bil ranljiv za izkoriščanje z metodo Brotli.inflate. Ranljivost še ni bila odpravljena.
  • DuckDB pri uvozu stisnjenih datotek Parquet. Popravek v teku.
  • ClickHouse DBMS. Popravek v teku.
  • YDB DBMS. Ranljivost še ni bila odpravljena.
  • Apache Arrow pri uvozu stisnjenih datotek Parquet. Popravek v teku.
  • libjxl (uporablja Brotli za stiskanje metapodatkov JPEG XL).
    Popravek v pripravi.
  • Arhivniki NanaZip, 7-Zip-zstd in p7zip so ranljivi pri razpakiranju datotek .br. Ranljivost ostaja.
  • MuPDF. Ranljivost ni bila odpravljena.
  • Vdelana programska oprema UEFI, ki temelji na EDK II in UEFITool, stisnjena z Brotli. Popravek za EDK II in UEFITool je v pripravi.
  • Okvir Bun JavaScript. Ranljivost je bila odpravljena v različici 1.4.4.
  • Istio, platforma za upravljanje mikroservisov. Ranljivost je bila odpravljena v različicah 1.29.9, 1.30.6 in 1.31.2.
  • curl in libcurl, se ranljivost pokaže, ko je v odvisnostih prisotna ranljiva različica libbrotlidec.
  • Razčlenjevalniki za format pisave Web Open Font (WOFF), ki uporablja
    Brotli.
  • Brotli4j, SumatraPDF, Ghostscript, CatBoost in YTsaurus. Ranljivost je bila odpravljena v posodobitvi.

Vir: opennet.ru

Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster