Как критическая уязвимость 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, который гарантирует изоляцию на уровне операционной системы, а не только на уровне приложения.


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

19521Банковский троян VENON на Rust атакует Бразилию с помощью девяти техник обхода защиты 19520Бонобо агрессивны не меньше шимпанзе, но всё решают самки 19519Почему 600-килограммовый зонд NASA падает на землю из-за солнечной активности? 19518«Липовый календарь»: как расписание превращает работников в расходный материал 19517Вредоносные Rust-пакеты и ИИ-бот крадут секреты разработчиков через CI/CD-пайплайны 19516Как хакеры за 72 часа превратили npm-пакет в ключ от целого облака AWS 19515Как WebDAV-диск и поддельная капча помогают обойти антивирус? 19514Могут ли простые числа скрываться внутри чёрных дыр? 19513Метеорит пробил крышу дома в Германии — откуда взялся огненный шар над Европой? 19512Уязвимости LeakyLooker в Google Looker Studio открывали доступ к чужим базам данных 19511Почему тысячи серверов оказываются открытой дверью для хакеров, хотя могли бы ею не быть? 19510Как исследователи за четыре минуты заставили ИИ-браузер Perplexity Comet попасться на... 19509Может ли женщина без влагалища и шейки матки зачать ребёнка естественным путём? 19508Зачем учёные из Вены создали QR-код, который невозможно увидеть без электронного... 19507Девять уязвимостей CrackArmor позволяют получить root-доступ через модуль безопасности...
Ссылка