CRITICAL🇬🇧 English

CVE-2026-47137

Ominięcie poprawki bezpieczeństwa w sandbox vm2 dla Node.js (bypass sandboxu)

CVSS 10.0v3.1pub. 2026-06-12

Biblioteka vm2 (sandbox dla Node.js) w wersjach przed 3.11.4 zawiera wadliwie zaimplementowaną poprawkę bezpieczeństwa, która może zostać ominięta przez pominięcie opcji 'require' w konfiguracji. Umożliwia to ucieczkę z sandboxu i wykonanie dowolnego kodu poza izolowanym środowiskiem, co jest szczególnie groźne dla aplikacji używających vm2 do uruchamiania niezaufanego kodu.

Pokaż oryginał (EN)

vm2 is an open source vm/sandbox for Node.js. Prior to version 3.11.4, the fix for GHSA-8hg8-63c5-gwmx (CVE-2023-37903) introduced a check in nodevm.js line 263 that blocks the combination nesting: true + require: false. However, the check uses strict equality (options.require === false), which is trivially bypassed by omitting the require option entirely. When require is not specified, options.require is undefined, not false. The strict equality check fails, so the security guard is skipped. Immediately after (line 280), the destructuring default require: requireOpts = false assigns requireOpts = false, producing the exact configuration the patch was designed to prevent. This issue has been patched in version 3.11.4.

🤖 Analiza AI
Jak działa

Poprawka wprowadzona dla CVE-2023-37903 dodała w pliku nodevm.js (linia 263) sprawdzenie blokujące kombinację opcji 'nesting: true' oraz 'require: false'. Sprawdzenie używa jednak ścisłego porównania (options.require === false), które nie wykrywa sytuacji, gdy opcja 'require' nie jest w ogóle podana — wówczas jej wartość wynosi 'undefined', a nie 'false', więc warunek ochronny nie jest spełniany. Bezpośrednio po tym sprawdzeniu (linia 280) destrukturyzacja z wartością domyślną 'require: requireOpts = false' przypisuje zmiennej requireOpts wartość 'false', odtwarzając dokładnie tę konfigurację, przed którą miała chronić poprawka. W efekcie atakujący, pomijając opcję 'require', może doprowadzić do uruchomienia sandboxu w konfiguracji, która powinna być zablokowana.

Skutki

Atakujący może uciec z izolowanego środowiska sandboxu vm2 i wykonać dowolny kod w kontekście procesu Node.js hosta, uzyskując pełną kontrolę nad zasobami serwera (poufność, integralność i dostępność — wszystkie ocenione jako HIGH w wektorze CVSS z zakresem zmienionym na Scope: Changed).

Mitygacja

Należy zaktualizować bibliotekę vm2 do wersji 3.11.4 lub nowszej, w której błąd został naprawiony. Szczegóły dostępne w referencjach producenta (GitHub release v3.11.4 oraz security advisory GHSA-m4wx-m65x-ghrr).

Kogo dotyczy

Biblioteka vm2 w wersjach przed 3.11.4 (wszystkie wersje, w których zastosowano poprawkę dla GHSA-8hg8-63c5-gwmx / CVE-2023-37903, a więc od momentu wprowadzenia wadliwego sprawdzenia do wydania 3.11.4).

Uwagi

Podatność stanowi bypass wcześniejszej poprawki dla CVE-2023-37903 (GHSA-8hg8-63c5-gwmx). Projekt vm2 był wcześniej wielokrotnie dotknięty podatnościami umożliwiającymi ucieczkę z sandboxu — rekomendowane jest rozważenie alternatywnych, aktywnie utrzymywanych mechanizmów izolacji kodu Node.js.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje
CVE-2026-47137 — Ominięcie poprawki bezpieczeństwa w sandbox vm2 dla Node.js (bypass sandboxu) — CRITICAL 10.0 | CVEbaza.pl