В эмуляторе VirtualBox обнаружена 0-day уязвимость
Новости Отредактировано
Баг позволяет исполнить вредоносный код за пределами виртуальной машины VirtualBox. Уязвимость присутствует в VirtualBox 5.2.20 и более ранних версиях.
1К открытий1К показов
MorteNoir, пользователь сайта Хабрахабр, подробно описал схему использования уязвимости программы VirtualBox. Это ПО — эмулятор виртуальной машины, позволяющий смоделировать ЭВМ с заданными характеристиками и производить необходимые манипуляции, не опасаясь повреждения основной системы. Эксплойт даёт вредоносному коду возможность выбраться за пределы песочницы и действовать на уровне базовой ОС с высокими правами доступа.
Принцип действия
Уязвимость локализована в виртуальном сетевом адаптере Intel PRO/1000 MT Desktop (82540EM), работающем в режиме преобразования сетевых адресов (NAT). При создании виртуальной машины в VirtualBox по умолчанию устанавливается именно это оборудование.
Сетевой адаптер использует спецификацию 82540EM, оборачивая пакеты в Tx-дескрипторы. Эта спецификация предусматривает три типа дескрипторов: legacy, context и data, из которых интересны только два последних. Из-за бага злоумышленник может вызвать переполнение кучи (heap overflow).
Система обычно сначала обрабатывает context дескрипторы, устанавливающие, в частности, максимальный размер пакета. Такой подход позволяет избежать внесения изменений в переменную u16MaxPktLen в процессе обработки. Однако MorteNoir продемонстрировал способ обхода этой защиты. Он приводит примерный набор дескрипторов, необходимый для атаки:
В примере следует обратить внимание на флаг end_of_packet
пакета data_3
, установленный в состояние true
. Это вынудит систему сначала обработать первые три пакета и только потом перейти к оставшимся. Из-за нарушения порядка обработки переменная u16MaxPktLen изменится, поэтому последние два пакета вызовут целочисленное переполнение.
Автор предположил несколько вариантов использования этого бага в VirtualBox. В самом простом случае злоумышленник может вызвать переполнение кучи или переполнение буфера стека, спровоцировав перезапись указателей и падение системы.
Защита от найденной уязвимости
Уязвимость присутствует в VirtualBox 5.2.20 и более ранних версиях. При этом не имеет значения какая ОС установлена на основной или виртуальной машине. Получив доступ, хакер реализует дальнейшее внедрение благодаря уже известным уязвимостям. Единственное требование к реализации — установленная на эмуляции ЭВМ сетевая карта Intel PRO/1000 MT Desktop (82540EM), работающая в режиме NAT. В качестве защиты автор предлагает изменить адаптер или хотя бы отключить режим преобразования сетевых адресов.
MorteNoir заявляет, что опубликовал подобные данные о найденной уязвимости, так как недоволен медлительностью разработчиков VirtualBox в устранении багов и их неопределённой политикой в области bug bounty. Сведений о реальном использовании ошибки пока нет.
Специалисты по IT-безопасности борются с угрозами различными способами. Обычно сообщение об уязвимости направляют разработчикам ПО и оборудования, давая время для исправления перед обнародованием информации. Иногда специалисты самостоятельно исправляют баги в оборудовании. Так, один из российских системных администраторов взламывал маршрутизаторы MikroTik и изменял правила брандмауэра, нейтрализуя уязвимость нулевого дня CVE-2018-14847.
1К открытий1К показов