Node.js ispravlja Brotli propust i još devet bezbednosnih grešaka

Node.js je 21. oktobra objavio bezbednosna ažuriranja za sve tri podržane grane, 22.x, 24.x i 26.x, i otklonio ukupno 10 propusta. Najozbiljniji je CVE-2026-111497, upis van granica bafera u ugrađenom Brotli dekoderu, koji projekat opisuje kao propust sa mogućnošću daljinskog izvršavanja koda. Ispravljene verzije su 22.23.4 i 24.22.1 za LTS grane, odnosno 26.12.1 za aktuelnu granu.
Brotli dekoder obrađuje podatke i kroz fetch()
Greška se nalazi u kopiji Brotli koda koju Node.js isporučuje uz sopstvene pakete, a ne nužno u aplikacionom kodu. Aktivira se nepravilno oblikovanim kompresovanim ulazom, pri čemu je dekoder mogao da upiše podatke izvan predviđenog bafera.
Aplikacija može biti izložena kada raspakuje Brotli sadržaj pod kontrolom napadača. To se može dogoditi neposrednim korišćenjem modula node:zlib, ali i automatski kada poziv fetch() primi odgovor komprimovan Brotli algoritmom sa drugog servera.
Node.js je preuzeo uzvodnu zakrpu iz projekta Brotli. Izmena omogućava dekoderu da nevažeći ulaz prepozna i prekine obradu pre upisa izvan bafera. Isti popravak objavljen je 21. oktobra u izdanjima Brotli 1.2.1, 1.1.1 i 1.0.10, pa ažuriranje treba razmotriti i u drugim proizvodima koji ugrađuju ovu biblioteku.
Rizik je visok, ali javni dokaz koncepta ima ograničen domet
Projekat propust klasifikuje kao visok, a ne kritičan. Javni dokaz koncepta, objavljen 22. oktobra, postigao je izvršavanje koda samo nad namerno oslabljenom testnom izgradnjom. Autor je na standardnoj Node.js izgradnji naveo rušenje procesa i ograničeno čitanje memorije, bez uspešno ostvarenog izvršavanja koda.
Zakrpljene verzije odbacuju nepravilni ulaz koji koristi taj dokaz koncepta. Do 22. oktobra nije prijavljena eksploatacija ovog propusta u stvarnim napadima, ali odsustvo prijavljenih slučajeva nije zamena za primenu dostupne ispravke.
Ostale ispravke obuhvataju TLS, DNS i kriptografske vrednosti
Tri dodatna propusta označena su visokim rizikom. CVE-2026-106069 i CVE-2026-105483 odnose se na zaobilaženje TLS provere imena sertifikata pri neuobičajenom zapisu IP adrese, dok CVE-2026-105482 sprečava da dns.resolve skrati ime hosta na ugrađenom nultom bajtu.
Među propustima srednje ozbiljnosti je CVE-2026-106074: crypto.randomUUID() i crypto.randomInt() mogli su da vrate iste vrednosti u svakom procesu kada je aplikacija izgrađena kao početni snimak ili jedinstvena izvršna aplikacija. To ugrožava slučajeve upotrebe koji računaju na nepredvidivost tih vrednosti.
Ažuriranja takođe blokiraju osam kompromitovanih posredničkih ključeva sertifikacionog tela eMudhra. Node.js podrazumevano ne proverava opoziv sertifikata, pa je ugrađena blokada potrebna da lanci zasnovani na tim ključevima više ne prolaze proveru. Obnovljena je i Mozilla lista korenskih sertifikata, iz koje su uklonjena tri emSign korena.
Prioritet je nadogradnja podržanih grana
Node.js 20.x i starije grane dostigle su kraj životnog ciklusa i neće dobiti ovu ispravku niti blokadu kompromitovanih ključeva. Za Brotli propust ne postoji privremena mera unutar samog Node.js-a. Vercel je postavio pravila zaštitnog zida za dolazne zahteve, ali ona ne pokrivaju Brotli odgovore koje aplikacija preuzima sa drugih servera i ne zamenjuju nadogradnju.
Za poslovne sisteme praktičan sledeći korak je popis verzija Node.js-a u produkciji i prelazak na 22.23.4, 24.22.1 ili 26.12.1, uz poseban prioritet za servise koji primaju komprimovane podatke ili preko fetch() pozivaju spoljne usluge. Timovi bi trebalo da provere i zavisnosti koje zasebno ugrađuju Brotli, jer je zakrpa objavljena i na nivou te biblioteke.

