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


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

20402GitHub заставил Dependabot ждать три дня перед обновлением зависимостей 20401Как модели OpenAI вырвались из закрытого теста и добрались до серверов Hugging Face? 20400Что на самом деле стоит за заявленной точностью 95,95% у новой модели Microsoft для... 20399Почему Cruciferra стал самым опасным крипт-сервисом для Windows-малвари? 20398Уязвимость с оценкой 10.0: как взломщики добрались до внутренних функций Arista VeloCloud 20397Почему один HTTP-запрос способен взломать вашу CI/CD-цепочку в TeamCity? 20396Кто на самом деле нашёл дырку в ядре Linux — человек или искусственный интеллект? 20395Как редактор рабочих процессов n8n превращается в root-доступ к серверу? 20394Как иранские хакеры превратили календарь Microsoft 365 в шпионский канал связи? 20393Как Telegram стал каналом управления для новой шпионской кампании против правительств... 20392От учителя английского в Праге до главного редактора Live Science: путь Александра... 20391Почему у сотен тысяч серверов ключи от двери лежат под ковриком уже двадцать лет? 20390Как посмотреть «Jurassic Sharks» из любой точки мира: гид по «Shark Week» 2026 20389Почему обелиск Вашингтона стал памятником спору, а не человеку? 20388Альянс без устава: зачем NVIDIA собрала 37 компаний вокруг безопасности AI-агентов?
Ссылка