Bibliotekoje, kurioje yra „Brotli“ duomenų glaudinimo dekoderio etaloninė versija, aptiktas pažeidžiamumas (CVE-2026-111497, kodiniai pavadinimai „Broccoli2Shell“ ir „HTTP2Shell“). Šis pažeidžiamumas sukelia buferio perpildymą apdorojant specialiai suspaustus duomenis. „Google“ teigimu, šis pažeidžiamumas gali būti panaudotas nuotoliniam kodo vykdymui atakuojant projektus, kurie naudoja oficialią „Brotli“ dekoderio versiją. Paveikti projektai: „Node.js“, „Bun“, „Envoy“, „Istio“, žiniatinklio naršyklės, tarpiniai serveriai, HTTP klientai, archyvatoriai, UEFI programinė įranga, JPEG XL peržiūros programos, turinio dekodavimo bibliotekos, skirtos „Python“, „Ruby“, „Java“, PHP ir .NET, bei su jomis susijusios priklausomybės.
Šią problemą „OpenAI“ atrado šių metų vasarį ir užblokavo „Brotli“ kodo bazėje, atmesdama negaliojančius srautus dekodavimo metu. Spalio 22 d. buvo paskelbtos „Brotli 1.0.10“, 1.1.1 ir 1.2.1 versijų pataisos, kuriose aiškiai pranešama apie pataisą ir išspręsta pagrindinė problema. Tą pačią dieną buvo sukurtas prototipo išnaudojimo būdas, leidžiantis nuotoliniu būdu vykdyti kodą laboratorinėmis sąlygomis naudojant nestandartines versijas (standartinės versijos užstrigdavo). Vėliau „Imperva“ aptiko ataką prieš standartines „Node.js 24.22.0“ versijas. Linux- aplinka ARM64 sistemoje.
Dėl netinkamo klaidų apdorojimo analizuojant blokus suspaustame sraute, dėl šio pažeidžiamumo buferyje įrašoma informacija už ribų. Funkcija „DecodeBlockTypeAndLength()“ grąžino tik „true“ ir „false“ reikšmes, o ne klaidos kodą, todėl iškvietėjas negalėjo atskirti srauto sugadinimo nuo sąlygos, reikalaujančios perduoti funkcijai papildomus duomenis. Jei sraute buvo nurodytas neteisingas suspausto duomenų bloko tipas, dekoderis tai interpretavo ne kaip klaidą, o kaip duomenų trūkumo sąlygą, reikalaujančią papildomo nuskaitymo iš srauto. Tačiau kadangi paskirtas buferis nebuvo skirtas papildomam duomenų nuskaitymui, duomenys buvo įrašyti į sritį už buferio ribų, kurioje buvo saugoma dekoderio vidinė būsena.
Paveikti projektai:
- „Brotli“ informacinė biblioteka – problema, egzistuojanti nuo 1.0.3 versijos ir ištaisyta 1.0.10, 1.1.1 ir 1.2.1 atnaujinimuose, – paveikia programas ir bibliotekas, kurios naudoja libbrotlidec biblioteką.
- „Node.js“ „JavaScript“ platforma buvo pataisyta atnaujinimuose 26.12.1, 24.22.1 ir 22.23.4. Programos, kurios naudoja „fetch()“ metodą trečiųjų šalių turiniui užklausti, kuris automatiškai dekoduoja HTTP atsakymus su antrašte „Content-Encoding: br“, gali būti pažeidžiamos. Pažeidžiamumas taip pat pasireiškia, kai tiesiogiai iškviečiami metodai zlib.brotliDecompress*(), createBrotliDecompress() ir brotli.decompress() trečiųjų šalių turiniui išskleisti arba kai gaunamos HTTP užklausos, išanalizuotos naudojant „Express 5“ ir „body-parser 2.x“ bibliotekas.
- „Python“ paketai „brotli“ ir „brotlicffi“ (pataisymas pasiūlytas 1.2.1 versijoje) ir juos naudojantys projektai, įskaitant populiarias bibliotekas „urllib3“, „aiohttp“, „httpx“ ir „Scrapy“, kurios dekoduoja atsakymus su antrašte „Content-Encoding: br“, kai bandoma pasiekti išorinius žiniatinklio išteklius.
- HTTP serveriai, HTTP tarpiniai serveriai, HTTP klientai ir žiniatinklio naršyklės, palaikančios „Brotli“ glaudinimą („Accept-Encoding: br“). „Apache httpd“ pateikiamas su mod_brotli (pagal numatytuosius nustatymus išjungtas). „nginx“ skirtas trečiosios šalies modulis „ngx_brotli“ (priklausomybėse esanti „brotli“ versija atnaujinta iki naujausios versijos). „Chrome“ / „Chromium“ ir „Firefox“ naršyklėse problema jau buvo išspręsta ankstesniame atnaujinime. Tarpiniuose serveriuose –serveris „Envoy“ pažeidžiamumas ištaisytas 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12 versijose.
- .NET vykdymo aplinkoje, kai programoje naudojami „BrotliDecoder“, „BrotliStream“ ir „HttpClient“ metodai. Pažeidžiamumas dar nebuvo ištaisytas.
- PHP brotli plėtinys, kai naudojama brotli_uncompress() funkcija. Taisymas vyksta.
- „Ruby“ paketas „Brotli“ buvo pažeidžiamas atakų, naudojančių „Brotli.inflate“ metodą. Pažeidžiamumas dar nebuvo pataisytas.
- „DuckDB“ importuojant suspaustus „Parquet“ failus. Taisymas vyksta.
- „ClickHouse“ DBMS. Taisymas vyksta.
- YDB DBMS. Pažeidžiamumas dar neištaisytas.
- „Apache Arrow“ klaida importuojant suspaustus „Parquet“ failus. Taisymas vyksta.
- libjxl (naudoja „Brotli“ JPEG XL metaduomenų glaudinimui).
Pataisymas ruošiamas. - „NanaZip“, „7-Zip-zstd“ ir „p7zip“ archyvatoriai yra pažeidžiami išpakuojant .br failus. Pažeidžiamumas išlieka.
- MuPDF. Pažeidžiamumas nebuvo pataisytas.
- UEFI programinė įranga, pagrįsta EDK II ir UEFITool, suspausta naudojant „Brotli“. Rengiama EDK II ir UEFITool pataisa.
- „Bun JavaScript“ sistema. Pažeidžiamumas buvo ištaisytas 1.4.4 versijoje.
- „Istio“ – mikropaslaugų valdymo platforma. Pažeidžiamumas buvo ištaisytas 1.29.9, 1.30.6 ir 1.31.2 versijose.
- „curl“ ir „libcurl“ pažeidžiamumas pasireiškia, kai priklausomybėse yra pažeidžiama „libbrotlidec“ versija.
- „Web Open Font“ (WOFF) šrifto formato analizatoriai, kurie naudoja
Brotli. - „Brotli4j“, „SumatraPDF“, „Ghostscript“, „CatBoost“ ir „YTsaurus“. Pažeidžiamumas buvo ištaisytas atnaujinime.
Šaltinis: opennet.ru
