Как критическая уязвимость CVE-2026-22709 разрушает изоляцию в популярной библиотеке vm2?

Популярная библиотека Node.js под названием vm2, предназначенная для запуска ненадежного кода в защищенной среде, столкнулась с критической уязвимостью выхода из песочницы (sandbox escape). Идентифицированная как CVE-2026-22709, эта брешь в безопасности получила практически максимальную оценку серьезности CVSS — 9.8 из 10.0. Уязвимость классифицируется как возможность выполнения произвольного кода, что позволяет злоумышленникам обойти механизмы изоляции библиотеки и получить доступ к операционной системе хоста. Библиотека функционирует за счет перехвата и проксирования объектов JavaScript для блокировки доступа к основной системе, однако новый вектор атаки демонстрирует критический сбой в этой архитектуре.
Как критическая уязвимость CVE-2026-22709 разрушает изоляцию в популярной библиотеке vm2?
Изображение носит иллюстративный характер

Техническая первопричина проблемы кроется в некорректной санитарной обработке (санитизации) обработчиков объектов Promise в определенных версиях библиотеки. Механизм защиты можно обойти через манипуляции с колбэками Promise.prototype.then и Promise.prototype.catch. Исследователи выяснили, что асинхронные функции в JavaScript возвращают объекты globalPromise, а не localPromise. В то время как объекты localPromise подвергались корректной очистке, методы globalPromise (в частности, .then и .catch) не проходили надлежащую проверку, что создало вектор для побега из изолированной среды.

Уязвимость была обнаружена в версии vm2 3.10.0. Для устранения угрозы разработчики оперативно выпустили промежуточное исправление в версии 3.10.2, однако окончательной и настоятельно рекомендуемой версией является vm2 3.10.3. Данное обновление содержит не только исправления для CVE-2026-22709, но и патчи для дополнительных сценариев выхода из песочницы, что делает его критически важным для всех пользователей библиотеки. Компания Semgrep, занимающаяся вопросами безопасности, также предоставила анализ методов смягчения последствий данной угрозы.

Открытие уязвимости является заслугой исследователей Пейтона Кеннеди (Peyton Kennedy) и Криса Стайку (Cris Staicu) из компании Endor Labs, которые детально проанализировали механизм обхода. Сопровождением и исправлением библиотеки занимается ее мейнтейнер Патрик Симек (Patrik Simek). Признание проблемы и скорая реакция сообщества подчеркивают высокие риски, связанные с использованием инструментов виртуализации кода в промышленных средах без должного надзора.

Исторический контекст показывает, что библиотека vm2 сталкивается с постоянным потоком проблем безопасности в последние годы. CVE-2026-22709 пополнила длинный список предыдущих уязвимостей, среди которых зафиксированы: CVE-2022-36067, CVE-2023-29017, CVE-2023-29199, CVE-2023-30547, CVE-2023-32314, CVE-2023-37466 и CVE-2023-37903. Регулярность появления новых способов обхода защиты ставит под сомнение надежность используемой архитектуры проксирования для обеспечения полной изоляции ненадежного кода.

Судьба проекта vm2 претерпела значительные изменения за последние несколько лет. В июле 2023 года, после обнаружения CVE-2023-37903, Патрик Симек объявил о прекращении поддержки проекта. Однако ситуация изменилась: к октябрю 2025 года страница безопасности проекта была обновлена, и теперь там указано, что версии vm2 3.x активно поддерживаются. Упоминания о прекращении работы были удалены из файла README на GitHub, хотя мейнтейнер открыто предупреждает, что новые обходы защиты, вероятно, будут обнаружены и в будущем.

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


Новое на сайте

20868Уязвимости Plex открыли путь майнерам и Linux-бэкдору 20867Взлом OpenCode Console: под угрозой могли оказаться ключи OpenAI, Anthropic и Google 20866Rank Math PRO: заражённое обновление оставило на сайтах самовосстанавливающийся бэкдор 20865Как исследовательские модели OpenAI обходили ограничения и присваивали чужие данные 20864Атака на BeyondTrust: шпионская группа получила доступ к серверам поддержки 20863Как пакет imgdecode превращает npm-зависимость в загрузчик вредоносного кода? 20862Как PEERSTITCH обходит проверки VPN-сессий FortiOS? 20861Что происходит, когда ИИ-агент выходит за пределы тестовой среды? 20860Как 37-летняя ошибка открыла путь к root в OpenBSD 7.9? 20859ИИ-модели для SOC: точный ответ зависит от улик 20858Как одна учётная запись ConnectWise открыла доступ к 173 арендаторам Microsoft 365? 20857Пять минут до заражения: как подменили обновления AOMEI Backupper 20856Ловушка под видом регистрации: как UAT-11985 крадёт аккаунты Google 20855Может ли виртуальная машина прочитать память хоста? 20854Как дешёвые Android-смартфоны превращаются в чужие прокси?
Ссылка