Уязвимость в VirtualBox, позволяющая выполнить код на стороне хост-системы

7 ноября 2018 года

Сергей Зеленюк (Архивная копия от 19 сентября 2019 на Wayback Machine) раскрыл детальную информацию об ещё не исправленной (0-day) критической уязвимости в системе виртуализации VirtualBox, позволяющей обойти механизм изоляции гостевых систем и выполнить код на стороне хост-окружения. Для демонстрации уязвимости подготовлен рабочий прототип эксплоита. Для атаки требуется наличие прав root или администратора в гостевой системе. Проблема проявляется в конфигурации по умолчанию с сетевым адаптером E1000 при применении трансляции адресов (NAT) для организации сетевого взаимодействия.

Проблема вызвана переполнением буфера в коде эмуляции сетевого адаптера E1000 (Intel PRO/1000 MT Desktop). Практическая атака, использующая данное переполнение буфера, разделена на несколько этапов: через манипуляцию с Tx-дескрипторами пакета (структура с информацией о пакете), создаются условия для целочисленного переполнения через нижнюю границу (integer underflow), что позволяет организовать загрузку произвольных данных в буфер и вызвать его переполнение с наложением не уместившегося в буфер хвоста на область указателей или инициировать переполнение стека.

Суть уязвимости в том, что возможно создание условий, при которых Tx-дескрипторы данных могут поступить для обработки раньше Tx-дескрипторов контекста. Дескрипторы данных включают сведения о физическом адресе пакета в памяти и размере пакета. Дескрипторы контекста содержат информацию о максимальном размере пакета и сегментации. Размер пакета в дескрипторе с данными всегда меньше максимального размера пакета в дескрипторе контекста. В случае нарушения порядка обработки Tx-дескрипторов при вычислении размера возникает целочисленное переполнение через нижнюю границу.

Атака позволяет выполнить код на уровне третьего кольца защиты (ring3) в хост-окружении, после чего можно воспользоваться техникой повышения привилегий до уровня ring0 через манипуляции с /dev/vboxdrv. Подготовленный прототип эксплоита демонстрирует 100% повторяемость и не зависит от сборки VirtualBox. Эксплоит оформлен в виде модуля ядра, загружаемого на стороне гостевой системы.

Уязвимость проявляется независимо от операционных систем, используемых на стороне хоста и гостевого окружения. В качестве обходного пути для защиты рекомендуется сменить в настройках эмулируемый сетевой адаптер на PCnet или Paravirtualized Network, или отключить режим NAT.

Решение опубликовать сведения об уязвимости, не дожидаясь исправления, вызваны неприятием сложившейся практики в области связанных с безопасностью исследований и негативным опытом информирования о уязвимостях (Архивная копия от 19 сентября 2019 на Wayback Machine) в прошлом. Исследователям приходится ждать по полгода, пока будет исправлена уязвимость, а также возникает неопределённость при участии в программах выплаты вознаграждений за выявление уязвимостей. При участии в программах выплаты вознаграждений приходится более месяца ждать пока уязвимость будет проверена и будет принято решение о выплате. Решение при этом принимается наобум - сегодня за уязвимость могут заплатить, а через неделю она уже может показаться неинтересной. Размер выплаты мало предсказуем. Неприятие также вызывает последнее время раздуваемая маркетинговая шумиха вокруг уязвимостей - исследователи дают уязвимостям имена, создают сайты и логотипы, преувеличивают важность собственной работы и преподносят себя как спасителей мира.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Уязвимость в VirtualBox, позволяющая выполнить код на стороне хост-системы», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.