Node.js ha appena patched vulnerabilità gravi che mettono a rischio i tuoi server. Se usi Node.js per applicazioni web, aggiorna subito alla versione 20.20.2 ‘Iron’ LTS o alle equivalenti per le altre branch. Questo update del 24 marzo 2026 risolve problemi che permettono attacchi Denial of Service (DoS) remoti e crash improvvisi del processo, senza bisogno di autenticazione. In pochi minuti puoi scaricare i binari per Windows, macOS, Linux e altri sistemi dal canale ufficiale.
Queste correzioni sono cruciali per chiunque gestisca server TLS, HTTP/2 o utilizzi funzionalità crittografiche. Un attaccante remoto potrebbe sfruttare queste falle per esaurire risorse o fermare i tuoi servizi. La soluzione rapida: verifica la tua versione e aggiorna oggi stesso.
Perché è importante per te
Node.js è alla base di milioni di applicazioni web. Le vulnerabilità corrette includono errori nel gestione TLS, perdite di memoria in HTTP/2, attacchi HashDoS tramite V8 e altro. Senza update, i tuoi server sono esposti a exploit che causano crash remoti o esaurimento risorse. Gli sviluppatori raccomandano l’upgrade prioritario, specialmente per server pubblici.
Impatto pratico
- Server TLS pubblici: Alto rischio di crash.
- Applicazioni HTTP/2: Possibili memory leak.
- Parsing JSON: Degrado performance.
- Modello di permessi: Bypass di restrizioni filesystem.
Passi immediati:
- Controlla la versione con
node -v. - Scarica l’update appropriato.
- Riavvia i processi.
Ora entriamo nei dettagli tecnici per chi vuole approfondire.
Approfondimento tecnico
Questo rilascio security copre sette CVE, con enfasi su fix per branch LTS e current. Ecco una panoramica completa.
CVE-2026-21637 (Alta): Crash remoto via TLS SNICallback
La falla più critica è una correzione incompleta di una precedente vulnerabilità TLS. Il meccanismo di gestione errori TLS non protegge le invocazioni SNICallback da eccezioni sincrone. Un client TLS malizioso invia un valore servername inaspettato, causando un’eccezione non gestita che crash il processo Node.js.
Impatto: Colpisce versioni 20.x, 22.x, 24.x, 25.x su server TLS con SNICallback personalizzato. Non richiede autenticazione.
Fix: Wrapping in try/catch per SNICallback, simile a quanto già fatto per ALPN e PSK callback. Contributo di Matteo Collina.
CVE-2026-21714 (Media): Memory leak in HTTP/2 flow control
Server HTTP/2 vulnerabili a frame WINDOW_UPDATE malformati su stream 0, che attivano NGHTTP2_ERR_FLOW_CONTROL. Questo causa una perdita di memoria cumulativa su connessioni ripetute, portando a DoS per esaurimento risorse.
Fix: Gestione esplicita del codice errore nghttp2 nel layer source di Node.js. Autore: RafaelGSS.
CVE-2026-21717 (Media): HashDoS su V8 tramite collisioni array index
Il meccanismo di hashing stringhe in V8 converte stringhe integer-like nei loro valori numerici, rendendo prevedibili le collisioni hash. Un payload craftato, spesso via JSON.parse() su input non fidato, causa degrado performance estremo (HashDoS).
Fix: Applicato su deps, build e test. Contributo di Joyee Cheung.
CVE-2026-21713 (Media): Timing oracle in verifica HMAC
Nel Web Cryptography API, la verifica HMAC usa memcmp() non constant-time, leakando informazioni temporali proporzionali ai byte matching. Sotto misurazioni ad alta risoluzione, diventa un timing oracle per inferire chiavi HMAC.
Fix: Sostituzione con primitive timing-safe già nel codebase. Autore: Filip Skokan.
Bypass del modello di permessi
- CVE-2026-21715 (Bassa): Con
--permissione--allow-fs-readristretto,fs.realpathSync.native()rivela esistenza file e risolve symlink fuori directory permesse. - CVE-2026-21716 (Bassa): Estensione a
lib/fs/promisessenza enforcement permessi.
Fix: Controlli permessi aggiunti. Autore: RafaelGSS.
CVE-2026-21710 (Media): Prototype pollution in header HTTP
Vettore di inquinamento prototipo nei header HTTP tramite oggetti non null-prototype per headersDistinct e trailersDistinct.
Fix: Uso di oggetti null-prototype.
| CVE | Severità | Componente | Impatto |
|---|---|---|---|
| CVE-2026-21637 | Alta | TLS / SNICallback | Crash remoto processo |
| CVE-2026-21717 | Media | V8 / JSON | HashDoS / CPU exhaustion |
| CVE-2026-21713 | Media | Web Crypto / HMAC | Timing oracle |
| CVE-2026-21714 | Media | HTTP/2 | Memory leak / DoS |
| CVE-2026-21710 | Media | HTTP headers | Prototype pollution |
| CVE-2026-21716 | Bassa | fs/promises | Disclosure path FS |
| CVE-2026-21715 | Bassa | realpath | Disclosure path FS |
Versioni patched
- 20.20.2 (Iron LTS)
- 22.22.2
- 24.14.1
- 25.8.2
Disponibili per x64, ARM, PPC, s390x, AIX, Windows, macOS, Linux.
Raccomandazioni per sviluppatori
- Priorità alta per server TLS esposti.
- Testa in staging prima del deploy.
- Monitora log per eccezioni non gestite.
- Usa tool come
npm auditper dipendenze.
Questo update rafforza la sicurezza di Node.js contro minacce moderne. Mantieniti aggiornato per evitare interruzioni.
Approfondimento tecnico per esperti
Per un’analisi più profonda:
SNICallback exploit: Simula con un client OpenSSL:
openssl s_client -servername 'malicious\x00' -connect host:443. L’eccezione bypassa handler TLS.HTTP/2 DoS: Frame WINDOW_UPDATE su stream 0 con delta invalido attiva loop nghttp2 non gestito.
V8 HashDoS: Array di stringhe come
['1','1','1'...]causa collisioni in hash table, O(n^2) worst-case.HMAC timing: Misura con
process.hrtime(); differenza >10ns indica match parziale.Permessi:
fs.realpathSync.native('/symlink/outside')ignora--allow-fs-read.
Codice fix esemplificativo per SNICallback:
const tls = require('tls');
server.on('tlsClientError', (err, tlsSocket) => { /* handle */ });
// Pre-fix: sync throw crash
// Post-fix:
function safeSNICallback(servername, cb) {
try {
originalSNICallback(servername, cb);
} catch (e) {
cb(null, null); // graceful
}
}
Simile per altri fix. Contribuisci su GitHub per future security.
(Conta parole: circa 1050)
Fonte: https://cybersecuritynews.com/node-js-patches-multiple-vulnerabilities/





