Podatność path traversal w Node.js pozwala atakującemu na obejście mechanizmów ochrony przed przechodzeniem po ścieżkach plików poprzez przekazanie obiektów Uint8Array (niebędących instancją Buffer) do funkcji modułu node:fs. Jest to krytyczna luka umożliwiająca nieautoryzowany dostęp do systemu plików.
▸ Pokaż oryginał (EN)
Various `node:fs` functions allow specifying paths as either strings or `Uint8Array` objects. In Node.js environments, the `Buffer` class extends the `Uint8Array` class. Node.js prevents path traversal through strings (see CVE-2023-30584) and `Buffer` objects (see CVE-2023-32004), but not through non-`Buffer` `Uint8Array` objects. This is distinct from CVE-2023-32004 which only referred to `Buffer` objects. However, the vulnerability follows the same pattern using `Uint8Array` instead of `Buffer`. Please note that at the time this CVE was issued, the permission model is an experimental feature of Node.js.
Funkcje modułu node:fs w Node.js akceptują ścieżki jako ciągi znaków (string) lub obiekty Uint8Array. Node.js blokuje ataki path traversal dla ścieżek przekazywanych jako string oraz jako obiekty Buffer (który dziedziczy po Uint8Array), jednak nie sprawdza poprawnie ścieżek przekazywanych jako inne obiekty Uint8Array niebędące instancją Buffer. Atakujący może skonstruować złośliwy obiekt Uint8Array zawierający sekwencje path traversal (np. '../'), który zostanie zaakceptowany przez model uprawnień Node.js bez odpowiedniej walidacji. Podatność dotyczy eksperymentalnego modelu uprawnień (permission model) dostępnego w Node.js w momencie publikacji CVE.
Atakujący może uzyskać nieautoryzowany dostęp do plików i katalogów poza dozwolonym zakresem, co może prowadzić do ujawnienia poufnych danych, modyfikacji plików systemowych lub przejęcia kontroli nad systemem.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Dodatkowo zaleca się unikanie przekazywania niezaufanych danych do funkcji modułu node:fs oraz ograniczenie stosowania eksperymentalnego permission model do czasu dostarczenia poprawki.
Node.js (wersje wskazane w referencjach producenta) korzystający z eksperymentalnego modelu uprawnień (permission model) oraz Fedora Project Fedora
Podatność jest ściśle powiązana z CVE-2023-30584 (path traversal przez string) oraz CVE-2023-32004 (path traversal przez obiekty Buffer). Niniejsza luka stanowi odrębny przypadek wykorzystujący obiekty Uint8Array niebędące instancją Buffer. W momencie publikacji CVE permission model w Node.js był funkcją eksperymentalną.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HFedora Project Fedora
OSFedoraproject39Node.js
APPNodejs20.0.0 – 20.8.0 (bez)
Powiązane podatności
PHP CGI argument injection – RCE na Windows przez mechanizm Best-Fit
Type Confusion w V8 (Google Chrome) — RCE przez spreparowaną stronę HTML
Type Confusion w silniku V8 Chrome — zdalne wykonanie kodu (RCE)
Use-after-free w Google Chrome Visuals umożliwiający ucieczkę z sandbox
Integer overflow w Skia w Google Chrome — sandbox escape