Критическая уязвимость isolated-vm позволяет удалённо выполнить код на хосте
Материал подготовлен искусственным интеллектом на основе нескольких источников — ссылки на оригиналы приведены ниже.

Критическая уязвимость путаницы типов в библиотеке isolated-vm для Node.js позволяет удалённо выполнить код на хост-системе. Уязвимость, не имеющая идентификатора CVE, затрагивает ExternalCopy — функцию копирования данных между изолятами. Исправления доступны в версиях isolated-vm 6.2.0 и 7.0.1.
Ключевые факты
- Уязвимость представляет собой путаницу типов в ExternalCopy — функции, используемой для копирования данных между изолятами.
- Исправления включены в версии isolated-vm 6.2.0 и 7.0.1, чтобы предотвратить выполнение пользовательского JavaScript во время копирования.
- Успешная эксплуатация приводит к сбою или перехвату потока управления хост-процесса, что потенциально позволяет удалённо выполнить код.
- Затронут любой разработчик, который запускает ненадёжный код в изоляте и передаёт в него хотя бы одну ссылку Reference.
Детали уязвимости
Уязвимость представляет собой путаницу типов в ExternalCopy — функции, используемой для копирования данных между изолятами. ExternalCopy сериализует данные в одном изоляте и восстанавливает их в другом экземпляре. Для оптимизации производительности используется transferList: большие ArrayBuffer перечисляются, а базовая память передаётся путём отсоединения буфера от источника и передачи его получателю. Реконструктор дважды проходил по списку байтовых массивов, причём второй проход доверял первому. Поскольку итерация по массиву transfer_list JavaScript не возвращает одно и то же значение для элемента, определённого как геттер, при каждом проходе, злоумышленник может использовать слабость time-of-check/time-of-use для разыменования контролируемого указателя.
Эксплуатация и последствия
Хотя конструктор ExternalCopy доступен только с хоста, гость может нацелиться на ivm.Reference — механизм, с помощью которого хост предоставляет что-либо песочнице, — чтобы создать вредоносный transferList и вызвать уязвимость. Успешная эксплуатация приводит к сбою (отказу в обслуживании) или перехвату потока управления хост-процесса, что потенциально позволяет удалённо выполнить код на хосте. Затронут любой разработчик, который запускает ненадёжный код в изоляте и передаёт в него хотя бы одну ссылку Reference. Хост-код, передающий массив, контролируемый вызывающей стороной, в качестве transferList, затрагивается напрямую, без участия гостя.
Исправление и смягчение
Исправления включены в версии isolated-vm 6.2.0 и 7.0.1, чтобы предотвратить выполнение пользовательского JavaScript во время копирования. Уязвимость находилась в нативном связующем коде: C++-привязке, которая сериализует значения через границу. Этот слой написан на языке, небезопасном для работы с памятью; он манипулирует сырыми дескрипторами V8 и указателями на резервное хранилище и повторно считывает контролируемые злоумышленником объекты JavaScript в середине операции, критичной для безопасности. Одного непроверенного приведения типа на повторно считанном значении оказалось достаточно, чтобы превратить корректный примитив изоляции в полный выход за её пределы.
1 источник
Критическая уязвимость isolated-vm позволяет удалённо выполнить код на хосте






