В открытом доступе появился эксплойт для уязвимости VMware Workstation и Fusion, позволяющий выйти из гостевой системы на хост

VMware

Публичный эксплойт (код, использующий уязвимость) вышел для CVE-2026-59346. Это переполнение целого числа в сетевом адаптере VMXNET3 платформ VMware Workstation и Fusion. Ошибка находится в обработке механизма разбиения TCP-пакетов на сегменты (TCP Segmentation Offload, TSO). Через неё привилегированный пользователь внутри виртуальной машины может добраться до процесса vmware-vmx на хост-системе. Broadcom описывает последствия как выполнение кода на хосте. Сам опубликованный код до этого не доходит. Он приводит к нарушению целостности памяти и аварийному завершению хост-процесса, после чего виртуальная машина выключается. Автор отдельно указал, что попыток выполнить произвольный код модуль не делает. Уязвимость затрагивает Workstation и Fusion версий 25H2 и 26H1. Исправление вошло в 26H1u1.

Детали уязвимости

Причина в арифметике расчёта памяти. Когда гостевая система отправляет крупный TCP-пакет, хостовая часть VMware делит его на сегменты и заранее определяет размер буфера под них. Число сегментов умножают на размер одного сегмента, причём в 32-битной разрядности. Как только произведение выходит за границу 32-битного диапазона, оно усекается до меньшего значения. Распределитель памяти получает это усечённое число и выделяет буфер, которого не хватает. Дальше цикл разбиения работает по исходному числу сегментов и пишет за пределы выделенного участка кучи в процессе vmware-vmx. Содержимое записи берётся из пакета, который контролирует гостевая система. Так переполнение целого числа превращается в запись за границами буфера на стороне хоста.

Знакомый участок кода. Похожую уязвимость CVE-2025-41236 в том же обработчике TSO закрывали раньше. Тогда в код добавили проверки максимального размера сегмента и связанных полей. Отдельные величины они ограничивают, а произведение не проверяют. Каждое значение по отдельности укладывается в лимит 9216, но их произведение всё равно переполняется. Именно эту возможность и использует новый эксплойт. Прошлая правка закрыла частный случай, но не саму арифметику.

Код опубликовал исследователь под именем Stan S. Это модуль ядра Linux, который запускается внутри гостевой системы. Модуль записывает подготовленные дескрипторы (служебные структуры, описывающие пакет) напрямую в кольцо передачи сетевого адаптера, обходя проверки штатного драйвера. Обработку запускает запись в регистр оповещения адаптера. Цель работы - показать, что нарушение безопасности памяти в хостовом процессе достижимо. Автор снабдил код режимом сухой прогонки, при котором дескрипторы записываются, но обработка не запускается. Есть и параметры для задержки перед запуском и для подготовки состояния памяти. Они нужны для изучения раскладки кучи, а не для самого сбоя. В тестовой конфигурации хост-процесс падает с ошибкой сегментации (SIGSEGV), а виртуальная машина выключается вместе с ним. Незаписанные данные при этом теряются, поэтому автор советует сначала снимать снимок состояния. Тестировали код на Ubuntu 24.04 с ядром 6.17.0 и VMware Workstation Pro сборки 25219725. Гостевая система работала на Alpine Linux с ядром 6.12. Смещения символов зависят от сборки, но сам уязвимый участок повторяется в разных версиях.

Запись об уязвимости ZDI-26-647 Trend Micro Zero Day Initiative опубликовала 9 сентября 2026 года. Вендору о проблеме сообщили 26 августа, то есть раскрытие шло по согласованной схеме: сначала патч, потом публикация. Broadcom выпустила бюллетень VMSA-2026-0007. Оценки сторон разошлись. ZDI ставит 7.5 по шкале CVSS, сам Broadcom - 9.3. Разница объясняется тем, что производитель рассматривает уязвимость как выход из гостевой системы на хост с выполнением кода в контексте гипервизора. Авторы эксплойта демонстрируют только сбой. Оба рейтинга говорят о высокой степени опасности, а расхождение отражает разную оценку того, насколько далеко может зайти атакующий.

Опасность такой ошибки зависит от устройства инфраструктуры. VMXNET3 - адаптер с полувиртуализацией, который VMware предлагает современным гостевым системам. В конфигурациях по умолчанию он встречается часто. Там, где на настольной виртуализации выполняют недоверенные или условно доверенные нагрузки, права администратора внутри гостевой системы расширяют возможности атакующего. Переполнение в адаптере даёт ему канал влияния на хост-процесс, а это уже выход за границы изолированной среды. Тот же хостовый обработчик используют Workstation, Fusion и Player, так что круг затронутых платформ шире двух названных в бюллетене.

Патч есть, обходных путей Broadcom не предложила. Обновляться нужно до версии 26H1u1 или более поздней. На исправленном хосте модуль не вызовет реакции: он отработает штатно, а виртуальная машина продолжит работу. Администраторам разумно пересмотреть, нужен ли адаптер VMXNET3 на тех настольных системах, где обрабатывают чувствительные данные. Ограничение административных прав внутри виртуальных машин снижает и саму возможность добраться до уязвимого кода. Прямая запись дескрипторов требует высоких привилегий в гостевой системе, и без них сценарий не сработает. Проверить, какой адаптер подключён, можно по строке ethernet0.virtualDev = "vmxnet3" в файле настроек .vmx или командой lspci | grep -i vmxnet внутри гостевой системы.

История с этим патчем показывает, как осторожно приходится закрывать арифметику в коде гипервизора. Проверка каждого входного поля по отдельности оставляет возможность обойти защиту, если опасность заключена не в значении, а в результате операции. Границы для отдельных величин не заменяют контроля над их произведением. Потому участок кода и понадобилось править повторно, а опубликованный эксплойт лишь подтвердил, что прошлая заплата оказалась неполной.

Ссылки

Комментарии: 0