Добавить в корзинуПозвонить
Найти в Дзене
DigiNews

13 новых критических уязвимостей в «JavaScript sandbox» позволяют выполнять произвольный код

В пакете песочницы JavaScript vm2 обнаружено 13 критических уязвимостей, позволяющих коду злоумышленника сбежать из контейнера и нанести вред ИТ-средам. Разработчикам рекомендуется обновиться до версии 3.11.2. — csoonline.com В пакете песочницы JavaScript vm2 обнаружено тринадцать критических уязвимостей, которые могут позволить коду злоумышленника сбежать из контейнера и нанести вред ИТ-средам. В результате разработчикам, использующим эту библиотеку в своих приложениях, настоятельно рекомендуется обновить программное обеспечение до последней версии, которой на данный момент является 3.11.2. Предупреждения содержатся в уведомлениях от мейнтейнера vm2, Патрика Симека. vm2 — это open source vm/песочница, которая может выполнять недоверенный код с использованием разрешенных встроенных модулей Node.js. Одной из наиболее серьезных из 13 уязвимостей является CVE-2026-26956 — полный побег из песочницы с произвольным выполнением кода. Код злоумышленника, находящийся внутри VM.run(), может полу

В пакете песочницы JavaScript vm2 обнаружено 13 критических уязвимостей, позволяющих коду злоумышленника сбежать из контейнера и нанести вред ИТ-средам. Разработчикам рекомендуется обновиться до версии 3.11.2. — csoonline.com

В пакете песочницы JavaScript vm2 обнаружено тринадцать критических уязвимостей, которые могут позволить коду злоумышленника сбежать из контейнера и нанести вред ИТ-средам. В результате разработчикам, использующим эту библиотеку в своих приложениях, настоятельно рекомендуется обновить программное обеспечение до последней версии, которой на данный момент является 3.11.2.

Предупреждения содержатся в уведомлениях от мейнтейнера vm2, Патрика Симека.

vm2 — это open source vm/песочница, которая может выполнять недоверенный код с использованием разрешенных встроенных модулей Node.js.

Одной из наиболее серьезных из 13 уязвимостей является CVE-2026-26956 — полный побег из песочницы с произвольным выполнением кода. Код злоумышленника, находящийся внутри VM.run(), может получить объект хост-процесса и выполнять команды хоста без какого-либо содействия со стороны хоста.

Однако исследователи из Socket сообщили нам по электронной почте, что в уведомлении об этом побеге указано, что он подтвержден только на Node.js 25.6.1 и требует версии Node.js с обработкой исключений WebAssembly и поддержкой JSTag.

Наиболее рискованный сценарий, по их словам, — это приложение, использующее vm2 версии 3.10.4 на Node 25, куда в VM.run() передается JavaScript, контролируемый злоумышленником.

«Это узкоспециализированная, но очень влиятельная уязвимость», — сказал в электронном письме инженер-исследователь Socket Вэньсинь Цзян. «Похоже, она затрагивает не все развертывания vm2, поскольку в уведомлении указана конкретная уязвимая версия и конкретная комбинация Node 25/WebAssembly. Но когда эти условия совпадают, граница безопасности полностью нарушается: код, который должен был оставаться в песочнице, может достичь хост-процесса и выполнить команды. Именно поэтому команды, использующие vm2 для JavaScript, предоставленного пользователями, должны быстро установить исправление и проверить, к чему имеет доступ песочница».

Хотя Socket не является мейнтейнером vm2, он заявил, что выпускает патч для разработчиков, которые не могут немедленно обновиться до последней исправленной версии.

Еще одна серьезная брешь — CVE-2026-44007, уязвимость неправильного контроля доступа в библиотеке Node.js vm2, которая позволяет осуществить побег из песочницы и выполнение произвольных команд операционной системы на базовом хосте. В ее уведомлении говорится, что уязвимость связана с тем, как опция nesting:true взаимодействует с устаревшим средством разрешения модулей. Это было исправлено в версии vm2 3.11.1.

«Для CISO обе [уязвимости] заслуживают срочного внимания», — сказал Цзян, «но вторая [проблема с вложенностью NodeVM] может быть той, которую больше организаций должны немедленно проверить».

Исследователи Socket заявили, что обе уязвимости могут превратить JavaScript в песочнице в выполнение команд в хостовой системе. Разница заключается в том, сколько сред, вероятно, будут подвержены риску. Проблема с Node 25/WebAssembly кажется более узкой, поскольку она зависит от конкретной версии vm2 и конкретного поведения более новой среды выполнения Node.js. Проблема с вложенностью NodeVM может быть более широкой, поскольку она затрагивает больше версий и запускается шаблоном конфигурации, который некоторые разработчики могли использовать намеренно.

Цзян добавил, что оба уведомления указывают на более широкий урок: песочницы JavaScript трудно защитить, и небольшие различия в поведении среды выполнения или конфигурации могут иметь серьезные последствия для безопасности. «Первая проблема, по-видимому, связана с узким путем Node 25/WebAssembly», — сказал он. «Вторая проблема — это побег, вызванный конфигурацией, с участием NodeVM и nesting:true.

В обоих случаях наибольшему риску подвергаются организации, которые запускают недоверенный JavaScript и предполагают, что vm2 его сдерживает. Этим командам [разработки приложений] следует немедленно установить исправления и добавить более сильную изоляцию вокруг рабочих нагрузок в песочнице».

«Хрупкая модель безопасности»

Эти уязвимости побега из песочницы демонстрируют, почему песочница недоверенного кода внутри доверенного процесса является хрупкой моделью безопасности, — сказал в электронном письме Адам Рейнольдс, старший исследователь безопасности в Sonatype. «Как только недоверенный код выполняется внутри процесса с доступом к учетным данным и секретам, базовой файловой системе, сети или с привилегиями развертывания, обход песочницы может легко привести к полной компрометации системы», — отметил он.

Простой факт наличия vm2 где-то в дереве зависимостей недостаточен для того, чтобы некоторые из этих уязвимостей стали эксплуатируемыми, добавил он. Например, злоумышленнику, как правило, требуется возможность выполнять специально созданный JavaScript (а в случае CVE-2026-26956 — специально созданный WebAssembly) внутри песочницы vm2, контролируемой уязвимым приложением. Если приложение никогда не инициализирует vm2, использует его только для доверенных внутренних скриптов или вообще не разрешает выполнение кода, контролируемого злоумышленником, то, несмотря на наличие зависимости, реалистичного пути эксплуатации может не быть.

Если организация использует какие-либо приложения, затронутые vm2, их следует немедленно обновить, сказал он. Чтобы снизить риск до завершения обновления, пользователи могут избегать сред выполнения Node.js 25, отключать или блокировать WebAssembly в недоверенных песочницах и предотвращать компиляцию/выполнение WASM, контролируемое пользователем.

«Поскольку будущие обновления среды выполнения могут привести к аналогичным проблемам, vm2 следует рассматривать как удобный уровень изоляции, а не как жесткую границу безопасности», — добавил он.

Кроме того, Роберт Эндерл из Enderle Group заявил, что ИТ-руководители, серьезно относящиеся к безопасности, должны прекратить полагаться на программную песочницу для недоверенного кода. Он посоветовал начать рассматривать возможность переноса этих процессов в усиленные контейнеры Docker или V8 Isolates.

Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.

Автор – Howard Solomon

Оригинал статьи