Sono disponibili patch correttive per la piattaforma server JavaScript Node.js 21.6.2, 20.11.1, 18.19.1, che risolvono 8 vulnerabilità, di cui 4 classificate come ad alto rischio:
- CVE-2024-21892 — possibilità per un utente non privilegiato di iniettare codice che eredita privilegi elevati con cui viene eseguito il processo. La vulnerabilità è causata da un errore nell'implementazione dell'eccezione che permette a variabili ambiente impostate da un utente non privilegiato di essere elaborate in un contesto con privilegi elevati. L'eccezione avrebbe dovuto essere concessa solo per i diritti CAP_NET_BIND_SERVICE, ma a causa di un errore veniva applicata anche ad alcuni altri diritti (capabilities).
- CVE-2024-22019 — attacco di Denial of Service tramite esaurimento delle risorse disponibili (carico CPU e consumo di banda) durante l'elaborazione di richieste chunked appositamente formate dal server HTTP integrato, portando alla lettura di un numero illimitato di byte in una sola connessione.
- CVE-2024-21896 — accesso oltre il confine della directory principale nei percorsi file. La vulnerabilità consente di aggirare la normalizzazione dei percorsi file utilizzando path.resolve() quando il percorso viene inviato utilizzando la classe Buffer. Per ottenere un simile percorso, dopo la verifica, viene chiamato il metodo Buffer.from(), ma nell'app potrebbe essere utilizzata la chiamata Buffer.prototype.utf8Write, che porta alla sostituzione del contenuto dopo l'esecuzione di path.resolve() e alla creazione della vulnerabilità.
- CVE-2024-22017 — la chiamata a setuid() non annullava tutti i privilegi. In particolare, setuid() non influisce sulle operazioni io_uring utilizzate in libuv, se sono state inizializzate prima della chiamata a setuid().
- CVE-2023-46809 — vulnerabilità nell'API privateDecrypt(), che consente l'uso di un attacco Marvin per decriptare RSA basato sulla misura del tempo delle operazioni.
- CVE-2024-21891 — possibilità di aggirare il modello di accesso quando si utilizzano handler personalizzati per la normalizzazione dei percorsi file.
- CVE-2024-21890 — elaborazione errata delle maschere nei parametri «—allow-fs-read» e «—allow-fs-write». Ad esempio, «—allow-fs-read=\/home\/node\/.ssh\/*.pub» porterà a fornire accesso all'intero contenuto di «.ssh\/», e non solo ai file con estensione «.pub», poiché la maschera «*» viene elaborata come ultimo elemento del percorso.
- CVE-2024-22025 — negazione di servizio tramite consumo di risorse durante la decodifica di dati compressi nel formato Brotli, ottenuti tramite chiamata fetch().
In aggiunta, si segnala la pubblicazione della libreria libuv 1.48.0, utilizzata in Node.js per il multiplexing delle connessioni e l'elaborazione asincrona di input/output. Oltre a Node.js, la libreria è utilizzata anche nei server DNS BIND 9 e Knot DNS, nel server HTTP H2O, nel framework Lua Luvit, macchina virtuale MoarVM, nel linguaggio Julia e nel framework Python uvloop. Nella nuova versione è stata corretta una vulnerabilità (CVE-2024-24806) che si manifesta nei progetti che utilizzano libuv, consentendo di effettuare un attacco SSRF (Server-side request forgery) per accedere all'API interna. La vulnerabilità è originata dal troncamento del nome host da parte della funzione uv_getaddrinfo() a 256 caratteri durante la fase di risoluzione del dominio tramite la funzione getaddrinfo(), il che può portare a definire quello sbagliato Indirizzi IP e aggirare i controlli. Ad esempio, i servizi tipo MySpace, che creano sottodomini del tipo "username.example.com", possono essere attaccati specificando un nome utente lungo.
È stata rilasciata anche un'aggiornamento del client HTTP undici utilizzato in Node.js, versione 5.28.3, in cui è stata corretta una vulnerabilità (CVE-2024-24758) causata dalla mancanza di pulizia dell'intestazione HTTP Proxy-Authorization durante il reindirizzamento delle richieste.
Fonte: opennet.ru
