Нов риск за среди, изпълняващи недоверен JavaScript
Критична уязвимост в популярната библиотека vm2 за Node.js позволява на атакуващи да заобиколят sandbox изолацията и да изпълняват произволен код директно върху хост системата.
Проблемът е проследен като CVE-2026-26956 и засяга версия 3.10.4, като е възможно и по-ранни версии да са уязвими. Публикуван е и proof-of-concept (PoC) експлойт, което значително повишава риска от реална експлоатация.
Как работи атаката
Уязвимостта произтича от неправилна обработка на изключения между sandbox средата и хоста.
По-конкретно:
- vm2 разчита на JavaScript механизми за изолация
- при активирани WebAssembly exception handling и JSTag в V8 engine тези защити могат да бъдат заобиколени
- чрез специално конструирана грешка (TypeError) се „изтича“ обект от хост средата към sandbox-а
- този обект дава достъп до вътрешни Node.js механизми като process
Крайният резултат е пълно изпълнение на код върху хост системата.
Кои среди са изложени на риск
Уязвимостта е потвърдена при:
- Node.js 25 (включително 25.6.1)
- активирани WebAssembly exception handling
- активирана JSTag поддръжка
Това означава, че не всички среди са автоматично засегнати, но при съвпадение на условията рискът е критичен.
Широко разпространение и реално въздействие
vm2 се използва масово – с над 1.3 милиона седмични изтегляния от npm.
Библиотеката е ключова за:
- онлайн coding платформи
- SaaS приложения
- automation системи
- среди, изпълняващи user-generated code
Това прави уязвимостта особено опасна, тъй като компрометира основен защитен механизъм – изолацията.
Повтарящ се проблем със sandbox сигурността
Това не е изолиран случай. През последните години vm2 е обект на множество критични уязвимости, включително:
- CVE-2026-22709
- CVE-2023-30547
- CVE-2023-29017
- CVE-2022-36067
Тази поредица подчертава фундаменталната трудност при сигурното изолиране на JavaScript код.
Какво трябва да направят организациите
Препоръчителните действия са ясни:
- незабавен ъпдейт до версия 3.10.5 или по-нова (актуално 3.11.2)
- проверка за използване на Node.js 25 с активирани рискови функции
- ограничаване на изпълнението на недоверен код, където е възможно
- допълнителни изолационни механизми извън JavaScript ниво (контейнери, sandboxing на ОС ниво)
CVE-2026-26956 показва, че JavaScript-базираната изолация сама по себе си не е достатъчна при съвременните runtime среди.
С нарастващата сложност на енджини като V8 и интеграцията на WebAssembly, границата между sandbox и хост става все по-трудна за защита.
За организациите това означава едно – sandbox-ът не трябва да се разглежда като крайна линия на защита, а като част от по-широка стратегия за сигурност.









