Уязвимость в 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) в прошлом. Исследователям приходится ждать по полгода, пока будет исправлена уязвимость, а также возникает неопределённость при участии в программах выплаты вознаграждений за выявление уязвимостей. При участии в программах выплаты вознаграждений приходится более месяца ждать пока уязвимость будет проверена и будет принято решение о выплате. Решение при этом принимается наобум - сегодня за уязвимость могут заплатить, а через неделю она уже может показаться неинтересной. Размер выплаты мало предсказуем. Неприятие также вызывает последнее время раздуваемая маркетинговая шумиха вокруг уязвимостей - исследователи дают уязвимостям имена, создают сайты и логотипы, преувеличивают важность собственной работы и преподносят себя как спасителей мира.
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.