Критическая уязвимость 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

Комментарии (0)

Войдите, чтобы оставить комментарий

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

Кибербезопасность 1 неделю назад

Microsoft закрыла активно эксплуатируемую уязвимость нулевого дня в Office

Microsoft выпустила экстренное обновление безопасности для Microsoft Office, закрывающее уязвимость нулевого дня, которая уже используется в атаках. Обновление устраняет обход механизмов защиты и рекомендуется к установке как можно скорее.

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

Фейковый npm пакет для WhatsApp API крадет сообщения, контакты и токены входа

Вредоносный npm-пакет "lotusbail", который маскируется под WhatsApp API, крадёт сообщения, токены и контакты, а также обеспечивает злоумышленникам постоянный доступ к учётной записи жертвы.

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

Вредоносные расширения ClawHub для OpenClaw: обнаружено 341 модуль

Крупное исследование безопасности обнаружило 341 вредоносное расширение в каталоге ClawHub для ИИ-ассистента OpenClaw. Злоумышленники использовали социальную инженерию и скрытые загрузки для распространения инфостилеров и похищения данных.

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

Популярное расширение Chrome перехватывало AI-чаты пользователей

Популярное расширение Google Chrome с пометкой "Рекомендованно" оказалось замешано в скрытом сборе AI-чатов пользователей. Расследование показало, что расширение перехватывало запросы и ответы из ChatGPT, Claude, Gemini и других сервисов, отправляя их на сторонние серверы под видом аналитики.

61 0 1 мин