I UEFI-firmware Phoenix SecureCore, der anvendes på mange bærbare computere, pc'er og servere med Intel-processorer, er der fundet en sårbarhed (CVE-2024-0762), der gør det muligt at udføre kode på firmware-niveau, hvis man har adgang til systemet. Sårbarheden kan udnyttes efter en vellykket angreb på systemet for at efterlade en backdoor i firmware, der kører på operativsystemet, går udenom sikkerhedsmekanismerne i OS'et, er usynlig for malware-detekteringsprogrammer, og bevarer sit nærvær efter geninstallation af OS'et.
Sårbarheden skyldes usikker brug af variablen TCG2_CONFIGURATION i TPM (Trusted Platform Module) konfigurationen, manipulation med hvilken kan føre til buffer-overløb og potentiel udførelse af kode med UEFI-firmware-rettigheder, dvs. på SMM (System Management Mode) niveau, som er mere prioriteret end hypervisorens niveau og ring 0 beskyttelse, og giver ubegribelig adgang til hele systemets hukommelse. Sårbarheden er til stede i koden til behandling af TPM-konfigurationen i UEFI og viser sig uafhængigt af tilstedeværelsen af en TPM-chip.
Årsagen til det opståede buffer-overløb er en forkert dobbeltopkald af UEFI-tjenesten GetVariable, når værdien af TCG2_CONFIGURATION overstiger størrelsen af den oprindeligt tildelte buffer på stacken, samtidig med at den samme variabel med størrelsen data_size anvendes i begge opkald uden ændring efter det første opkald. Hvis en angriber har mulighed for at ændre værdien af UEFI-variablen TCG2_CONFIGURATION under systemets drift, kan de sætte den stort nok til, at det første opkald returnerer koden EFI_BUFFER_TOO_SMALL. Da værdien af data_size efter det første opkald i stedet for den oprindeligt angivne størrelse af den eksisterende buffer vil blive sat til størrelsen af værdien af variablen TCG2_CONFIGURATION, vil det andet opkald føre til buffer-overløb.
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)
Problemet optræder i Phoenix SecureCore-firmwares, der anvendes på enheder med Intel-processorer fra AlderLake, CoffeeLake, CometLake, IceLake, JasperLake, KabyLake, MeteorLake, RaptorLake, RocketLake og TigerLake. Muligheden for at gennemføre et angreb på et bestemt system afhænger af firmwareindstillingerne og muligheden for at få adgang til variablen TCG2_CONFIGURATION. Et eksempel på udnyttelsen af sårbarheden er demonstreret på Lenovo ThinkPad X1 Carbon i Gen-generationen og Lenovo ThinkPad X1 Yoga i 4. generation. Sårbarheden er blevet rettet i firmwareopdateringerne fra Technologies og Lenovo i april og maj.
Kilde: opennet.ru
