Brotli dekoderindəki kritik bir boşluq Node.JS, Bun, brauzerlər, HTTP klientləri və digər layihələrə təsir göstərir.

Brotli məlumat sıxılma dekoderinin istinad tətbiqini ehtiva edən kitabxanada bir zəiflik (CVE-2026-111497, kod adları Broccoli2Shell və HTTP2Shell) müəyyən edilmişdir. Bu zəiflik xüsusi hazırlanmış sıxılmış məlumatları emal edərkən bufer daşmasına səbəb olur. Google-a görə, bu zəiflik rəsmi Brotli dekoder tətbiqindən istifadə edən layihələrə hücum edərkən uzaqdan kod icrası üçün istifadə edilə bilər. Təsirə məruz qalan layihələrə Node.js, Bun, Envoy, Istio, veb brauzerlər, proksi serverlər, HTTP klientləri, HTTP serverləri, arxivatorlar, proksi serverlər, UEFI proqram təminatı, JPEG XL görüntüləyiciləri, Python, Ruby, Java, PHP və .NET üçün məzmun dekodlaşdırma kitabxanaları və onlarla əlaqəli asılılıqlar daxildir.

Problem bu ilin fevral ayında OpenAI tərəfindən aşkar edilmiş və dekodlaşdırma zamanı etibarsız axınları silməklə Brotli kod bazasında bloklanmışdır. 22 oktyabrda Brotli 1.0.10, 1.1.1 və 1.2.1 yamaq buraxılışları dərc edildi, düzəliş açıq şəkildə elan edildi və əsas problemi həll etdi. Elə həmin gün qeyri-standart quruluşlardan istifadə edərək laboratoriya şəraitində uzaqdan kod icrasına imkan verən prototip istismarı yaradıldı (standart quruluşlar çökərdi). Daha sonra Imperva standart Node.js 24.22.0 quruluşlarına hücum aşkar etdi. Linux- ARM64 sistemindəki mühit.

Bu zəiflik, sıxılmış axında blok təhlili zamanı səhvlərin düzgün işlənməməsi səbəbindən buferin sərhəddən kənar yazılmasına səbəb olur. DecodeBlockTypeAndLength() funksiyası səhv kodu əvəzinə yalnız doğru və yalan dəyərlər qaytarır və bu da çağıranın axın korlanması ilə funksiyaya əlavə məlumatların ötürülməsini tələb edən şərt arasında fərq qoymasına mane olur. Axında səhv sıxılmış məlumat bloku növü göstərilibsə, dekoder bunu səhv kimi deyil, axından əlavə oxunma tələb edən məlumat xaricində olan şərt kimi şərh edir. Lakin, ayrılmış bufer əlavə məlumatların oxunmasını təmin etmək üçün nəzərdə tutulmadığından, məlumatlar dekoderin daxili vəziyyətini saxlayan buferin xaricindəki bir sahəyə yazılırdı.

Təsirə məruz qalan layihələr:

  • 1.0.3 versiyasından bəri mövcud olan və 1.0.10, 1.1.1 və 1.2.1 yeniləmələrində həll edilən Brotli istinad kitabxanası problemi libbrotlidec kitabxanasından istifadə edən tətbiqlərə və kitabxanalara təsir göstərir.
  • Node.js JavaScript platforması 26.12.1, 24.22.1 və 22.23.4 yeniləmələrində yamaqlanmışdır. Üçüncü tərəf məzmununu tələb etmək üçün fetch() metodundan istifadə edən və HTTP cavablarını "Content-Encoding: br" başlığı ilə avtomatik olaraq deşifrə edən tətbiqlər həssas ola bilər. Zəiflik, həmçinin üçüncü tərəf məzmununu deşifrə etmək üçün zlib.brotliDecompress*(), createBrotliDecompress() və brotli.decompress() metodlarını birbaşa çağırdıqda və ya Express 5 və body-parser 2.x kitabxanaları vasitəsilə təhlil edilmiş HTTP sorğuları alındıqda özünü göstərir.
  • Python, xarici veb resurslarına daxil olarkən "Content-Encoding: br" başlığı ilə cavabları deşifrə edən məşhur urllib3, aiohttp, httpx və Scrapy kitabxanaları da daxil olmaqla, brotli və brotlicffi (düzəliş 1.2.1 versiyasında təklif olunub) və onlardan istifadə edən layihələri paketləyir.
  • HTTP serverləri, HTTP proksiləri, HTTP klientləri və Brotli sıxılmasını dəstəkləyən veb brauzerlər ("Qəbul-Kodlaşdırma: br"). Apache httpd mod_brotli ilə göndərilir (standart olaraq deaktivdir). Nginx üçün üçüncü tərəf modulu, ngx_brotli, mövcuddur (asılılıqlardakı brotli versiyası ən son versiyaya yenilənib). Chrome/Chromium və Firefox-da problem əvvəlki yeniləmədə artıq həll edilib. Proksi-də-server Envoy zəifliyi 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12 versiyalarında düzəldilib.
  • Tətbiqdə BrotliDecoder, BrotliStream və HttpClient metodlarından istifadə edərkən .NET işləmə müddəti. Zəiflik hələ düzəldilməyib.
  • brotli_uncompress() funksiyasından istifadə edərkən PHP brotli uzantısı. Düzəlmə davam edir.
  • Brotli Ruby paketi Brotli.inflate metodundan istifadə edərək istismarlara qarşı həssas idi. Zəiflik hələ də düzəldilməyib.
  • Sıxılmış Parket fayllarını idxal edərkən DuckDB. Düzəlmə prosesi davam edir.
  • ClickHouse DBMS. Düzəlmə prosesi gedir.
  • YDB DBMS. Zəiflik hələ düzəldilməyib.
  • Sıxılmış Parket fayllarını idxal edərkən Apache Ox işarəsi. Düzəlmə prosesi davam edir.
  • libjxl (JPEG XL metaməlumatlarının sıxılması üçün Brotli istifadə edir).
    Hazırlıq mərhələsində düzəliş.
  • NanaZip, 7-Zip-zstd və p7zip arxivatorları .br fayllarını açarkən həssasdırlar. Zəiflik hələ də qalır.
  • MuPDF. Zəiflik düzəldilməyib.
  • Brotli ilə sıxılmış EDK II və UEFITool əsaslı UEFI proqram təminatı. EDK II və UEFITool üçün düzəliş hazırlanır.
  • Bun JavaScript çərçivəsi. Zəiflik 1.4.4 versiyasında düzəldildi.
  • Mikroservislərin idarəetmə platforması olan Istio. Zəiflik 1.29.9, 1.30.6 və 1.31.2 versiyalarında aradan qaldırıldı.
  • curl və libcurl-da, zəiflik asılılıqlarda libbrotlidec-in həssas versiyası mövcud olduqda özünü göstərir.
  • Veb Açıq Şrift (WOFF) şrift formatı üçün parserlər, hansı ki, istifadə edir
    Brotli.
  • Brotli4j, SumatraPDF, Ghostscript, CatBoost və YTsaurus. Zəiflik yeniləmədə aradan qaldırıldı.

Mənbə: opennet.ru

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster