CRITICAL✓ PATCH🇬🇧 English

CVE-2023-39332

Path traversal w Node.js przez obiekty Uint8Array w funkcjach node:fs

CVSS 9.8v3.1pub. 2023-10-18upd. 2025-11-03

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.

🤖 Analiza AI
Jak działa

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.

Skutki

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.

Mitygacja

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.

Kogo dotyczy

Node.js (wersje wskazane w referencjach producenta) korzystający z eksperymentalnego modelu uprawnień (permission model) oraz Fedora Project Fedora

Uwagi

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 Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Fedora Project Fedora

    OS
    Fedoraproject
    39
  • Node.js

    APP
    Nodejs
    20.0.0 – 20.8.0 (bez)
🟢
PATCH DOSTĘPNY
Aktualizacja od producenta gotowa. Wdrożenie w ramach standardowego cyklu.
Tagi
Path Traversal
CWE
Referencje

Powiązane podatności

CVE-2024-4577CRITICAL9.8⚠ KEVPL ✓ten sam produkt

PHP CGI argument injection – RCE na Windows przez mechanizm Best-Fit

CVE-2024-5274CRITICAL9.6⚠ KEVPL ✓ten sam produkt

Type Confusion w V8 (Google Chrome) — RCE przez spreparowaną stronę HTML

CVE-2024-4947CRITICAL9.6⚠ KEVPL ✓ten sam produkt

Type Confusion w silniku V8 Chrome — zdalne wykonanie kodu (RCE)

CVE-2024-4671CRITICAL9.6⚠ KEVPL ✓ten sam produkt

Use-after-free w Google Chrome Visuals umożliwiający ucieczkę z sandbox

CVE-2023-6345CRITICAL9.6⚠ KEVPL ✓ten sam produkt

Integer overflow w Skia w Google Chrome — sandbox escape