U UEFI firmware-u Phoenix SecureCore, koji se koristi na mnogim prijenosnicima, računalima i poslužiteljima s Intel procesorima, otkrivena je ranjivost (CVE-2024-0762) koja omogućuje izvršavanje koda na razini firmware-a uz pristup sustavu. Ova ranjivost može se iskoristiti nakon uspješnog napada na sustav kako bi se u firmware ostavio backdoor koji radi iznad operativnog sustava, zaobilazeći mehanizme sigurnosti operacijskog sustava, neprimjetan za programe za otkrivanje zloćudnog softvera i održavajući svoje prisustvo čak i nakon ponovne instalacije OS-a.
Ranjivost je uzrokovana nesigurnim korištenjem varijable TCG2_CONFIGURATION u konfiguraciji TPM (Trusted Platform Module), čije manipulacije mogu dovesti do preljevanja bafera i potencijalnog izvršavanja koda s privilegijama UEFI firmware-a, tj. na razini SMM (System Management Mode), koji ima viši prioritet od hipervizora i nultog zaštitnog režima, omogućujući neograničen pristup cijeloj sistemskoj memoriji. Ranjivost se nalazi u kodu za obradu konfiguracije TPM u UEFI i javlja se neovisno o prisutnosti TPM čipa.
Uzrok preljevanja je nepravilno dvostruko pozivanje UEFI usluge GetVariable, u slučaju kada vrijednost TCG2_CONFIGURATION premašuje veličinu prvotno dodijeljenu u stogu bafera, pri čemu se u oba poziva koristi ista varijabla s veličinom data_size bez njezine promjene nakon prvog poziva. Ako napadač ima mogućnost promijeniti vrijednost UEFI varijable TCG2_CONFIGURATION tijekom rada sustava, može je postaviti dovoljno velikom da prvi poziv vrati kod EFI_BUFFER_TOO_SMALL. Budući da se nakon prvog poziva vrijednost data_size umjesto prvotno definirane veličine bafera postavlja na veličinu varijable TCG2_CONFIGURATION, drugi poziv će dovesti do preljevanja bafera.
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)
Problem se pojavljuje u Phoenix SecureCore firmware-ima koji se koriste na uređajima s Intel procesorima iz obitelji AlderLake, CoffeeLake, CometLake, IceLake, JasperLake, KabyLake, MeteorLake, RaptorLake, RocketLake i TigerLake. Mogućnost napada na konkretni sustav ovisi o postavkama firmware-a i mogućnosti pristupa varijabli TCG2_CONFIGURATION. Primjer iskorištavanja ranjivosti demonstriran je na prijenosnicima Lenovo ThinkPad X1 Carbon 9. generacije i Lenovo ThinkPad X1 Yoga 4. generacije. Ranjivost je otklonjena u travanjskim i svibanjskim ažuriranjima firmware-a od strane Technologies i Lenova.
Izvor: opennet.ru
