Bibliotēkā, kurā ir Brotli datu saspiešanas dekodētāja atsauces ieviešana, ir identificēta ievainojamība (CVE-2026-111497, koda nosaukumi Broccoli2Shell un HTTP2Shell). Šī ievainojamība, apstrādājot speciāli izveidotos saspiestos datus, izraisa bufera pārpildi. Saskaņā ar Google sniegto informāciju, šo ievainojamību var izmantot attālinātai koda izpildei, uzbrūkot projektiem, kas izmanto oficiālo Brotli dekodētāja ieviešanu. Skartie projekti ietver Node.js, Bun, Envoy, Istio, tīmekļa pārlūkprogrammas, starpniekserverus, HTTP klientus, arhivētājus, starpniekserverus, UEFI programmaparatūru, JPEG XL skatītājus, satura dekodēšanas bibliotēkas Python, Ruby, Java, PHP un .NET, kā arī ar tām saistītās atkarības.
Problēmu šī gada februārī atklāja OpenAI un bloķēja Brotli koda bāzē, dekodēšanas laikā atmetot nederīgas straumes. 22. oktobrī tika publicēti Brotli 1.0.10, 1.1.1 un 1.2.1 ielāpu laidieni, kuros tika skaidri paziņots par labojumu un risināta pamatproblēma. Tajā pašā dienā tika izveidots prototipa izmantojums, kas ļāva attālināti izpildīt kodu laboratorijas apstākļos, izmantojot nestandarta versijas (standarta versijas avarētu). Vēlāk Imperva atklāja uzbrukumu standarta Node.js 24.22.0 versijām. Linux- vide ARM64 sistēmā.
Ievainojamība izraisa ierakstīšanu buferī ārpus robežām nepareizas kļūdu apstrādes dēļ bloku parsēšanas laikā saspiestā straumē. Funkcija DecodeBlockTypeAndLength() atgrieza tikai vērtības “true” un “false”, nevis kļūdas kodu, neļaujot izsaucējam atšķirt straumes bojājumus no stāvokļa, kas prasa funkcijai nodot papildu datus. Ja straumē tika norādīts nepareizs saspiestā datu bloka tips, dekodētājs to interpretēja nevis kā kļūdu, bet gan kā datu neesamības stāvokli, kas prasa papildu datu nolasīšanu no straumes. Tomēr, tā kā piešķirtais buferis nebija paredzēts papildu datu nolasīšanai, dati tika ierakstīti apgabalā ārpus bufera, kurā tika glabāts dekodētāja iekšējais stāvoklis.
Ietekmētie projekti:
- Brotli atsauces bibliotēka — problēma, kas pastāv kopš 1.0.3 laidiena un tika novērsta 1.0.10, 1.1.1 un 1.2.1 atjauninājumos, — ietekmē lietojumprogrammas un bibliotēkas, kas izmanto libbrotlidec bibliotēku.
- Node.js JavaScript platforma tika atjaunināta atjauninājumos 26.12.1, 24.22.1 un 22.23.4. Lietojumprogrammas, kas izmanto fetch() metodi, lai pieprasītu trešo pušu saturu, kas automātiski dekodē HTTP atbildes ar galveni "Content-Encoding: br", var būt neaizsargātas. Ievainojamība izpaužas arī tad, ja tiek tieši izsauktas zlib.brotliDecompress*(), createBrotliDecompress() un brotli.decompress() metodes, lai dekompresētu trešo pušu saturu, vai ja tiek saņemti HTTP pieprasījumi, kas parsēti, izmantojot Express 5 un body-parser 2.x bibliotēkas.
- Python pakotnes brotli un brotlicffi (labojums ierosināts 1.2.1 versijā) un projekti, kas tās izmanto, tostarp populārās bibliotēkas urllib3, aiohttp, httpx un Scrapy, kas, piekļūstot ārējiem tīmekļa resursiem, dekodē atbildes ar galveni "Content-Encoding: br".
- HTTP serveri, HTTP starpniekserveri, HTTP klienti un tīmekļa pārlūkprogrammas, kas atbalsta Brotli saspiešanu ("Accept-Encoding: br"). Apache httpd tiek piegādāts ar mod_brotli (pēc noklusējuma atspējots). Nginx ir pieejams trešās puses modulis ngx_brotli (brotli versija atkarībās ir atjaunināta uz jaunāko versiju). Chrome/Chromium un Firefox pārlūkprogrammās problēma jau ir novērsta iepriekšējā atjauninājumā. Starpniekserverī-serveris Envoy ievainojamība ir novērsta 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12 laidienos.
- .NET izpildlaika ievainojamība, lietojot BrotliDecoder, BrotliStream un HttpClient metodes lietojumprogrammā. Ievainojamība vēl nav novērsta.
- PHP brotli paplašinājums, izmantojot brotli_uncompress() funkciju. Labojums tiek veikts.
- Ruby pakotne Brotli bija ievainojama pret ievainojamībām, izmantojot Brotli.inflate metodi. Ievainojamība vēl nav novērsta.
- DuckDB, importējot saspiestus Parquet failus. Labojums tiek veikts.
- ClickHouse DBMS. Notiek labojumu veikšana.
- YDB DBMS. Ievainojamība vēl nav novērsta.
- Apache Arrow, importējot saspiestus Parquet failus. Labošana notiek.
- libjxl (izmanto Brotli JPEG XL metadatu saspiešanai).
Labojums sagatavošanā. - NanaZip, 7-Zip-zstd un p7zip arhivētāji ir ievainojami, izpakojot .br failus. Ievainojamība joprojām pastāv.
- MuPDF. Šī ievainojamība nav novērsta.
- UEFI programmaparatūra, kuras pamatā ir EDK II un UEFITool, saspiesta ar Brotli. EDK II un UEFITool tiek gatavots labojums.
- Bun JavaScript ietvars. Ievainojamība tika novērsta 1.4.4. versijā.
- Istio, mikropakalpojumu pārvaldības platforma. Ievainojamība tika novērsta 1.29.9, 1.30.6 un 1.31.2 versijās.
- curl un libcurl gadījumā ievainojamība izpaužas, ja atkarībās ir ievainojama libbrotlidec versija.
- Parsētāji Web Open Font (WOFF) fontu formātam, kas izmanto
Brotļi. - Brotli4j, SumatraPDF, Ghostscript, CatBoost un YTsaurus. Ievainojamība tika novērsta atjauninājumā.
Avots: opennet.ru
