În firmware-urile UEFI Phoenix SecureCore, utilizate pe multe laptopuri, PC-uri și servere cu procesoare Intel, a fost identificată o vulnerabilitate (CVE-2024-0762), care permite, în cazul accesului la sistem, executarea codului la nivel de firmware. Vulnerabilitatea poate fi exploatată după ce a avut loc un atac de succes asupra sistemului pentru a lăsa un backdoor în firmware, care rulează deasupra sistemului de operare, ocolind mecanismele de securitate ale OS-ului, fiind invizibil pentru programele de detectare a malware-ului și păstrându-și prezența după reinstalarea OS-ului.
Vulnerabilitatea este cauzată de utilizarea nesigură a variabilei TCG2_CONFIGURATION în configurația TPM (Trusted Platform Module), manevrele cu aceasta putând duce la suprascrierea buffer-ului și la executarea potențială a codului cu privilegii UEFI ale firmware-ului, adică la nivel SMM (System Management Mode), care este mai prioritar decât modul hypervisor și cercul zero de protecție, oferind acces nelimitat la întreaga memorie a sistemului. Vulnerabilitatea este prezentă în codul de procesare a configurației TPM din UEFI și se manifestă independent de existența cipului TPM.
Cauza suprascrierii care apare este apelul incorect repetat al serviciului UEFI GetVariable, în cazul în care valoarea TCG2_CONFIGURATION depășește dimensiunea inițial alocată în stiva buffer-ului, având în vedere că în ambele apeluri a fost utilizată aceeași variabilă cu dimensiunea data_size fără a fi modificată după primul apel. Dacă un atacator are capacitatea de a schimba valoarea variabilei UEFI TCG2_CONFIGURATION în timpul funcționării sistemului, el poate seta o valoare suficient de mare pentru ca primul apel să returneze codul EFI_BUFFER_TOO_SMALL. Deoarece, după primul apel, valoarea data_size va fi setată la dimensiunea variabilei TCG2_CONFIGURATION, în loc de dimensiunea inițială a buffer-ului, al doilea apel va duce la suprascrierea buffer-ului.
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)
Problema se manifestă în firmware-urile Phoenix SecureCore, utilizate pe dispozitive cu procesoare Intel din familia AlderLake, CoffeeLake, CometLake, IceLake, JasperLake, KabyLake, MeteorLake, RaptorLake, RocketLake și TigerLake. Posibilitatea de a efectua un atac asupra unui sistem specific depinde de configurările firmware-ului și de capacitatea de a accesa variabila TCG2_CONFIGURATION. Un exemplu de exploatare a vulnerabilității a fost demonstrat pe laptopurile Lenovo ThinkPad X1 Carbon din generația Gen și Lenovo ThinkPad X1 Yoga din generația 4. Vulnerabilitatea a fost remediată în actualizările de firmware din aprilie și mai de la Technologies și Lenovo.
Sursa: opennet.ro
