Sunt disponibile versiunile corective ale platformei server JavaScript Node.js 21.6.2, 20.11.1, 18.19.1, în care au fost remediate 8 vulnerabilități, dintre care 4 au fost clasificate cu un nivel ridicat de severitate:
- CVE-2024-21892 — posibilitatea ca un utilizator fără privilegii să injecteze cod care moștenește privilegii extinse cu care se execută procesul. Vulnerabilitatea este cauzată de o eroare în implementarea excepțiilor, permițând unui utilizator fără privilegii să manipuleze variabilele de mediu care sunt gestionate în context de privilegii extinse. Excepțiile ar fi trebuit să fie restricționate doar la permisiunile CAP_NET_BIND_SERVICE, dar din cauza unei erori au fost aplicate și pentru alte permisiuni.
- CVE-2024-22019 — refuzul de a servi prin epuizarea resurselor disponibile (încărcare CPU și consum de lățime de bandă) în cazul în care serverul HTTP încorporat procesează cereri chunked special formate, care duc la citirea unui număr nelimitat de octeți într-o singură conexiune.
- CVE-2024-21896 — ieșirea din limita directorului de bază în căile fișierelor. Vulnerabilitatea permite ocolirea normalizării căilor fișierelor folosind path.resolve() în cazul în care căile sunt transmise prin clasa Buffer. După verificare, acest tip de cale este obținut prin apelul metodei Buffer.from(), dar aplicația poate utiliza apelul Buffer.prototype.utf8Write, ceea ce duce la înlocuirea conținutului în etapa de după executarea path.resolve() și astfel apar vulnerabilitățile.
- CVE-2024-22017 — apelul setuid() nu a resetat toate privilegiile. În special, setuid() nu influențează operațiunile io_uring utilizate în libuv, dacă acestea au fost inițializate înainte de apelul setuid().
- CVE-2023-46809 — vulnerabilitate în API privateDecrypt(), care permite atacul Marvin pentru decriptarea RSA pe baza măsurării timpului operațiunilor.
- CVE-2024-21891 — posibilitatea de a ocoli modelul de autorizare atunci când se utilizează manipulatoare personalizate de normalizare a căilor fișierelor.
- CVE-2024-21890 — gestionarea incorectă a măștilor în parametrii „—allow-fs-read” și „—allow-fs-write”. De exemplu, „—allow-fs-read=\/home\/node\/.ssh\/*.pub” va permite accesul la tot conținutul „.ssh\/”, nu doar la fișierele cu extensia „.pub”, deoarece masca „*” este tratată ca ultimul element al căii.
- CVE-2024-22025 — atacuri de deny of service prin consum de resurse în decodificarea datelor comprimate Brotli, obținute prin apelul fetch().
De asemenea, merită menționată lansarea versiunii 1.48.0 a bibliotecii libuv, utilizată în Node.js pentru multiplexarea conexiunilor și procesarea asynchronică a inputului/ieșirii. Pe lângă Node.js, biblioteca este folosită și în serverele DNS BIND 9 și Knot DNS, serverul HTTP H2O, și cadrul Lua Luvit. mașina virtuală MoarVM, limbajul Julia și cadrul Python uvloop. În noua versiune a fost corectată vulnerabilitatea (CVE-2024-24806), care se manifestă în proiectele care folosesc libuv și care permite un atac SSRF (Server-side request forgery) pentru a obține acces la API-ul intern. Vulnerabilitatea a apărut din cauza tăierii numelui gazdelor de către funcția uv_getaddrinfo() la 256 de caractere în etapa anterioară rezolvării domeniului prin funcția getaddrinfo(), ceea ce poate duce la identificarea greșită adrese IP și ocolirea verificărilor. De exemplu, serviciile de tip MySpace, care creează subdomenii de tipul „username.example.com”, pot fi atacate prin specificarea unui nume de utilizator lung.
De asemenea, a fost lansată actualizarea clientului HTTP utilizat în Node.js, undici 5.28.3, în care a fost corectată vulnerabilitatea (CVE-2024-24758), cauzată de lipsa curățării antetului HTTP Proxy-Authorization la redirecționarea cererilor.
Sursa: opennet.ro
