Критическая уязвимость vm2 в Node.js

В популярной библиотеке vm2, которая используется в экосистеме Node.js для безопасного выполнения непроверенного JavaScript-кода, обнаружена критическая уязвимость, позволяющая злоумышленникам обойти защитную песочницу (sandbox) и выполнить произвольный код на хост-системе.

Проблема получила идентификатор CVE-2026-22709 и оценку 9.8 из 10 по шкале CVSS, что отражает её высокую опасность: уязвимость может быть использована удалённо, без участия пользователя и без прав доступа, чтобы полностью скомпрометировать систему.

Что такое vm2 и почему уязвимость важна

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

Однако ошибка в механизме обработки Promise (асинхронных операций JavaScript) подрывает эту изоляцию. Библиотека корректно фильтрует обратные вызовы (.then/.catch) для собственных объектов localPromise, но не делает этого для глобальных Promise, которые возвращают асинхронные функции. Злоумышленник может воспользоваться этой разницей и заставить код выполнить команды за пределами песочницы.

Как работает уязвимость

  • Асинхронные функции в JavaScript возвращают глобальные Promise-объекты, а не локальные объекты, созданные vm2.

  • vm2 не фильтрует (sanitize) обработчики (callback) для глобальных Promise.prototype.then и Promise.prototype.catch.

  • Это позволяет злоумышленному коду в песочнице получить доступ к функциональности, выходящей за пределы изоляции, и выполнить произвольный код на хосте.

Что уже сделано и что теперь

Уязвимость затрагивает vm2 версии до 3.10.1 включительно. Разработчики библиотеки уже выпустили исправления: в версиях 3.10.2 и 3.10.3 уязвимость устранена.

Авторам vm2 пришлось неоднократно исправлять подобные проблемы в прошлом: в последние годы были обнаружены и устранены несколько уязвимостей, позволяющих выходить из песочницы (например, CVE-2023-29017, CVE-2023-29199 и другие). На какое-то время проект даже объявляли о прекращении поддержки, но к концу 2025 года его снова стали поддерживать.

Поддерживающий разработчик также отметил, что в будущем могут появиться новые способы обхода ограничений vm2, поэтому важно не только обновляться, но и рассматривать более устойчивые альтернативы, такие как isolated-vm, которая использует интерфейсы изоляции V8 на низком уровне, обеспечивая более надёжную изоляцию.

Рекомендации для разработчиков и администраторов

  • Срочно обновите все проекты, где используется vm2, до версии 3.10.3 или новее.

  • Если обновление невозможно, ограничьте ввод непроверенного кода и пересмотрите архитектуру решения.

  • Рассмотрите альтернативы vm2 с более строгими гарантиями изоляции, например, isolated-vm или контейнерные/виртуальные окружения с аппаратной поддержкой.

  • Проверьте журналы на предмет подозрительной активности, особенно если ваше приложение позволяет выполнение стороннего JavaScript-кода.

Источник: HN

Похожие статьи

Рекомендательные технологии Подробнее
Кибербезопасность 4 месяца назад

Фишинговая кампания без вредоносного ПО крадёт логины Dropbox через поддельные PDF-файлы

Фишинговая кампания, в которой злоумышленники крадут учётные данные Dropbox с помощью поддельных PDF-файлов. Атака не использует вредоносное ПО и полагается на социальную инженерию, что делает её особенно опасной для корпоративных пользователей.

Кибербезопасность 3 месяца назад

CISA предупредила об активной эксплуатации критической уязвимости в FileZen

CISA подтвердила активную эксплуатацию уязвимости CVE-2026-25108 в системе FileZen. Проблема позволяет выполнять произвольные команды на сервере и требует срочного обновления.

Кибербезопасность 1 месяц назад

Microsoft подтвердила активную эксплуатацию уязвимости Windows Shell

Microsoft подтвердила эксплуатацию уязвимости Windows Shell CVE-2026-32202, связанной с неполным исправлением предыдущих багов. Уязвимость позволяет атакующим получать учетные данные через LNK-файлы.

Кибербезопасность 5 дней назад

F5 устранила две критические уязвимости в NGINX

F5 выпустила обновления для устранения двух критических уязвимостей в NGINX Open Source и связанных продуктах. Обе ошибки позволяют удалённое выполнение кода при определённых конфигурациях сервера.