Katalog CVE

CVE-2026-92959

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

Streszczenie

vm2 przed wersją 3.11.8 nie egzekwuje w pełni opcji allowAsync: false w VM i NodeVM. Mimo że localPromise.prototype.then jest zastąpione procedurą rzucającą błąd 'Async not available', statyczne metody Promise w sandboxie (Promise.resolve, Promise.all, Promise.race, Promise.any, Promise.allSettled) nadal asymilują dostarczone przez atakującego thenable, co pozwala na zaplanowanie pracy po zakończeniu VM.run() lub NodeVM.run() i poza skonfigurowanym limitem czasu.

Ocena ryzyka

Kod w sandboxie może kontynuować wykonywanie po tym, jak host uzna, że wykonanie zostało zakończone, co może prowadzić do nieprzewidzianych działań i obejścia ograniczeń czasowych. Może to naruszyć izolację sandboxa.

Rekomendacja

Zaktualizuj vm2 do wersji 3.11.8 lub nowszej. Nie polegaj wyłącznie na opcji allowAsync: false do ograniczania asynchroniczności w niezaufanym kodzie.

Inne podatności w vm2

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

vm2 before 3.11.8 does not fully enforce the allowAsync: false option in VM and NodeVM. While localPromise.prototype.then is replaced with a handler that throws 'Async not available', the sandbox's Promise static methods (Promise.resolve, Promise.all, Promise.race, Promise.any, and Promise.allSettled) still assimilate attacker-supplied thenables: native promise resolution performs PromiseResolveThenableJob and invokes the sandboxed code's then method in a microtask without passing through the patched then, so the async restriction is never applied. As a result, sandboxed script can schedule work that runs after VM.run() or NodeVM.run() has returned and outside the configured timeout, continuing to execute after the host believes execution is complete.

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