Уязвимости в UEFI-прошивках на базе фреймворка InsydeH2O, позволяющие выполнить код на уровне SMM

Во фреймворке InsydeH2O, применяемом многими производителями для создания UEFI-прошивок к своему оборудованию (наиболее распространённая реализация UEFI BIOS), выявлены 23 уязвимости, позволяющие выполнить код на уровне SMM (System Management Mode), более приоритетном (Ring -2), чем режим гипервизора и нулевое кольцо защиты, и имеющим неограниченный доступ ко всей памяти. Проблема затрагивает UEFI-прошивки, используемые такими производителями, как Fujitsu, Siemens, Dell, HP, HPE, Lenovo, Microsoft, Intel и Bull Atos.

Для эксплуатации уязвимостей требуется локальный доступ с правами администратора, что делает проблемы востребованными в качестве уязвимостей второго звена, применяемых после эксплуатации других уязвимостей в системе или использования методов социальной инженерии.
Доступ на уровне SMM позволяет выполнить код на уровне, неподконтрольном операционной системе, что может быть использовано для модификации прошивок и оставления в SPI Flash скрытого вредоносного кода или руткитов, не определяемых из операционной системы, а также для отключения верификации на этапе загрузки (UEFI Secure Boot, Intel BootGuard) и атак на гипервизоры для обхода механизмов проверки целостности виртуальных окружений.


Эксплуатация уявзимостей может быть совершена из операционной системы при помощи неверифицированных SMI-обработчиков (System Management Interrupt), а также на этапе до выполнения операционной системы во время начальных стадий загрузки или возвращения из спящего режима. Все уязвимости вызваны проблемами работы с памятью и разделены на три категории:

  • SMM Callout – выполнение своего кода с правами SMM через перенаправление выполнения обработчиков прерываний SWSMI на код вне SMRAM;
  • Повреждения памяти, позволяющие атакующему записать свои данные в SMRAM, специальную изолированную область памяти, в которой выполняется
    код с правами SMM.
  • Повреждение памяти в коде, выполняемом на уровне DXE (Driver eXecution Environment).

Для демонстрации принципов организации атаки опубликованпример эксплоита, позволяющий через проведение атаки из третьего или нулевого кольца защиты, получить доступ к DXE Runtime UEFI и выполнить свой код. Эксплоит манипулирует переполнением стека (CVE-2021-42059) в драйвере UEFI DXE. В ходе атаки злоумышленник может разместить свой код в DXE-драйвере, сохраняющий активность после перезапуска операционной системы, или внести изменения в область NVRAM в SPI Flash. В процессе выполнения код злоумышленника может вносить изменения в привилегированные области памяти, модифицировать сервисы EFI Runtime и влиять на процесс загрузки.

Release. Ссылка here.