Node.js 21-oktabrda uchta qo'llab-quvvatlanadigan reliz liniyasi — 22.x, 24.x va 26.x — uchun xavfsizlik yangilanishlarini e'lon qildi va 10 ta kamchilikni tuzatdi. Eng jiddiy xato — Node.js o'z ichiga olgan Brotli dekompressiya kodidagi xato bo'lib, loyiha ma'lumotiga ko'ra masofaviy kod bajarilishiga (remote code execution) yo'l qo'yishi mumkin, ya'ni hujumchi ta'sirlangan tizimda o'z tanlagan kodini ishga tushirishi mumkin.

Har bir qo'llab-quvvatlanadigan liniya uchun bitta tuzatilgan versiya mavjud: uzoq muddatli qo'llab-quvvatlash liniyalarida 22.23.4 va 24.22.1, joriy liniyada esa 26.12.1. Node.js 20.x va undan oldingi versiyalar hayot tsikli tugagan (end of life) va tuzatish olmaydi, shuning uchun ular qo'llab-quvvatlanadigan liniyaga ko'chirilishi kerak.

Brotli xatosi foydalanuvchining o'z dasturida emas, balki Node.js o'z ichiga olgan kodda joylashgan. Node.js bu kodni Brotli ma'lumotlarini dekompressiya qilganda har doim ishga tushiradi — to'g'ridan-to'g'ri node:zlib moduli orqali yoki kod Brotli siqish bilan yuborilgan javobga fetch() chaqirganida avtomatik ravishda.

Ilova hujumchi nazorat qiladigan Brotli ma'lumotlarini dekompressiya qilganda, masalan, so'rov tanasi (request body) yoki boshqa serverdan olingan javob orqali, ta'sirlanadi.

Brotli xatosi

Xato Brotli dekoderidagi buferdan tashqari yozuv (out-of-bounds write) bo'lib, noto'g'ri siqilgan kirish ma'lumotlari bilan ishga tushadi. Tuzatish Brotli loyihasidan olingan yuqori darajadagi yamoq bo'lib, Node.js uni nusxalagan; u dekoderga noto'g'ri kirishni aniqlash va buferdan tashqariga yozishdan oldinroq to'xtash imkonini beradi.

Brotli — Google'ning siqish kutubxonasi, va Node.js o'z nusxasini jo'natadi. Xuddi shu tuzatish 21-oktabrda Brotli 1.2.1, 1.1.1 va 1.0.10 versiyalarida ham jo'natildi, shuning uchun Brotli'ni o'z ichiga olgan boshqa dasturlar ham xuddi shu yangilanishni talab qilishi mumkin. O'zgarish birinchi marta Brotli manba kodida 2026-yil fevralda kiritilgan va faqat oktyabrda xavfsizlik relizi sifatida jo'natilgan.

"Masofaviy kod bajarilishi" — loyihaning xato nima qilishga yo'l qo'yishi mumkinligi haqidagi tavsifi, va xato tanqidiy (critical) emas, balki yuqori (high) darajada baholangan. Amalda bu qanchalik isbotlanganligi torroq.

22-oktabrda e'lon qilingan ommaviy isbot-konsepsiya (proof-of-concept) faqat ataylab zaiflashtirilgan sinov qurilishiga (test build) qarshi kod bajarilishiga erishdi. Standart Node.js qurilishida uning muallifi xato va jarayon xotirasining cheklangan o'qilishi (limited read of process memory) haqida xabar berdi, kod bajarilishi emas, va normal qurilishda ishlaydigan hujumga erishilmaganini aytdi.

Tuzatilgan Node.js isbot-konsepsiya ishlatadigan noto'g'ri kirishni rad etadi, va 22-oktabr holatiga ko'ra xatodan yovvoyi foydalanish (exploitation in the wild) haqida xabar berilmagan.

Boshqa xatolar

Boshqa tuzatishlardan uchtasi ham yuqori darajada baholangan. Ikkitasi — hujumchi serverning IP manzilini g'ayrioddiy shaklda yozib, TLS sertifikat tekshiruvini chetlab o'tishi mumkin bo'lgan xatolar (CVE-2026-106069 va CVE-2026-105483), shunda sertifikat mos kelmasligi kerak bo'lgan xostga mos keladi. Uchinchisi — dns.resolve funksiyasining ichki null bayt (embedded null byte) bilan xost nomini qisqartirishini to'xtatadi (CVE-2026-105482).

Node.js CVE-2026-105483 ni yuqori darajada baholaydi, garchi uni tuzatgan commit xatoni past darajali va foydalanish qiyin deb ataydi.

Qolganlari o'rta va past darajadagi xatolar. Bir o'rta darajadagi xato — ilova ishga tushirish surati (startup snapshot) yoki yagona bajariladigan ilova (single-executable application) sifatida qurilganda crypto.randomUUID() va crypto.randomInt() har bir jarayonda bir xil qiymatlarni qaytarishiga sabab bo'ladi (CVE-2026-106074), bu esa bu qiymatlarning oldindan aytib bo'lmasligi (unpredictable) kerak bo'lgan har qanday narsani buzadi.

To'liq ro'yxat va har bir xato ta'sir qiladigan liniyalar:

CVENimaJiddiylikTa'sirlangan liniyalar
CVE-2026-111497Brotli dekoderidagi buferdan tashqari yozuv; loyihaga ko'ra masofaviy kod bajarilishiYuqori22.x, 24.x, 26.x
CVE-2026-106069Xost IP manzili g'ayrioddiy shaklda bo'lganda TLS xost nomi tekshiruvini chetlab o'tishYuqori22.x, 24.x, 26.x
CVE-2026-105483IP to'liq kenglik raqamlari (fullwidth digits) bilan yozilganda TLS xost nomi tekshiruvini chetlab o'tishYuqori24.x, 26.x
CVE-2026-105482dns.resolve null bayt o'z ichiga olgan nomlarni qisqartiradiYuqori22.x, 24.x, 26.x
CVE-2026-105481Keep-alive soket so'rov yuborilishidan oldin yozilgan javobni qayta ishlashi mumkinO'rta22.x, 24.x, 26.x
CVE-2026-106072G'ayrioddiy IPv4 uchun sertifikat tekshiruvi DNS nomlariga IP nuqtalarini autentifikatsiya qilishga ruxsat beradiO'rta22.x, 24.x, 26.x
CVE-2026-106074randomUUID() va randomInt() ishga tushirish suratlari va yagona bajariladigan ilovalarda qayta ishlatiladigan keshO'rta22.x, 24.x, 26.x
CVE-2026-106070ZipFile muvaffaqiyatsiz sarlavha tekshiruvidan so'ng hujumchi nazorat qiladigan baytlarni qaytaradiPast26.x
CVE-2026-106071Ruxsat modeli (Permission Model) joker belgisi (wildcard) orqali faylga kirishni ortiqcha beradiPast26.x
CVE-2026-106073Ruxsat modeli fs.realpathSync bilan chetlab o'tiladiPast22.x, 24.x, 26.x

eMudhra sertifikat blokirovkasi

Xuddi shu yangilanishlar, shuningdek, bir necha kun oldin buzilgan deb xabar qilingan hindistonlik eMudhra provayderining sakkizta oraliq sertifikat vakolat kalitlarini (intermediate certificate authority keys) Node.js ishonmasligini to'xtatadi.

Node.js Mozilla ildiz sertifikat ro'yxatidan foydalanadi, lekin odatda bekor qilish tekshiruvini (revocation checks) bajarmaydi, shuning uchun bu yangilanishdan oldin buzilgan kalitlardan biriga asoslangan sertifikat zanjiri hali ham o'tardi.

Relizlar sakkizta kalitga o'rnatilgan blokni qo'shadi va uchta emSign ildizini olib tashlash uchun o'rnatilgan ildiz ro'yxatini yangilaydi. Go ham 20-oktabrda o'z yangilanishida xuddi shu blokni amalga oshirdi.

Yangilanishdan oldin boshlangan sessiyadan qayta tiklangan ulanishlar (resumed connections) sessiya tugaguncha qayta tekshirilmaydi, va hayot tsikli tugagan liniyalar blokni olmaydi.

Yangilangan bog'liqliklar

10 ta xatodan tashqari, yangilanishlar bir nechta o'rnatilgan qismlarni ham yangilaydi. fetch() ortidagi HTTP mijozi undici nusxasi uchta o'rta darajadagi maslahatni tuzatuvchi versiyaga ko'chiriladi: biri Subresource Integrity tekshiruvida va ikkitasi xotira tugash (memory-exhaustion) xatolari, ulardan biri Node.js ichiga o'rnatilgan WebSocket mijozida.

Node.js, shuningdek, barcha liniyalarda o'rnatilgan c-ares, 22.x va 24.x da OpenSSL, va 22.x da SQLite ni ommaviy ma'lum zaifliklar uchun tuzatishlar bilan yangiladi.

Agar hozircha yangilay olmasangiz

Yangilash — tuzatish. Maslahat Brotli xatosi uchun vaqtinchalik yechim (temporary workaround) taklif qilmaydi, shuning uchun darhol yangilay olmaydigan ilova Node.js ichida o'zi uchun zaxira variantga ega emas.

Mijozlari uchun Node.js ni ishga tushiradigan Vercel 21-oktabrda kiruvchi so'rovlarda hujumni bloklaydigan xavfsizlik devori qoidalarini (firewall rules) qo'shganini aytdi. Qoidalar ilova boshqa serverlardan oladigan Brotli javoblarini qamrab olmaydi va yangilash o'rnini bosmaydi.