Google'ning Brotli dekoderidagi xotira buzilishi xatosi Brotli bilan siqilgan ma'lumotlarni ochadigan ko'plab dasturlarda uchraydi, jumladan Bun, Microsoft'ning .NET, Python Brotli va brotlicffi paketlari, hamda Brotli dekompressiyasini sozlashgan Envoy proksilarida.

CVE-2026-111497 sifatida kuzatilgan bu xato maxsus tayyorlangan siqilgan ma'lumotlar bufer oxiridan o'tib yozilishiga va dastur xotirasini buzishiga imkon beradi, bu esa potentsial ravishda ishdan chiqish, xotira sizib chiqishi yoki hujumchi nazoratidagi kodni bajarilishiga olib kelishi mumkin.

Imperva tadqiqotchilari kodni bitta yangilanmagan Node.js qurilmasida bajarish mumkinligini ko'rsatdi. Boshqa dasturlarda bu hali namoyish etilmagan va haqiqiy dunyoda hujumlar haqida xabar berilmagan.

Xato birinchi marta 21-oktabrda e'lon qilindi, o'shanda Node.js va Google tuzatishlarni chiqardi, shundan beri har bir mahsulot bo'yicha ko'proq tuzatishlar keldi. Xato Google dekoderida bo'lgani va har bir dastur o'z nusxasini o'zi yangilashi kerakligi sababli, har biri o'z nusxasini mustaqil ravishda yangilashi kerak.

Brotli — Google'dan kelgan siqish formati bo'lib, veb-sahifalar va boshqa trafikni kichraytirish uchun keng qo'llaniladi. Xato Brotli oqimini ochadigan C kodida, shuning uchun u til muhitlaridan proksilargacha, Python paketlarigacha ushbu kodni qayta ishlatadigan har narsaga tarqaladi.

Qaysi dasturlar ta'sirlangan

MahsulotTa'sirlanganTuzatilganQachon ochiq
Google Brotli (C kutubxonasi)1.0.3 dan 1.2.0 gacha1.0.10, 1.1.1, 1.2.1kod ishonchsiz Brotli'ni dekodlasa
Node.js22.x, 24.x, 26.x tuzatishdan oldin; 20.x va eski (hayot tugagan)22.23.4, 24.22.1, 26.12.1fetch() br javobi, yoki Express yoki body-parser br tanalari
Bun1.4.3 va undan oldin1.4.4fetch() br javobi, yoki node:zlib
.NET8.0, 9.0, 10.0 tuzatishdan oldin, 11.0 oldindan ko'rish RC3 dan oldin8.0.33, 9.0.22, 10.0.14, 11.0 RC3faqat ASP.NET Core so'rov dekompressiyasida yoki HttpClient dekompressiyasida Brotli yoqilgan bo'lsa, yoki Brotli API'lari ishonchsiz ma'lumotni dekodlasa
Envoy1.39.2, 1.38.5, 1.37.7, 1.36.111.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12faqat Brotli dekompressor sozlangan bo'lsa
Istio1.31.0 dan 1.31.1, 1.30.0 dan 1.30.5, 1.29.0 dan 1.29.81.31.2, 1.30.6, 1.29.9faqat Brotli dekompressiyasi yoqilgan bo'lsa
Python Brotli1.2.0 va undan oldin1.2.1o'rnatilgan, va HTTP mijozi br ni dekodlasa
Python brotlicffi1.2.0.x va undan oldin1.2.1.0o'rnatilgan, va HTTP mijozi br ni dekodlasa
cdxgenmustaqil binarlar va tasvirlar, 13.4.0 va 12.8.8 va undan oldin13.5.0, 12.8.9mustaqil binar yoki tasvir ishonchsiz kirishni skanerlasa

Dastur faqat kimdir nazorat qiladigan Brotli ma'lumotlarini dekodlasa ochiq bo'ladi. Node.js va Bun uchun bu o'rnatilgan fetch() Content-Encoding: br bilan yuborilgan javobni o'qiganda, yoki Express 5 va body-parser 2 kabi so'rov tanasi kodlari Brotli yuklamasini ochganda sodir bo'ladi. Oddiy Node.js HTTP serveri so'rov tanalarini o'zi dekodlamaydi.

Envoy va Istio faqat Brotli dekompressiyasi yoqilgan bo'lsa, masalan Envoy filtri orqali, ta'sirlanadi. U o'chirilgan bo'lsa, xatoga erishib bo'lmaydi.

Python'da xavf Brotli yoki brotlicffi paketi o'rnatilgan bo'lishidan kelib chiqadi. Ular mavjud bo'lgach, requests, urllib3, httpx va aiohttp kabi HTTP mijozlari Brotli javoblarini o'zlari dekodlaydi, shuning uchun dastur o'z kodida Brotli'ni import qilmasa ham ochiq bo'lishi mumkin.

Veb-ilova xavfsizlik devori (WAF) faqat ma'lum darajada yordam beradi. E'lon kunida xavfsizlik devori qoidalarini qo'shgan Vercel, bu qoidalar "sizning funksiyalaringiz boshqa serverlardan oladigan javoblarni" qamrab olmasligini aytdi. Bu yo'l uchun faqat muhit yoki kutubxonani yangilash teshikni yopadi.

Xato qanchalik uzoqqa surilishi mumkinligi dasturga bog'liq. Imperva'ning Red Team'i, o'z ishini Node2Shell deb ataydi, Linux ARM64 uchun yangilanmagan Node.js 24.22.0 qurilmasida hujumchi taqdim etgan kodni bajarib, uni ham olingan javob, ham Express so'rov tanasi sifatida yetkazdi. Ekspluatatsiya bir necha urinishni talab qildi, e'lon qilinmadi va boshqa qurilmalarda sinovdan o'tkazilmadi.

Xatoni xabar qilgan OpenAI'ning Codex Security jamoasi uni Brotli'da autentifikatsiyasiz masofaviy kod bajarilishiga imkon beruvchi deb ta'riflaydi va Node.js, Bun va Envoy'ni ta'sirlangan dasturlar sifatida ro'yxatga oladi. Ularning hisobida xato har ikki yo'nalishda ishlaydi: yangilanmagan server siqilgan kirishni qabul qilsa, yomon niyatli mijoz tomonidan egallanishi mumkin, va siqilgan kirishni qabul qiladigan yangilanmagan mijoz (masalan "curl --compressed") yomon niyatli server tomonidan egallanishi mumkin.

Haqiqiy dunyoda ekspluatatsiya haqida xabar berilmagan. CISA'ning 23-oktabrdagi bahosi ekspluatatsiyani "yo'q" va avtomatlashtirishni "yo'q" deb qayd etdi, Red Hat esa kodni bajarish uchun ishonchli ommaviy isbot-konsepsiya yo'qligini aytdi.

Jiddiylik baholari kim baholayotganiga qarab farq qiladi. CVE'ni tayinlagan Google uni CVSS 4.0 shkalasi bo'yicha 9.2, ya'ni kritik deb baholaydi. Node.js uni yuqori, Red Hat esa 8.1, ya'ni muhim deb baholaydi. Microsoft .NET uchun 8.1, ya'ni yuqori deb baholaydi.

Tuzatishning g'ayrioddiy tarixi bor. Xatoni yopadigan o'zgarish Brotli manba kodiga 27-fevralda qo'shilgan, lekin 21-oktabrgacha hech qanday yangi Brotli relizi uni o'z ichiga olmagan. OpenAI aytishicha, asosiy sabab "aslida Brotli manba kodida fevralda tuzatilgan, lekin o'sha paytda bu xavfsizlik zaifligiga olib kelishi ma'lum emas edi va Brotli'ning yangi relizi yo'q edi."

Node.js xatoni xabar qilgan OpenAI Codex Security'dan Khai Tran va Sylvie Mayer'ni, hamda tuzatish uchun Matteo Collina va Antoine du Hamel'ni kreditlaydi.

Hozir nima qilish kerak

Yuqoridagi jadvaldan tuzatilgan versiyaga yangilang, so'ngra xizmatni qayta ishga tushiring va har qanday konteyner tasvirini qayta quring, chunki ishlayotgan jarayon qayta ishga tushguncha eski dekoderni saqlaydi.

Agar hozircha yangilay olmasangiz, ishonchsiz Brotli'ni dekodlashni to'xtating. OpenAI'ning e'lon sahifasi va Aikido xavfsizlik firmasi ikkalasi ham tavsiya qiladi:

  • Har qanday proksi yoki parser tanani dekodlashdan oldin Content-Encoding: br bilan kiruvchi so'rovlarni rad eting.
  • HTTP mijozlarida avtomatik Brotli dekodlashni o'chiring va Brotli javoblarini dekodlashdan oldin rad eting.
  • Python'da Brotli va brotlicffi paketlarini o'chiring, shunda mijozlar gzip va deflate'ga qaytadi.

Accept-Encoding sarlavhasidan br ni tushirish o'zi yetarli emas, chunki server mijoz nima so'rashidan qat'i nazar Brotli yuborishi mumkin. Node.js uchun hech qanday vaqtinchalik yechim e'lon qilinmagan, shuning uchun muhitni yangilash yagona tuzatishdir.

Tizim paketlari turli vaqtlarda tuzatilmoqda. Debian o'z brotli paketini Debian 13 (trixie) uchun 23-oktabrda 1.1.0-2+deb13u1 versiyasida, va keyinchalik Debian 12 (bookworm) uchun 1.0.9-2+deb12u1 versiyasida tuzatdi. Amazon Linux 2023, 22-oktabrda brotli va Node.js 24 paketlarini tuzatish kutilayotgan deb ro'yxatga olgan, 24-oktabrda ikkalasining tuzatilgan versiyalarini chiqardi. openSUSE Tumbleweed brotli va Node.js 24 paketlarini tuzatdi, SUSE'ning SUSE Linux Enterprise 15 uchun Node.js 22 yangilanishlari 26-oktabr holatiga ko'ra hali sinovda edi. Ubuntu hali ham ro'yxatga olingan barcha relizlarida brotli va nodejs paketlarini baholash kerak deb ko'rsatmoqda.

Bog'liqlik skanerlari Python paketlarini hali ham aniqlamasligi mumkin. CVE yozuvi Google Brotli omborini nomlaydi, PyPI paketlarini emas, va GitHub maslahati hali ham ta'sirlangan paket yo'qligini ro'yxatga oladi, bu Dependabot o'qiydigan narsadir. Ikki Python paketi uchun maslahatchi yozuvlari, PYSEC-2026-4322 va PYSEC-2026-4323, 23-oktabrda qo'shildi, shuning uchun o'rnatilgan versiyalarni qo'lda ham tekshiring.

Yangilanish: Microsoft .NET'ni tuzatdi, ko'proq tuzatishlar keldi

Microsoft 25-oktabrda .NET 8, .NET 9 va .NET 10, hamda .NET 11 Release Candidate 3 uchun xatoni tuzatuvchi navbatdan tashqari yangilanishlarni chiqardi. Tuzatilgan muhitlar 8.0.33, 9.0.22 va 10.0.14, Microsoft maslahati .NET Framework ta'sirlanmaganligini aytadi.

.NET ilovasi faqat hujumchi nazorat qiladigan Brotli ma'lumotlarini dekodlasa ochiq bo'ladi. Bu ASP.NET Core so'rov dekompressiyasida yoki HttpClient avtomatik javob dekompressiyasida Brotli yoqilganda sodir bo'ladi, ikkalasi ham sukut bo'yicha yoqilmagan, yoki ishonchsiz ma'lumotni BrotliStream va BrotliDecoder kabi Brotli API'lariga uzatganda. Microsoft ta'sirlangan paket o'rnatilgan bo'lishi o'zi ilovani ochiq qilmasligini aytadi.

Microsoft xato autentifikatsiyasiz hujumchiga jarayon xotirasini o'qish yoki buzish imkonini berishini, bu esa ma'lumot sizib chiqishi, xizmat rad etilishi yoki imtiyoz oshirishiga olib kelishi mumkinligini aytadi. Uning maslahati natijalar orasida masofaviy kod bajarilishini ro'yxatga olmaydi.

Yangilangan muhitni o'rnatish va qayta ishga tushirish umumiy muhitdan foydalanadigan ilovalar uchun yetarli. Mustaqil ilovalar qayta qurilishi va qayta nashr etilishi kerak, NativeAOT ilovalari ham shunday, chunki dekoder bajariladigan faylga bog'langan. Konteyner tasvirlari yangilangan .NET tasvirlaridan qayta qurilishi kerak.

Agar ilova hozircha yangilana olmasa, Microsoft mavjud so'rov dekompressiya sozlamasidan br provayderini olib tashlashni va mavjud HttpClient ishlov beruvchisidan DecompressionMethods.Brotli ni tushirishni maslahat beradi. U dekompressiyani hali ishlatmaydigan ilovaga qo'shishdan ogohlantiradi, chunki bu yangi xizmat rad etish xavflarini yaratishi mumkin.

Xuddi shu relizda CVE-2026-114148 ham tuzatilgan, bu ba'zi Linux .NET tarballarida noto'g'ri fayl egaligi mahalliy hujumchiga yuqori imtiyoz olish imkonini beradigan alohida xato.

Ruby uchun brotli gem'i 24-oktabrda 0.9.1 versiyasida xatoni tuzatdi. U Brotli 1.2.1 ni o'z ichiga oladi va tuzatishsiz tizim Brotli kutubxonasini e'tiborsiz qoldirib, o'z nusxasidan foydalanadi.

Cloudflare 25-oktabrda o'z boshqariladigan xavfsizlik devori qoidalar to'plamiga xato uchun ikkita qoida qo'shdi, jumladan Content-Encoding: br bilan yuborilgan kiruvchi so'rovlarni moslashtiradigan biri. Ikkalasi ham sukut bo'yicha faqat mos keladigan trafikni qayd qiladi va mijoz harakatni o'zgartirmaguncha hech narsani bloklamaydi.

Yangilanish: JFrog xatoni FFmpeg, ClickHouse va Apache Arrow'da topdi

JFrog tadqiqotchilari 25-oktabrda xato FFmpeg, ClickHouse va Apache Arrow'ga ham yetishini, va bu yo'llarning ba'zilari fayl bilan boshlanishini, veb-so'rov bilan emas, xabar qildi. Tarmoq chekkasida Content-Encoding: br ni rad etish bu fayl yo'llarini qamrab olmaydi.

FFmpeg'da yo'l libjxl, JPEG XL tasvir kutubxonasi orqali o'tadi, u JPEG XL fayli ichidagi siqilgan metama'lumotlarni ochish uchun Brotli'dan foydalanadi. Maxsus tayyorlangan tasvir JFrog'ga dastur ko'rsatkichini (qaysi kod bajarilishini hal qiladigan) nazorat qilish imkonini berdi, garchi JFrog bu kod bajarilishiga aylantirish uchun ko'proq ish kerakligini aytdi. JFrog FFmpeg uchun maxsus tuzatish haqida xabar bermadi. Xato libjxl foydalanadigan Brotli kutubxonasida, shuning uchun bu kutubxonaning tuzatilgan nusxasi bu yo'lni yopadi.

Ochiq manbali ma'lumotlar bazasi ClickHouse, JFrog'ga ko'ra, Content-Encoding: br bilan yuborilgan HTTP so'rov tanalarida, .br fayllarida va Parquet ma'lumotlarida Brotli'ni dekodlaydi. JFrog ClickHouse serverini taxminan 23 MB hajmdagi bitta maxsus tayyorlangan so'rov bilan ishdan chiqardi, bu xizmat rad etilishi, va kod bajarilishini da'vo qilmadi. JFrog nashr etilganda tuzatilgan reliz chiqmaganini aytdi, va ClickHouse'ning o'rnatilgan Brotli'ni 1.2.1 ga ko'chiradigan orqaga qaytish 26-oktabrda 26.9 shoxiga birlashtirildi.

Apache Arrow'ning C++ kutubxonasi o'z qurilishlari uchun Brotli 1.0.9 ni o'z ichiga oladi, loyihaning kuzatuvchisidagi ochiq masalaga ko'ra, u 26-oktabr holatiga ko'ra bog'langan tuzatish yoki saqlovchi javobi yo'q edi. Masala Brotli bilan siqilgan ma'lumotlar bilan Parquet yoki Arrow IPC faylini o'qish xatoga erishishi mumkinligini, va tuzatilgan tizim Brotli bilan bog'langan qurilishlar ta'sirlanmaganligini aytadi. pyarrow'da, Python paketida, JFrog 534 baytli kirish Brotli dekompressiyasini CPU'ni band qiladigan cheksiz tsiklga yuborganini topdi, bu kod bajarilish emas, balki xizmat rad etilishi.

JFrog shuningdek .NET test dasturini Brotli API'lari orqali ishdan chiqardi, bu Microsoft'ning 25-oktabrdagi yangilanishlari tuzatadigan yo'l.

(Maqola 26-oktabrda nashr etilgandan so'ng yangilandi, Microsoft'ning .NET tuzatishlari, JFrog'ning boshqa ta'sirlangan dasturlar bo'yicha tadqiqoti, Ruby gem tuzatishi, Cloudflare'ning xavfsizlik devori qoidalari va yangi Linux tarqatish paketlarini o'z ichiga olish uchun.)