Уязвимость, позволяющая получить доступ к диску хост-системы из гостевого окружения QEMU/KVM
31 декабря 2011 года
В реализации virtio-устройств обнаружена уязвимость, позволяющая организовать из изолированных гостевых систем запись и чтение данных для блочных устройств или LVM-разделов, через отправку SCSI-команд через SG_IO ioctl. Уязвимости подвержены окружения, работающие под управлением QEMU и KVM. Проблеме также подвержен OpenVZ, но только в случае проброса разделов, что обычно не практикуется для окружений на базе OpenVZ. Системы на базе Xen не подвержены проблеме, так как драйвер блочных устройств, используемый в Xen, не поддерживает вызов SG_IO ioctl.
Уязвимость распространяется только на блочные устройства, используемые в работе гостевых систем: например, если в гостевую систему проброшен раздел /dev/sda3, то злоумышленник, имеющий root-права в гостевой системе, может не покидая изолированное окружение получить доступ ко всем данным на диске /dev/sda, включая другие разделы и загрузочный сектор. Для эксплуатации проблемы не нужно прибегать к ухищрениям, все работает "из коробки", например, для чтения загрузочного сектора можно использовать штатную утилиту sg_dd:
sg_dd if=/dev/vda blk_sgio=1 bs=512 count=1 of=output
Суть проблемы касается особенности ядра Linux, связанной с перенаправлением ioctl для логических разделов. В настоящее время в списке рассылки разработчиков ядра Linux уже предложен набор патчей, вводящих отдельный ioctl-вызов scsi_blk_cmd_ioctl, запрещающих проброс SCSI ioctl для разделов и вводящий белый список для ограничения области действия некоторых операций. Линус Торвальдс не одобрил данные патчи для включения в ядро 3.2, так как они содержат слишком значительные изменения, которые опасно принимать накануне релиза 3.2, который ожидается через несколько дней. Поэтому, в настоящее время ищутся более простые альтернативные способы устранения проблемы или рассматривается возможность выпуска внепланового кандидата в релизы ядра 3.2 для дополнительного тестирования патчей.
SELinux не может быть использован для блокирования проблемы, так как он делегирует qemu отправку ioctl для дисков, без привязки к отдельным разделам. Обходным путем решения проблемы является запрет на использование проброса SCSI-команд для устройств virtio-blk. Дополнительно патчи подготовлены для libguestfs и libvirt. Обновление с устранением уязвимости пока доступно только для Red Hat Enterprise Linux, Scientific Linux (Архивная копия от 15 октября 2021 на Wayback Machine) и Cent OS. Статус выпуска обновлений для различных дистрибутивов можно проследить на данных страницах: Ubuntu, Gentoo, Slackware, Mandriva, openSUSE, Fedora (Архивная копия от 18 января 2012 на Wayback Machine) и Debian.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.