Zararli Brotli ma'lumotlari Node.js rasmiy build'ida ishlaydigan ilovani hujumchi taqdim etgan kodni bajarishga majbur qilishi mumkin, deb Imperva xavfsizlik tadqiqotchilari namoyish etishdi.

Ularning "Node2Shell" proof of concept'i Linux arm64 uchun rasmiy Node.js 24.22.0 tasvirida, hech qanday debugger yoki maxsus build'siz, o'rnatilgan Brotli dekoderiga (CVE-2026-111497) maxsus ma'lumotlar yuborish orqali kodni bajardi. Node.js 21-oktabrda kamchilikni e'lon qildi va tuzatishlarni chiqardi; ishonchsiz Brotli ma'lumotlarini dekodlaydigan ilovalar yangilanishi kerak.

Imperva sinovi har bir urinishda muvaffaqiyatli bo'lmadi va Linux arm64 sozlamasida kod bajarilishi bir necha urinishni talab qildi. Natija faqat shu bitta build va ilova sozlamasini qamrab oladi; boshqa arxitekturalar va 22.x hamda 26.x liniyalari sinovdan o'tkazilmagan. Tuzatilgan 24.22.1 versiyasida xuddi shu ma'lumotlar rad etildi va hech qanday kod bajarilmadi.

Namoyish avvalgi ommaviy proof of concept'dan yuqoriroq: u faqat ataylab zaiflashtirilgan test build'da kod bajarilishini ta'minlagan edi. Standart build'da o'sha proof of concept muallifi crash va jarayon xotirasining cheklangan o'qilishini, kod bajarilishini emas, xabar qildi va normal build'da ishlaydigan hujum amalga oshirilmaganini aytdi.

22-oktabr holatiga ko'ra, bu kamchilikning yovvoyi tabiatda ekspluatatsiya qilingani haqida xabar berilmagan.

Qaysi Ilovalar Ta'sirlangan

Kamchilik Node.js o'rnatgan Brotli dekoderida, shuning uchun u faqat Imperva sinovdan o'tkazgan bitta build emas, balki 22.x, 24.x va 26.x liniyalaridagi ilovalarga ta'sir qiladi. Xizmat bu dekoderga HTTP almashinuvi har ikki tomondan yetib boradi: u Node.js'ning o'rnatilgan fetch() orqali Brotli-siqlangan javobni o'qiganda, yoki middleware Brotli-siqlangan so'rov tanasini dekodlaganda.

Express 5'ning body parser'lari, masalan express.json(), express.urlencoded(), express.text() va express.raw(), endi gzip va deflate bilan birga Brotli so'rov tanalarini ham dekodlaydi, agar ular marshrutga qo'llanilsa. Oddiy Node.js HTTP serveri Brotli so'rov tanasini faqat qabul qilish bilan dekodlamaydi, shuning uchun dekodlash o'sha middleware yoki aniq chaqiruvni talab qiladi.

Imperva so'rov tanasi va javob yo'llari orqali kod bajarilishini takrorladi, Express 5.0.0 dan 5.3.0 gacha va body-parser 2.0.0 dan 2.3.0 gacha pinlangan versiyalarni sinovdan o'tkazdi va oraliqdagi har bir relizni sinovdan o'tkazmadi.

Xato Qanday Ishlaydi

Imperva sababni dekoder Brotli oqimidagi mumkin bo'lmagan nuqtani qanday ishlashiga bog'ladi: oqim dekodlash davomida ishlatiladigan blok turlarini e'lon qiladi va test kiritmasi oqimning o'z tuzilishi rad etgan blok o'zgarishiga yetib bordi. Zaif dekoder buni ko'proq kiritma so'rovi sifatida o'qidi va noto'g'ri holatda davom etdi.

Xotira sanitizer bilan alohida sinovda, o'sha holatdan davom etish mo'ljallangan buferdan tashqariga yozdi — bu kamchilik ortidagi chegaradan tashqari yozish.

Node.js kamchilikni yuqori darajadagi Brotli patch'ini import qilish orqali tuzatdi, bu dekoderga o'sha nuqtada format xatosi bilan to'xtashni, davom etmaslikni buyuradi.

Nima Qilish Kerak

Tuzatish — patch'langan relizga o'tish. Yangilanish Node binarini o'z ichiga olgan konteyner tasvirlari va boshqa artefaktlarga ham yetib borishi kerak, chunki paket inventarizatsiyasi buni o'tkazib yuborishi mumkin. Hayot tugagan 20.x va undan oldingi liniyalar tuzatish olmaydi va qo'llab-quvvatlanadigan liniyaga ko'chirilishi kerak.

Maslahatda Node.js ichida hech qanday workaround ro'yxatga olinmagan, shuning uchun bir zumda yangilana olmaydigan ilova runtime'da hech qanday zaxira variantiga ega emas. Imperva amaliy bo'lgan joylarda ta'sirlangan yo'llarda ishonchsiz Brotli trafikini cheklashni taklif qildi va faqat yangilanish kamchilikni butunlay bartaraf etishini aytdi. Kompaniya o'z veb-ilova firewall'iga qoidalar qo'shdi va ularni takrorlagan hujumlarga qarshi sinovdan o'tkazdi.

Mijozlari uchun Node.js'ni ishlatadigan Vercel 21-oktabrda kiruvchi so'rovlarda hujumni bloklaydigan qoidalar qo'shganini aytdi. Bu qoidalar ilova boshqa serverlardan oladigan Brotli javoblarini qamrab olmaydi va yangilanishni almashtirmaydi.