vm2 — это виртуальная машина/песочница с открытым исходным кодом для Node.js. В vm2 до версии 3.10.2 очистку обратного вызова Promise.prototype.then `Promise.prototype.catch` можно обойти. Это позволяет злоумышленникам выйти из «песочницы» и запустить произвольный код.
В lib/setup-sandbox.js функция обратного вызова localPromise.prototype.then очищается, но globalPromise.prototype.then не очищается. Возвращаемым значением асинхронных функций является объект globalPromise. Версия 3.10.2 устраняет проблему.
Показать оригинальное описание (EN)
vm2 is an open source vm/sandbox for Node.js. In vm2 prior to version 3.10.2, `Promise.prototype.then` `Promise.prototype.catch` callback sanitization can be bypassed. This allows attackers to escape the sandbox and run arbitrary code. In lib/setup-sandbox.js, the callback function of `localPromise.prototype.then` is sanitized, but `globalPromise.prototype.then` is not sanitized. The return value of async functions is `globalPromise` object. Version 3.10.2 fixes the issue.
Характеристики атаки
Последствия
Строка CVSS v3.1