Brotli декодеріндегі маңызды осалдық Node.JS, Bun, браузерлерге, HTTP клиенттеріне және басқа жобаларға әсер етеді.

Brotli деректерді сығымдау декодерінің анықтамалық іске асырылуын қамтитын кітапханада осалдық (CVE-2026-111497, Broccoli2Shell және HTTP2Shell кодтық атаулары) анықталды. Бұл осалдық арнайы жасалған сығымдалған деректерді өңдеу кезінде буфердің толып кетуіне әкеледі. Google мәліметтері бойынша, бұл осалдықты Brotli ресми декодерінің іске асырылуын пайдаланатын жобаларға шабуыл жасаған кезде кодты қашықтан орындау үшін пайдалануға болады. Әсер етілген жобаларға Node.js, Bun, Envoy, Istio, веб-шолғыштар, прокси-серверлер, HTTP клиенттері, HTTP серверлері, мұрағатшылар, прокси-серверлер, UEFI микробағдарламасы, JPEG XL қарау құралдары, Python, Ruby, Java, PHP және .NET үшін мазмұнды декодтау кітапханалары және олармен байланысты тәуелділіктер кіреді.

Мәселені OpenAI осы жылдың ақпан айында анықтап, декодтау кезінде жарамсыз ағындарды алып тастау арқылы Brotli код базасында бұғаттады. 22 қазанда Brotli 1.0.10, 1.1.1 және 1.2.1 патч шығарылымдары жарияланды, онда түзету туралы ашық айтылып, негізгі мәселені шешілді. Сол күні стандартты емес құрастыруларды пайдаланып зертханалық жағдайларда кодты қашықтан орындауға мүмкіндік беретін прототиптік эксплойт жасалды (стандартты құрастырулар істен шығады). Кейінірек Imperva стандартты Node.js 24.22.0 құрастыруларына шабуылды анықтады. Linux- ARM64 жүйесіндегі орта.

Осалдық сығылған ағында блокты талдау кезінде қателерді дұрыс өңдемеу салдарынан шектен тыс буфер жазуына әкеледі. DecodeBlockTypeAndLength() функциясы қате кодының орнына тек шын және жалған мәндерді қайтарды, бұл шақырушыға ағынның бұзылуы мен функцияға қосымша деректерді беруді қажет ететін шартты ажыратуға мүмкіндік бермеді. Егер ағында дұрыс емес сығылған деректер блогының түрі көрсетілсе, декодер оны қате ретінде емес, ағыннан қосымша оқуды қажет ететін деректерден тыс шарт ретінде түсіндірді. Дегенмен, бөлінген буфер қосымша деректерді оқуға арналмағандықтан, деректер декодердің ішкі күйін сақтайтын буферден тыс аймаққа жазылды.

Әсер етілген жобалар:

  • Brotli анықтамалық кітапханасы, 1.0.3 нұсқасынан бері бар мәселе және 1.0.10, 1.1.1 және 1.2.1 жаңартуларында түзетілген, libbrotlidec кітапханасын пайдаланатын қолданбалар мен кітапханаларға әсер етеді.
  • Node.js JavaScript платформасы 26.12.1, 24.22.1 және 22.23.4 жаңартуларында патчтармен жаңартылды. Үшінші тарап мазмұнын сұрау үшін fetch() әдісін пайдаланатын, HTTP жауаптарын "Content-Encoding: br" тақырыбымен автоматты түрде декодтайтын қолданбалар осал болуы мүмкін. Осалдық үшінші тарап мазмұнын декодтау үшін zlib.brotliDecompress*(), createBrotliDecompress() және brotli.decompress() әдістерін тікелей шақырған кезде немесе Express 5 және body-parser 2.x кітапханалары арқылы талданған HTTP сұрауларын алған кезде де көрінеді.
  • Python brotli және brotlicffi (1.2.1 нұсқасында ұсынылған түзету) және оларды пайдаланатын жобаларды, соның ішінде сыртқы веб-ресурстарға кірген кезде "Content-Encoding: br" тақырыбымен жауаптарды декодтайтын танымал urllib3, aiohttp, httpx және Scrapy кітапханаларын пакеттейді.
  • HTTP серверлері, HTTP проксилері, HTTP клиенттері және Brotli қысуын қолдайтын веб-шолғыштар («Қабылдау-кодтау: br»). Apache httpd mod_brotli арқылы жеткізіледі (әдепкі бойынша өшірілген). nginx үшін үшінші тарап модулі, ngx_brotli, қолжетімді (тәуелділіктердегі brotli нұсқасы соңғы нұсқаға жаңартылды). Chrome/Chromium және Firefox жүйелерінде мәселе алдыңғы жаңартуда шешілген. Прокси-сервер Envoy осалдығы 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12 шығарылымдарында түзетілді.
  • Қолданбада BrotliDecoder, BrotliStream және HttpClient әдістерін пайдаланған кезде .NET жұмыс уақыты. Осалдық әлі жөнделмеген.
  • brotli_uncompress() функциясын пайдаланған кезде PHP brotli кеңейтімі. Түзету жұмыстары жүргізілуде.
  • Brotli Ruby пакеті Brotli.inflate әдісін қолданған кезде эксплойттарға осал болды. Осалдық әлі жөнделмеген.
  • Сығылған паркет файлдарын импорттау кезінде DuckDB қатесі. Түзету жұмыстары жүргізілуде.
  • ClickHouse ДҚБЖ. Түзету жұмыстары жүргізілуде.
  • YDB ДҚБЖ. Осалдық әлі түзетілген жоқ.
  • Сығылған паркет файлдарын импорттау кезіндегі Apache көрсеткісі. Түзету жұмыстары жүргізілуде.
  • libjxl (JPEG XL метадеректерін сығу үшін Brotli пайдаланады).
    Дайындық кезіндегі түзету.
  • NanaZip, 7-Zip-zstd және p7zip мұрағатшылары .br файлдарын ашу кезінде осал болады. Осалдық сақталады.
  • MuPDF. Осалдық жөнделмеген.
  • Brotli көмегімен сығылған EDK II және UEFITool негізіндегі UEFI микробағдарламасы. EDK II және UEFITool үшін түзету дайындалуда.
  • Bun JavaScript құрылымы. Осалдық 1.4.4 нұсқасында түзетілді.
  • Istio, микросервистерді басқару платформасы. Осалдық 1.29.9, 1.30.6 және 1.31.2 нұсқаларында түзетілді.
  • curl және libcurl жүйелерінде осалдық тәуелділіктерде libbrotlidec-тің осал нұсқасы болған кезде көрінеді.
  • Веб ашық қаріп (WOFF) қаріп пішіміне арналған парсерлерді пайдаланады
    Бротли.
  • Brotli4j, SumatraPDF, Ghostscript, CatBoost және YTsaurus. Осалдық жаңартуда түзетілді.

Ақпарат көзі: opennet.ru

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster