Песочница оказалась дырявым ведром. Очередной способ взломать Node.js уже гуляет по сети

Исправить положение дел быстро не выйдет, и на это есть причины.

Критическая уязвимость в популярной библиотеке vm2 для Node.js поставила под угрозу сервисы, которые запускают чужой JavaScript-код в изолированной среде. Ошибка позволяет выйти за пределы песочницы и получить выполнение команд уже на самой системе. На фоне миллионов загрузок библиотеки через npm проблема затрагивает не только небольшие проекты, но и крупные SaaS-платформы, онлайн-компиляторы и инструменты автоматизации.

Проблему зарегистрировали под идентификатором CVE-2026-26956. Авторы уведомления подтвердили наличие бреши в версии vm2 3.10.4, хотя предыдущие выпуски тоже могут оказаться уязвимыми. Для ошибки уже появился публичный PoC-код, демонстрирующий удалённое выполнение команд на хосте.

Библиотеку vm2 используют для запуска недоверенного JavaScript-кода в изолированной среде Node.js. Её назначение — ограничить доступ к системным функциям, включая объект process и файловую систему. Однако новая ошибка нарушает сам принцип изоляции.

Причина связана с обработкой исключений между песочницей и основной средой выполнения. В обычных условиях vm2 полагается на механизмы защиты JavaScript и специальные Proxy-объекты, которые фильтруют взаимодействие между окружениями. Однако поддержка обработки исключений WebAssembly позволяет перехватывать ошибки на более низком уровне движка V8, обходя защитные механизмы библиотеки.

Не спрашивайте почему мы в MAX.

Атака строится вокруг специально подготовленного TypeError во время преобразования Symbol в строку. В результате объект ошибки из основной среды попадает обратно в песочницу без необходимой очистки. Поскольку объект создан уже вне sandbox-окружения, злоумышленник может через цепочку конструкторов восстановить доступ к внутренним возможностям Node.js и запустить произвольные команды на системе.

Разработчик vm2 уточнил, что проблема подтверждена для Node.js 25.6.1 при включённой поддержке обработки исключений WebAssembly и JSTag. Пользователям рекомендовали как можно быстрее перейти минимум на vm2 3.10.5, а актуальной версией сейчас считается 3.11.2.

Для vm2 подобные инциденты уже стали регулярными. В начале 2026 года библиотека получила ещё одну критическую уязвимость с выходом из песочницы — CVE-2026-22709. До этого аналогичные ошибки фиксировали в 2023 и 2022 годах. Серия подобных случаев показывает, насколько сложно надёжно изолировать удалённое выполнение кода даже в популярных инструментах.

Данные о правообладателе фото и видеоматериалов взяты с сайта «SecurityLab.ru», подробнее в Условиях использования