CRITICAL✓ PATCH🇬🇧 English

CVE-2024-21896

Path traversal w Permission Model Node.js przez monkey-patching Buffer

CVSS 9.8v3.1pub. 2024-02-20upd. 2025-04-02

Podatność w eksperymentalnym modelu uprawnień (permission model) Node.js pozwala ominąć ochronę przed path traversal poprzez manipulację wewnętrznymi metodami obiektu Buffer. Luka otrzymała ocenę CVSS 9.8 (krytyczną), co wskazuje na możliwość poważnego naruszenia poufności, integralności i dostępności danych.

Pokaż oryginał (EN)

The permission model protects itself against path traversal attacks by calling path.resolve() on any paths given by the user. If the path is to be treated as a Buffer, the implementation uses Buffer.from() to obtain a Buffer from the result of path.resolve(). By monkey-patching Buffer internals, namely, Buffer.prototype.utf8Write, the application can modify the result of path.resolve(), which leads to a path traversal vulnerability. This vulnerability affects all users using the experimental permission model in Node.js 20 and Node.js 21. 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

Permission model w Node.js chroni się przed atakami path traversal, wywołując funkcję path.resolve() na ścieżkach dostarczonych przez użytkownika, a następnie konwertując wynik do obiektu Buffer przy pomocy Buffer.from(). Atakujący może zastosować technikę monkey-patchingu, podmieniając wewnętrzną metodę Buffer.prototype.utf8Write, co umożliwia modyfikację wyniku zwróconego przez path.resolve(). W efekcie mechanizm ochrony przed path traversal zostaje obejście, a aplikacja może zostać nakłoniona do odczytu lub zapisu plików poza zamierzonymi ścieżkami.

Skutki

Atakujący może uzyskać nieautoryzowany dostęp do plików i zasobów systemu plików poza dozwolonymi ścieżkami, co prowadzi do naruszenia poufności, integralności oraz dostępności danych przetwarzanych przez aplikację.

Mitygacja

Należy zastosować patche dostępne u producenta zgodnie z referencjami. Jeśli aktualizacja nie jest możliwa, należy rozważyć wyłączenie eksperymentalnego permission model do czasu wdrożenia poprawki.

Kogo dotyczy

Użytkownicy korzystający z eksperymentalnego permission model w Node.js 20 oraz Node.js 21. Podatność nie dotyczy instalacji, w których permission model nie jest włączony.

Uwagi

W chwili publikacji CVE permission model był funkcją eksperymentalną Node.js — podatność dotyczy wyłącznie środowisk, w których ta funkcja jest aktywnie używana.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Node.js

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

Powiązane podatności

CVE-2026-48930CRITICAL9.8PL ✓ten sam produkt

Node.js TLS: błąd obsługi hostname z null-bajtem prowadzi do przekierowania authority

CVE-2026-21636CRITICAL10.0PL ✓ten sam produkt

Node.js: obejście modelu uprawnień przez Unix Domain Socket

CVE-2025-55130CRITICAL9.1PL ✓ten sam produkt

Obejście modelu uprawnień w Node.js poprzez spreparowane symlinki

CVE-2024-3566CRITICAL9.8PL ✓ten sam produkt

Command injection w aplikacjach Windows korzystających z CreateProcess

CVE-2023-39332CRITICAL9.8ten sam produkt

Various `node:fs` functions allow specifying paths as either strings or `Uint8Array` objects. In Node.js envir...