Node.js è un runtime JavaScript popolare utilizzato per costruire applicazioni scalabili di rete. Tuttavia, recentemente sono state scoperte una serie di vulnerabilità critiche in diverse versioni di Node.js, che espongono i sistemi ai rischi di attacchi remoti, inclusi il furto di dati, il DoS (Denial of Service) e la compromissione del sistema[1]. Queste vulnerabilità, riportate nella nota di vulnerabilità CERT-In CIVN-2025-0011, sono classificate come di alta gravità e possono compromettere informazioni sensibili, interrompere i servizi e anche eseguire codice arbitrario.
Affetti dalle Vulnerabilità
Le vulnerabilità interessano diverse versioni di Node.js, comprese quelle a lungo supportate (LTS) e le versioni correnti. Le versioni colpite includono Node.js v18.x, v20.x, v22.x e la più recente v23.x. Le falle derivano da vari problemi, come perdite di memoria, vulnerabilità di percorso di trascinamento e bypass delle autorizzazioni dei lavoratori, che potrebbero portare a condizioni di DoS, furto di dati e compromissione del sistema.
Rischi e Impatti
Le vulnerabilità presentano un alto rischio di accesso non autorizzato a dati sensibili, interruzione dei servizi o compromissione completa del sistema. Queste falle possono essere sfruttate a distanza, permettendo agli attaccanti di ottenere il controllo sui sistemi interessati. Gli impatti sono significativi, soprattutto in ambienti di produzione dove le applicazioni Node.js sono in esecuzione in scenari di alta affluenza.
Vulnerabilità Specifiche
CVE-2025-23087 (Node.js v17.x e precedenti)
Questa vulnerabilità critica colpisce le versioni più vecchie di Node.js (v17.x o precedenti), con un attaccante che potrebbe ottenere accesso non autorizzato a causa di controlli di sicurezza insufficienti. La gravità di questa falle richiede immediata attenzione da parte degli utenti di queste versioni più vecchie[1].
CVE-2025-23088 (Node.js v19.x)
Una falle critica che colpisce Node.js v19.x, permettendo all’attaccante di bypassare le misure di sicurezza e eseguire codice arbitrario. È essenziale per gli utenti di v19.x aggiornarsi alla versione più recente per mitigare il rischio[1].
CVE-2025-23089 (Node.js v21.x)
Simile a CVE-2025-23088, questa vulnerabilità colpisce Node.js v21.x, consentendo l’esplorazione potenziale a causa di una mancanza di controlli di accesso e caratteristiche di sicurezza. Gli utenti dovrebbero aggiornarsi immediatamente alle versioni patchate di Node.js[1].
CVE-2025-23083 (Bypass delle Autorizzazioni dei Lavoratori)
Una vulnerabilità di alta gravità scoperta in Node.js v20.x, v22.x e v23.x, dove un attaccante potrebbe sfruttare il meccanismo di perdita interna dei lavoratori tramite l’utilizzo della utility diagnostics_channel. Questa falle potrebbe consentire l’accesso non autorizzato ai thread dei lavoratori, tipicamente limitati, potenzialmente portando all’escalation di privilegi[1].
CVE-2025-23084 (Traversamento del Percorso su Windows)
Una vulnerabilità di media gravità che colpisce gli utenti Windows di Node.js. Questa falle consente agli attaccanti di sfruttare il mancato trattamento adeguato dei nomi delle unità nel sistema operativo Windows, potenzialmente accedendo a directory non autorizzate sul sistema bypassando le restrizioni del percorso[1].
CVE-2025-23085 (Memoria Leaking GOAWAY HTTP/2)
Un problema di perdita di memoria attivato quando un peer remoto chiude il socket senza inviare una notifica GOAWAY. Questo problema colpisce le versioni Node.js v18.x, v20.x, v22.x e v23.x. La perdita di memoria potrebbe portare a un consumo di risorse aumentato e condizioni di DoS specifiche[1].
Suggerimenti e Consigli per la Sicurezza
Aggiornamento delle Versioni
- Aggiornamento immediato: Gli utenti devono aggiornare immediatamente alle versioni più recenti di Node.js per evitare di essere colpiti da queste vulnerabilità. In particolare, è consigliabile aggiornarsi a Node.js v18.x o versioni successive, come raccomandato da IBM per le applicazioni Apache Cordova[2].
Monitoraggio e Logging
- Monitoraggio continuo: Assicurarsi di monitorare regolarmente le applicazioni Node.js per rilevare eventuali segnali di attacchi o comportamenti anomali.
- Logging server-side: Utilizzare il logging server-side per raccogliere informazioni dettagliate sulle attività dell’applicazione, aiutando a identificare e rispondere rapidamente a eventuali minacce.
Implementazione di Controlli di Accesso Forti
- Controlli di accesso: Implementare controlli di accesso robusti per limitare l’accesso ai dati sensibili e ai componenti critici dell’applicazione.
- Autenticazione forte: Utilizzare metodi di autenticazione robusti, come bcrypt.js, per proteggere le password memorizzate nel database e limitare i tentativi di accesso da un IP per prevenire attacchi di brute-force[5].
Utilizzo di Linter di Sicurezza
- Linter di sicurezza: Utilizzare linter di sicurezza per catturare vulnerabilità nel codice, aiutando a identificare e correggere problemi di sicurezza prima che siano esposti agli attaccanti[5].
Miglioramento Continuo
- Miglioramento continuo: Mantenere sempre aggiornate le conoscenze sulla sicurezza di Node.js e rimanere aggiornati sulle ultime vulnerabilità e best practices.
Le vulnerabilità critiche scoperte in Node.js rappresentano un rischio significativo per le applicazioni basate su questo runtime. È essenziale che gli sviluppatori e le organizzazioni che utilizzano Node.js prendano immediatamente azioni per aggiornare alle versioni più recenti e implementare controlli di sicurezza robusti. Seguendo questi suggerimenti e consigli, è possibile ridurre significativamente il rischio di attacchi remoti e garantire la sicurezza delle applicazioni basate su Node.js.
Fonte: https://cyble.com/blog/critical-vulnerabilities-in-node-js-expose-systems