У бібліотеці vm2 — популярному інструменті для запуску недовіреного JavaScript-коду в ізольованому середовищі Node.js — виявлено критичні вразливості, які дають змогу вийти за межі пісочниці та виконати довільний код на хостовій системі. Раніше виявлена вразливість CVE-2026-22709 отримала оцінку 9.8 із 10 за шкалою CVSS, що відповідає критичному рівню небезпеки. Повідомляється, що нові проблеми безпеки продовжують серію побігів із пісочниці, що ставить під сумнів надійність JavaScript-пісочниць як класу рішень для ізоляції недовіреного коду.
Технічні деталі
Бібліотека vm2 — це проєкт з відкритим вихідним кодом, який, за описом розробників, забезпечує безпечне виконання недовіреного JavaScript-коду шляхом перехоплення та проксування об’єктів JavaScript, запобігаючи доступу ізольованого коду до середовища хоста. Бібліотеку широко використовують у проєктах, де необхідно виконувати користувацький або сторонній код — від платформ автоматизації до онлайн-редакторів коду.
Підтверджена вразливість CVE-2026-22709 має оцінку CVSS 9.8, що вказує на можливість віддаленої експлуатації без автентифікації з повною компрометацією конфіденційності, цілісності та доступності хостової системи. Вразливість належить до класу побігів із пісочниці (sandbox escape) і дає змогу зловмиснику, який контролює код, що виконується в пісочниці, отримати доступ до ресурсів основної операційної системи.
Початковий матеріал вказує на виявлення низки додаткових критичних вразливостей у vm2, однак конкретний перелік CVE-ідентифікаторів для цих вразливостей у доступних первинних джерелах не наводиться, що не дає змоги незалежно верифікувати точну кількість і характер усіх заявлених проблем. Статус активної експлуатації цих вразливостей наразі невідомий; CVE-2026-22709 не внесена до каталогу CISA KEV.
Системна проблема JavaScript-пісочниць
Серія побігів із пісочниці vm2 ілюструє фундаментальну складність надійної ізоляції недовіреного коду в середовищі JavaScript. Модель безпеки vm2 ґрунтується на проксуванні об’єктів — підході, який за своєю природою вразливий до обходів через неочевидні шляхи доступу до прототипів, контексту виконання або внутрішніх механізмів рушія V8.
За даними дослідників, сам мейнтейнер проєкту Патрік Шимек визнавав, що виявлення нових обходів пісочниці в майбутньому є цілком імовірним. Це твердження є показовим: воно означає, що розробник усвідомлює архітектурні обмеження обраного підходу до ізоляції. Для проєктів, які критично залежать від надійності пісочниці, це сигнал до перегляду архітектурних рішень.
Оцінка впливу
Найбільшому ризику піддаються:
- Платформи з користувацьким кодом — сервіси, які дають змогу клієнтам завантажувати та виконувати JavaScript (платформи автоматизації, серверні функції, плагіни)
- CI/CD-системи, які використовують vm2 для ізольованого виконання скриптів збірки або тестів
- Серверні застосунки Node.js, що обробляють шаблони або вирази, надані користувачами
Успішна експлуатація вразливості побігу з пісочниці з оцінкою CVSS 9.8 може призвести до повної компрометації сервера: виконання довільних команд, викрадення даних, встановлення зловмисного програмного забезпечення або використання скомпрометованого вузла для подальшого просування інфраструктурою.
Практичні рекомендації
- Аудит залежностей: перевірте, чи використовується vm2 у ваших проєктах — як пряма, так і транзитивна залежність. Команда
npm ls vm2покаже наявність бібліотеки в дереві залежностей. - Оновлення: встановіть останню доступну версію vm2, що містить виправлення для CVE-2026-22709. Перегляньте запис NVD, щоб отримати актуальну інформацію про вразливі та виправлені версії.
- Оцінка альтернатив: для критичних сценаріїв розгляньте більш надійні механізми ізоляції — контейнери з обмеженими привілеями, окремі процеси із використанням Worker Threads у зв’язці з обмеженнями на рівні ОС або рішення на основі WebAssembly.
- Принцип найменших привілеїв: процес Node.js, що використовує vm2, має працювати з мінімальними правами в операційній системі. Це обмежить шкоду в разі успішного побігу з пісочниці.
- Моніторинг: налаштуйте відстеження аномальної активності процесів Node.js — створення дочірніх процесів, звернення до файлової системи поза робочою директорією, мережеві підключення до нетипових адрес.
Виявлення серії критичних вразливостей побігу з пісочниці у vm2 — це не просто черговий інцидент, що вимагає оновлення залежності. Це привід для архітектурного рішення: якщо ваш проєкт покладається на vm2 як на єдиний бар’єр між недовіреним кодом і хостовою системою, необхідно або додати додаткові рівні ізоляції (контейнеризація, обмеження на рівні ОС), або перейти на принципово інший механізм виконання недовіреного коду. Пріоритет — негайне оновлення vm2 та паралельна оцінка архітектурних альтернатив.