Katalog CVE

CVE-2026-92935

KrytyczneCVSS 9.0
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Streszczenie

vm2, sandbox do uruchamiania niezaufanego kodu Node.js, w wersjach 3.11.4–3.11.6 błędnie traktuje tablicę przekazaną jako opcja 'require' (np. require: []) jako prawidłową konfigurację, co omija zabezpieczenie przed zagnieżdżaniem. Atakujący może następnie zażądać modułu hosta vm2, utworzyć wewnętrzny NodeVM z wybraną listą dozwolonych wbudowanych modułów (np. child_process) i wykonać dowolne polecenia z uprawnienami procesu Node.js hosta, uciekając z sandboxa. Problem naprawiono w wersji 3.11.7.

Ocena ryzyka

Ucieczka z sandboxa pozwala na zdalne wykonanie kodu z uprawnieniami procesu hosta, co może prowadzić do pełnego przejęcia serwera uruchamiającego niezaufany kod. Organizacje używające vm2 do izolacji kodu powinny traktować to jako krytyczne ryzyko.

Rekomendacja

Zaktualizuj bibliotekę vm2 do wersji 3.11.7 lub nowszej. Do czasu aktualizacji unikaj konfiguracji NodeVM z opcją 'nesting' ustawioną na wartość prawdziwą oraz nie przekazuj tablic jako wartości opcji 'require'.

Inne podatności w vm2

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

vm2 is a sandbox for running untrusted Node.js code. In versions >= 3.11.4 and <= 3.11.6, the NodeVM constructor computes `hasRealRequireConfig` with `typeof requireOpts === 'object' && requireOpts !== null`, so an array-shaped `require` value (for example `require: []`) satisfies the guard that is meant to reject nesting without an explicit require configuration. `makeResolverFromLegacyOptions()` then destructures the array into undefined option fields and returns a resolver containing only `NESTING_OVERRIDE.vm2`. As a result, an attacker who can supply JavaScript executed by a NodeVM configured with truthy `nesting` and an array-shaped `require` (e.g. `new NodeVM({nesting: true, require: []})`) can require the host `vm2` module, create an inner NodeVM with an attacker-chosen builtin allowlist (such as `child_process`), and execute arbitrary commands with the privileges of the host Node.js process, escaping the sandbox. Outer builtin restrictions do not constrain the attacker-created inner NodeVM. This issue is fixed in vm2 3.11.7.

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