Katalog CVE

CVE-2026-92958

WysokieCVSS 8.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Streszczenie

vm2 do wersji 3.11.6 zawiera obejście listy zablokowanych modułów wbudowanych w NodeVM. Gdy osadzający używa symbolu wieloznacznego builtin wraz z wpisami negatywnymi (np. require: { builtin: ['*', '-fs', '-child_process'] }), wpisy negatywne są dopasowywane po dokładnej nazwie modułu, więc -fs usuwa tylko moduł fs, a nie jego podścieżki, takie jak fs/promises. Kod w sandboxie może wywołać require('fs/promises') lub require('node:fs/promises') i uzyskać dostęp do API systemu plików opartego na obietnicach.

Ocena ryzyka

Sandboxowany kod może uzyskać dostęp do operacji systemu plików hosta, w tym tworzenia i zapisu plików, mimo że moduł fs został zablokowany. Może to prowadzić do modyfikacji lub ujawnienia danych na hoście.

Rekomendacja

Zaktualizuj vm2 do wersji 3.11.7 lub nowszej. Zweryfikuj konfigurację listy zablokowanych modułów i nie polegaj wyłącznie na wpisach negatywnych dla podścieżek.

Inne podatności w vm2

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

vm2 through 3.11.6 contains a builtin-module denylist bypass in NodeVM. When the embedder uses the builtin wildcard together with negative entries (e.g. require: { builtin: ['*', '-fs', '-child_process'] }), negative entries are matched by exact module name in lib/builtin.js, so -fs removes only the builtin named fs and does not remove builtin subpaths such as fs/promises. Sandboxed code can therefore call require('fs/promises') or require('node:fs/promises') and reach the promise-based filesystem API despite fs being denied; node: prefix handling is likewise inconsistent (a -node:fs/promises entry does not block require('fs/promises')). Host file creation and writing were confirmed via fsp.writeFile(), and other fs/promises operations (cp, mkdir, rename, rm, rmdir, truncate, read operations, etc.) are also reachable. This issue is fixed in vm2 3.11.7.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS