Във фреймворка 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 услуги и да влияе на процеса на зареждане.
Източник: opennet.ru
