Node.js a publicat pe 21 octombrie 2026 actualizări de securitate pentru o vulnerabilitate în componenta Brotli care poate permite executarea de cod în procesul unei aplicații. Problema, identificată drept CVE-2026-111497, afectează ramurile 22.x, 24.x și 26.x și este clasificată de proiect cu severitate ridicată. Versiunile corectate sunt 22.23.4, 24.22.1 și 26.12.1.
Condiția tehnică esențială este decomprimarea unor date Brotli controlate de atacator. Potrivit buletinului Node.js, datele construite special pot deteriora memoria procesului atunci când sunt prelucrate prin componenta vulnerabilă. Efectele descrise includ oprirea aplicației, expunerea unor date din memorie și executarea de cod, în funcție de modul concret de exploatare.
Actualizarea privește motorul de execuție folosit de aplicații, API-uri și servicii backend. Verificarea acestui strat face parte din securitatea aplicațiilor web și trebuie raportată la versiunea care rulează efectiv pe server. Instalarea unei versiuni corectate în mediul de dezvoltare și actualizarea mediului de producție sunt intervenții distincte.

Expunerea depinde de datele pe care le decomprimă aplicația
Brotli este formatul de compresie implicat în această vulnerabilitate. Componenta sa de decodare, inclusă în Node.js, interpretează greșit o anumită intrare invalidă și continuă să accepte date într-un spațiu intern insuficient. Buletinul descrie o scriere în afara zonei de memorie alocate, operațiune care poate afecta procesul aplicației.
Node.js indică explicit situația în care atacatorul poate furniza date Brotli pe care aplicația le decomprimă prin modulul node:zlib. Vercel completează această delimitare în propriul buletin: prelucrarea poate fi făcută direct de codul aplicației sau de o bibliotecă folosită de aceasta. Prezența componentei în runtime trebuie corelată cu traseul efectiv al datelor.
Există două trasee descrise de Vercel. Datele comprimate pot veni în corpul unei cereri primite de aplicație sau în răspunsul unui server extern pe care aplicația îl accesează. În al doilea caz, operațiunea pornește din infrastructura serviciului, dar conținutul răspunsului este controlat de sistemul extern consultat.
Această diferență explică de ce protecția traficului de intrare și corectarea runtime-ului au roluri diferite. Un filtru aplicat cererilor primite urmărește datele care traversează rețeaua protejată. Răspunsurile descărcate de funcțiile aplicației din alte servicii trebuie tratate prin corecția componentei care realizează decomprimarea.
Vercel a activat reguli de filtrare și actualizează mediile administrate
Vercel a anunțat introducerea, în aceeași zi cu publicarea corecțiilor, a unor reguli de firewall pentru aplicații web care blochează tiparele cunoscute de exploatare pe traseul de intrare. Conform companiei, regulile se aplică automat proiectelor găzduite pe platformă, fără configurare suplimentară și fără un cost distinct pentru această protecție.
Compania a început și distribuirea versiunilor Node.js corectate în mediile sale administrate. Pentru proiectele configurate pe ramurile 22.x sau 24.x, gestionarea versiunii de corecție revine platformei. Informarea consultată descrie această distribuire ca proces în desfășurare și diferențiază clar protecția de rețea de actualizarea motorului de execuție.
Proiectele Vercel care folosesc încă Node.js 20 trebuie mutate pe 22.x sau 24.x și republicate. Node.js 20 a ieșit din perioada de suport și nu primește această corecție, potrivit buletinului Vercel. Alegerea unei ramuri susținute este, în acest caz, o cerință concretă a remedierii, distinctă de instalarea unei actualizări de corecție.
Pentru mediile din afara infrastructurii administrate de Vercel, furnizorul cere actualizarea la una dintre cele trei versiuni corectate. Enumerarea include servere backend externe, instalări Next.js găzduite independent, imagini de containere construite de echipa aplicației, infrastructura de integrare continuă și mediile locale în care rulează proiectul.
În cazul containerelor, procedura indicată constă în reconstruirea imaginii pe o versiune Node.js corectată și în republicarea acesteia. Pentru Next.js găzduit independent, Vercel cere actualizarea Node.js și precizează că optimizarea imaginilor din Next.js nu blochează răspunsurile Brotli. Operațiunea de remediere trebuie să acopere astfel runtime-ul distribuit efectiv.

Pachetul de securitate corectează zece probleme
Actualizarea din 21 octombrie include zece vulnerabilități, nu doar problema Brotli. Patru sunt clasificate cu severitate ridicată. Pe lângă decodor, proiectul a corectat o problemă de rezolvare DNS și două erori de verificare a numelui gazdei în certificate TLS, mecanism folosit pentru autentificarea destinației unei conexiuni criptate.
Problema DNS privește tratarea unor nume care conțin un caracter nul. Funcțiile afectate puteau interpreta numai o parte a numelui transmis. Pentru aplicațiile care verifică mai întâi o destinație și o rezolvă ulterior, diferența dintre numele verificat și cel folosit efectiv schimbă controlul exercitat asupra conexiunii.
Erorile TLS cu severitate ridicată se referă la forme neobișnuite de reprezentare a adreselor IP și la modul în care acestea sunt interpretate de componente diferite. În condițiile descrise de proiect, verificarea certificatului putea accepta o identitate care nu corespundea destinației reale. Ramurile afectate diferă între cele două erori.
Alte corecții vizează reutilizarea conexiunilor HTTP, verificarea unor certificate pentru adrese IPv4 necanonice și păstrarea unor valori aleatoare în instantanee folosite la pornirea aplicației. Pentru această ultimă problemă, buletinul explică apariția unor identificatori repetați între procese pornite din același instantaneu, în condițiile de construire descrise.
Node.js 26 primește și corecții pentru tratarea arhivelor ZIP și anumite permisiuni de acces la fișiere. Pachetul actualizează, în funcție de ramură, biblioteci precum c-ares, OpenSSL, SQLite și Undici. Evidența oficială separă aceste componente și versiunile afectate, astfel încât schimbarea să poată fi urmărită pentru fiecare mediu folosit de aplicație.