LINUX.ORG.RU
ФорумTalks

[intel][решето]Уязвимость в механизме виртуализации Intel VT-d


0

0

Йоанна Рутковска (Joanna Rutkowska), автор руткита Blue Pill, операционной системы Qubes OS и руководитель Invisible Things Lab, опубликовала документ, в котором представила сразу три способа обхода защиты механизма виртуализации Intel VT-d (IOMMU), используемого в Xen и других гипервизорах для проброса реальных устройств на шине PCI в виртуальный домен. Все три метода основаны на возможности отсылки прерывания формата MSI с произвольным вектором прерывания из непривилегированного домена, имеющего доступ к адресному пространству устройства.

В первом случае используется генерация подложного SIPI-прерывания (Start-up Inter Processor Interrupt), которое в нормальной ситуации применяется в BIOS для активации всех ядер/процессоров системы. Легальные SIPI-прерывания могут быть инициированы только самим процессором, но как выяснилось в ходе исследования, за них легко выдать обычное MSI-прерывание путем простого изменения значения поля «Delivery Mode». Получив SIPI-прерывание ядро начинает выполнение подготовительного (start-up) кода, адрес которого вычисляется с использованием номера вектора прерывания, что можно использовать для внедрения shell-кода. Однако, при переходе в режим виртуализации (VT-x), процессор блокирует (но запоминает) все INIT-прерывания, которые должны быть обработаны перед отсылкой SIPI-прерывания, поэтому shell-код может отработать только тогда, когда процессор выйдет из режима виртуализации, то есть на этапе выключения машины.

Второй метод - генерация MSI-прерывания с номером вектора 0x80 или 0x82, которые будут интерпретированы как системные вызовы или вызовы функций Xen, выполненные активным в данный момент доменом. Однако, единственный способ успешно выполнить атаку, это поймать момент, когда регистры процессора будут содержать нужные аргументы и номер системного вызова.

Третий метод заключается в генерировании прерывания с номером 17 (#AC), которое попадет к обработчику ошибок процессора. В результате значения стека будут интерпретированы неправильно и управление вернется к инструкции, расположенной по адресу RFLAGS:CS, а не CS:RIP, как того ожидает обработчик.

В конце документ содержит описание работы и фрагменты кода эксплойта, который использует второй метод и позволяет выйти за пределы непривилегированного Xen-домена. Получив предварительную версию документа разработчики Xen реализовали функциональность, которая запрещает обработку прерываний с номерами 0x80 и 0x82, если они были вызваны устройствами, а также блокирует доставку прерывания #AC. Однако первый метод до сих остается осуществимым, так что единственная серьезная защита против всех видов атак заключается в использовании механизма Interrupt Remapping (который блокирует незаконные прерывания от устройств), доступного пока только в процессорах серии Intel Sandy Bridge, выпущенных в начале текущего года.

Интересно, что Xen уже имел механизм ограничений на доступ к памяти устройств, проброшенных в виртуальные домены, который запрещал произвольное изменение вектора прерывания драйвером устройства. Но, как оказалось, его легко обойти с помощью механизма «Scatter Gather», поддерживаемого многими устройствами и позволяющего разбить одну DMA-транзакцию на несколько более мелких, с разными адресами назначения. Одним из таких адресов может быть область памяти, отведенная для записи MSI-прерываний.

докУмент
//тупой копипаст с опеннета

★★★★

Дайте мне проц с VT-d и мамку к нему!.. Я проверить хочу!.. :)

adriano32 ★★★ ()

>> intel

решето

А разве кто-то сомневался?

GotF ★★★★★ ()

Нетехнические разговоры о линукс такие нетехнические и такие о линукс.

thesis ★★★★★ ()
Ответ на: комментарий от ChALkeR

Я прочитал стартовое сообщение. Эксплойт на KVM есть?

tailgunner ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.