Уязвимост в UEFI фърмуерите Phoenix, засягаща много устройства с процесори Intel

В 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster