Уязвимость в UEFI-прошивках Phoenix, затрагивающая многие устройства с CPU Intel

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3247
Зарегистрирован: 20.08.2022

#

Уязвимость в UEFI-прошивках Phoenix, затрагивающая многие устройства с CPU Intel
Дата публикации:Mon, 24 Jun 2024 14:56:52 +0300




В UEFI-прошивках Phoenix SecureCore, используемых на многих ноутбуках, ПК и серверах с процессорами Intel, выявлена уязвимость (CVE-2024-0762), позволяющая при наличии доступа к системе добиться выполнения кода на уровне прошивки. Уязвимость может использоваться после успешного совершения атаки на систему для оставления в прошивке бэкдора, работающего над операционной системой, обходящего механизмы обеспечения безопасности ОС, незаметного для программ определения вредоносного ПО и сохраняющего своё присутствие после переустановки ОС.



Уязвимость вызвана небезопасным использованием переменной TCG2_CONFIGURATION в конфигурации TPM (Trusted Platform Module), манипуляции с которой могут привести к переполнению буфера и потенциальному выполнению кода с привилегиями UEFI-прошивки, т.е. на уровне SMM (System Management Mode), более приоритетном, чем режим гипервизора и нулевое кольцо защиты, и предоставляющем неограниченный доступ ко всей системной памяти. Уязвимость присутствует в коде обработки конфигурации TPM в UEFI и проявляется независимо от наличия TPM-чипа.



Причиной возникающего переполнения является некорректный двойной вызов прошивкой UEFI-сервиса GetVariable, в случае если значение TCG2_CONFIGURATION превышает размер изначально выделенного в стеке буфера, при том, что в обоих вызовах использована одна и та же переменная с размером data_size без её изменения после первого вызова. Если атакующий имеет возможность изменить значение UEFI-переменной TCG2_CONFIGURATION во время работы системы, он может выставить его достаточно большим для того, чтобы первый вызов вернул код EFI_BUFFER_TOO_SMALL. Так как после первого вызова значение data_size вместо изначально заданного размера имеющегося буфера будет выставлено в размер значения переменной TCG2_CONFIGURATION, то второй вызов приведёт к переполнению буфера.


void Function_0000537c(void){
...
ulonglong data_size;
char buffer [8];
...

EVar1 = (*gRS_2->GetVariable)
((CHAR16 *)TCG2_CONFIGURATION, &gTCG2_CONFIG_FORM_SET_GUID,
(UINT32 *)0x0, &data_size, buffer);

if (EVar1 == EFI_BUFFER_TOO_SMALL) {
EVar1 = (*gRS_2->GetVariable)
((CHAR16 *)TCG2_CONFIGURATION,&gTCG2_CONFIG_FORM_SET_GUID,
(UINT32 *)0x0,&data_size,buffer)







Проблема проявляется в прошивках Phoenix SecureCore, применяемых на устройствах с процессорами Intel семейства AlderLake, CoffeeLake, CometLake, IceLake, JasperLake, KabyLake, MeteorLake, RaptorLake, RocketLake и TigerLake. Возможность совершения атаки на конкретную систему зависит от настроек прошивки и возможности получения доступа к переменной TCG2_CONFIGURATION. Пример эксплуатации уязвимости продемонстрирован на на ноутбуках Lenovo ThinkPad X1 Carbon поколения Gen и Lenovo ThinkPad X1 Yoga 4 поколения. Уязвимость устранена в апрельских и майских обновлениях прошивок от Technologies и Lenovo.




Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=61432

Жизнь за Нер'зула!

Ответить