Хабрахабр, подробно описал схему использования уязвимости программы VirtualBox. Это ПО — эмулятор виртуальной машины, позволяющий смоделировать ЭВМ с заданными характеристиками и производить необходимые манипуляции, не опасаясь повреждения основной системы. Эксплойт даёт вредоносному коду возможность выбраться за пределы песочницы и действовать на уровне базовой ОС с высокими правами доступа.
ользователь сайтаПринцип действия
Уязвимость локализована в виртуальном сетевом адаптере Intel PRO/1000 MT Desktop (82540EM), работающем в режиме преобразования сетевых адресов (NAT). При создании виртуальной машины в VirtualBox по умолчанию устанавливается именно это оборудование.
Сетевой адаптер использует спецификацию 82540EM, оборачивая пакеты в Tx-дескрипторы. Эта спецификация предусматривает три типа дескрипторов: legacy, context и data, из которых интересны только два последних. Из-за бага злоумышленник может вызвать переполнение кучи (heap overflow).
Система обычно сначала обрабатывает context дескрипторы, устанавливающие, в частности, максимальный размер пакета. Такой подход позволяет избежать внесения изменений в переменную u16MaxPktLen в процессе обработки. Однако
context_1.header_length = 0
context_1.maximum_segment_size = 0x3010
context_1.tcp_segmentation_enabled = true
data_2.data_length = 0x10
data_2.end_of_packet = false
data_2.tcp_segmentation_enabled = true
data_3.data_length = 0
data_3.end_of_packet = true
data_3.tcp_segmentation_enabled = true
context_4.header_length = 0
context_4.maximum_segment_size = 0xF
context_4.tcp_segmentation_enabled = true
data_5.data_length = 0x4188
data_5.end_of_packet = true
data_5.tcp_segmentation_enabled = true
В примере следует обратить внимание на флаг end_of_packet
пакета data_3
, установленный в состояние true
. Это вынудит систему сначала обработать первые три пакета и только потом перейти к оставшимся. Из-за нарушения порядка обработки переменная u16MaxPktLen изменится, поэтому последние два пакета вызовут целочисленное переполнение.
Автор предположил несколько вариантов использования этого бага в VirtualBox. В самом простом случае злоумышленник может вызвать переполнение кучи или переполнение буфера стека, спровоцировав перезапись указателей и падение системы.
Защита от найденной уязвимости
Уязвимость присутствует в VirtualBox 5.2.20 и более ранних версиях. При этом не имеет значения какая ОС установлена на основной или виртуальной машине. Получив доступ, хакер реализует дальнейшее внедрение благодаря уже известным уязвимостям. Единственное требование к реализации — установленная на эмуляции ЭВМ сетевая карта Intel PRO/1000 MT Desktop (82540EM), работающая в режиме NAT. В качестве защиты автор предлагает изменить адаптер или хотя бы отключить режим преобразования сетевых адресов.
Специалисты по IT-безопасности борются с угрозами различными способами. Обычно сообщение об уязвимости направляют разработчикам ПО и оборудования, давая время для исправления перед обнародованием информации. Иногда специалисты самостоятельно исправляют баги в оборудовании. Так, один из российских системных администраторов взламывал маршрутизаторы MikroTik и изменял правила брандмауэра, нейтрализуя уязвимость нулевого дня CVE-2018-14847.
Source: Хабрахабр