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


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

19857Острова как политический побег: от Атлантиды до плавучих государств Питера Тиля 19856Яйца, которые спасли предков млекопитающих от худшего апокалипсиса на Земле? 19855Могут ли омары чувствовать боль, и почему учёные требуют запретить варить их живыми? 19854Премия в $3 млн за первое CRISPR-лечение серповидноклеточной анемии 19853Почему сотрудники игнорируют корпоративное обучение и как это исправить 19852Тинтагель: место силы Артура или красивая легенда? 19851Голоса в голове сказали правду: что происходит, когда галлюцинации ставят диагноз точнее... 19850Куда исчезает информация из чёрных дыр, если они вообще исчезают? 19849Чёрная дыра лебедь Х-1 бросает джеты со скоростью света — но кто ими управляет? 19848Что увидели фотографы над замком Линдисфарн — и почему они закричали? 19847Почему антисептики в больницах могут создавать устойчивых к ним микробов? 19846Правда ли, что курица может жить без головы? 19845Как Оскар Уайльд использовал причёску как оружие против викторианской морали? 19844Назальный спрей против всех вирусов: как далеко зашла наука 19843«Я ещё не осознал, что мы только что сделали»: первая пресс-конференция экипажа Artemis II
Ссылка