'n Kwetsbaarheid (CVE-2026-111497, kodename Broccoli2Shell en HTTP2Shell) is geïdentifiseer in die biblioteek wat die verwysingsimplementering van die Brotli-datakompressie-dekodeerder bevat. Hierdie kwesbaarheid lei tot 'n bufferoorloop wanneer spesiaal vervaardigde saamgeperste data verwerk word. Volgens Google kan hierdie kwesbaarheid gebruik word vir afstandkode-uitvoering wanneer projekte aangeval word wat die amptelike Brotli-dekodeerderimplementering gebruik. Geaffekteerde projekte sluit in Node.js, Bun, Envoy, Istio, webblaaiers, instaanbedieners, HTTP-kliënte, HTTP-bedieners, argiveerders, instaanbedieners, UEFI-firmware, JPEG XL-kykers, inhouddekoderingsbiblioteke vir Python, Ruby, Java, PHP en .NET, en hul geassosieerde afhanklikhede.
Die probleem is in Februarie vanjaar deur OpenAI ontdek en in die Brotli-kodebasis geblokkeer deur ongeldige strome tydens dekodering weg te gooi. Op 22 Oktober is opdaterings van Brotli 1.0.10, 1.1.1 en 1.2.1 gepubliseer, wat die oplossing eksplisiet aangekondig en die onderliggende probleem aangespreek het. Op dieselfde dag is 'n prototipe-uitbuiting geskep wat afstandkode-uitvoering in laboratoriumtoestande moontlik gemaak het met behulp van nie-standaard bouwerk (standaard bouwerk sou ineenstort). Imperva het later 'n aanval op standaard Node.js 24.22.0 bouwerk bespeur. Linux- omgewing op die ARM64-stelsel.
Die kwesbaarheid lei tot 'n buffer-skryf buite perke as gevolg van onbehoorlike fouthantering tydens blokontleding in 'n saamgeperste stroom. Die DecodeBlockTypeAndLength()-funksie het slegs waar- en valswaardes teruggegee in plaas van 'n foutkode, wat verhoed dat die oproeper onderskei tussen stroomkorrupsie en 'n toestand wat vereis dat addisionele data na die funksie deurgegee word. As 'n verkeerde saamgeperste databloktipe in die stroom gespesifiseer is, het die dekodeerder dit nie as 'n fout geïnterpreteer nie, maar as 'n buite-data-toestand wat addisionele lesing van die stroom vereis. Aangesien die toegekende buffer egter nie ontwerp is om addisionele data-lees te akkommodeer nie, is die data na 'n area buite die buffer geskryf wat die dekodeerder se interne toestand gestoor het.
Geaffekteerde projekte:
- Die Brotli-verwysingsbiblioteek, 'n probleem wat sedert vrystelling 1.0.3 bestaan en in opdaterings 1.0.10, 1.1.1 en 1.2.1 reggestel is, beïnvloed toepassings en biblioteke wat die libbrotlidec-biblioteek gebruik.
- Die Node.js JavaScript-platform is opgedateer in opdaterings 26.12.1, 24.22.1 en 22.23.4. Toepassings wat die fetch()-metode gebruik om derdeparty-inhoud aan te vra, wat outomaties HTTP-antwoorde met die "Content-Encoding: br"-koptekst dekodeer, kan kwesbaar wees. Die kwesbaarheid manifesteer ook wanneer die zlib.brotliDecompress*(), createBrotliDecompress() en brotli.decompress()-metodes direk aangeroep word om derdeparty-inhoud te dekomprimeer, of wanneer HTTP-versoeke ontvang word wat deur die Express 5- en body-parser 2.x-biblioteke ontleed is.
- Die Python-pakkette brotli en brotlicffi (regstelling voorgestel in weergawe 1.2.1) en projekte wat hulle gebruik, insluitend die gewilde biblioteke urllib3, aiohttp, httpx en Scrapy, wat antwoorde met die "Content-Encoding: br"-koptekst dekodeer wanneer toegang tot eksterne webbronne verkry word.
- HTTP-bedieners, HTTP-instaanbedieners, HTTP-kliënte en webblaaiers wat Brotli-kompressie ondersteun ("Accept-Encoding: br"). Apache httpd word gestuur met mod_brotli (standaard gedeaktiveer). 'n Derdeparty-module, ngx_brotli, is beskikbaar vir nginx (die brotli-weergawe in afhanklikhede is opgedateer na die nuutste weergawe). In Chrome/Chromium en Firefox is die probleem reeds in 'n vorige opdatering opgelos. In instaanbediener-bediener Die kwesbaarheid van die gesant is reggestel in uitgawes 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12.
- .NET-looptyd wanneer die BrotliDecoder-, BrotliStream- en HttpClient-metodes in 'n toepassing gebruik word. Die kwesbaarheid is nog nie reggestel nie.
- PHP brotli-uitbreiding wanneer die brotli_uncompress()-funksie gebruik word. Herstelwerk word tans gedoen.
- Die Ruby-pakket Brotli was kwesbaar vir aanvalle met behulp van die Brotli.inflate-metode. Die kwesbaarheid is nog nie opgedateer nie.
- DuckDB wanneer saamgeperste Parquet-lêers ingevoer word. Regstelling word tans uitgevoer.
- ClickHouse DBMS. Regstelling aan die gang.
- YDB DBMS. Die kwesbaarheid is nog nie reggestel nie.
- Apache Arrow wanneer saamgeperste Parquet-lêers ingevoer word. Regstelling word tans uitgevoer.
- libjxl (gebruik Brotli vir JPEG XL metadata-kompressie).
Korreksie ter voorbereiding. - NanaZip-, 7-Zip-zstd- en p7zip-argiveerders is kwesbaar wanneer .br-lêers uitgepak word. Die kwesbaarheid bly bestaan.
- MuPDF. Die kwesbaarheid is nog nie opgedateer nie.
- UEFI-firmware gebaseer op EDK II en UEFITool, saamgepers met Brotli. 'n Oplossing is in voorbereiding vir EDK II en UEFITool.
- Bun JavaScript-raamwerk. Die kwesbaarheid is in weergawe 1.4.4 reggestel.
- Istio, 'n mikrodienste-bestuursplatform. Die kwesbaarheid is in weergawes 1.29.9, 1.30.6 en 1.31.2 reggestel.
- curl en libcurl, manifesteer die kwesbaarheid wanneer 'n kwesbare weergawe van libbrotlidec in die afhanklikhede teenwoordig is.
- Parsers for the Web Open Font (WOFF) lettertipeformaat, wat gebruik maak van
Brotli. - Brotli4j, SumatraPDF, Ghostscript, CatBoost, en YTsaurus. Die kwesbaarheid is in 'n opdatering reggestel.
Bron: opennet.ru
