Уязвимость вызвана небезопасным использованием переменной 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.
Источник: http://www.opennet.ru/opennews/art.shtml?num=61432