vm2 — это виртуальная машина/песочница с открытым исходным кодом для Node.js. До версии 3.11.3 можно было перехватить исключение хоста, используя выражение yield* внутри асинхронного генератора. Когда генератор закрывается с помощью функции возврата, значение ожидается, а исключения, возникшие в вызове then, будут перехвачены средой выполнения и переданы итератору доходности* в качестве следующего значения.
Это позволяет злоумышленникам писать код, который может выйти из «песочницы» VM2 и выполнить произвольные команды в хост-системе. Эта уязвимость исправлена в версии 3.11.3.
Показать оригинальное описание (EN)
vm2 is an open source vm/sandbox for Node.js. Prior to 3.11.3, it is possible to catch a host exception using the yield* expression inside an async generator. When the generator is closed using the return function, the value is awaited on and exceptions thrown in the then call will be caught by the runtime and passed to the yield* iterator as the next value. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system. This vulnerability is fixed in 3.11.3.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Vm2_Project Vm2
cpe:2.3:a:vm2_project:vm2:*:*:*:*:*:node.js:*:*
|
— |
3.11.3
|