V UEFI firmware Phoenix SecureCore, používaných na mnoha noteboocích, PC a serverech s procesory Intel, byla odhalena zranitelnost (CVE-2024-0762), která umožňuje při přístupu k systému vykonávat kód na úrovni firmware. Zranitelnost může být využita po úspěšném provedení útoku na systém k založení backdooru ve firmware, který pracuje nad operačním systémem, obchází bezpečnostní mechanismy OS, je nezpůsobující detekci malwarem a udržuje si své místo po přeinstalaci OS.
Zranitelnost je způsobena nebezpečným použitím proměnné TCG2_CONFIGURATION v konfiguraci TPM (Trusted Platform Module), manipulace s níž může vést k přetečení bufferu a potenciálnímu vykonání kódu s privilegii UEFI firmware, tedy na úrovni SMM (System Management Mode), která má vyšší prioritu než hypervizor a zero ring a poskytuje neomezený přístup k veškeré systémové paměti. Zranitelnost je přítomna v kódu zpracování konfigurace TPM v UEFI a projevuje se bez ohledu na přítomnost TPM čipu.
Příčinou vznikajícího přetečení je nesprávný dvojitý volání UEFI služby GetVariable, v případě kdy hodnota TCG2_CONFIGURATION přesahuje velikost původně vyhrazené v zásobníku bufferu, přičemž v obou voláních byla použita stejná proměnná s velikostí data_size bez její změny po prvním volání. Pokud má útočník možnost změnit hodnotu UEFI proměnné TCG2_CONFIGURATION během běhu systému, může ji nastavit dostatečně velkou, aby první volání vrátilo kód EFI_BUFFER_TOO_SMALL. Protože po prvním volání hodnota data_size místo původně stanovené velikosti existujícího bufferu bude nastavena na velikost hodnoty proměnné TCG2_CONFIGURATION, tak druhé volání povede k přetečení bufferu.
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)
Problém se projevuje v firmwaru Phoenix SecureCore, používaném na zařízeních s procesory Intel z rodiny AlderLake, CoffeeLake, CometLake, IceLake, JasperLake, KabyLake, MeteorLake, RaptorLake, RocketLake a TigerLake. Možnost útoku na konkrétní systém závisí na nastavení firmwaru a možnosti získání přístupu k proměnné TCG2_CONFIGURATION. Příklad zneužití zranitelnosti byl demonstrován na noteboocích Lenovo ThinkPad X1 Carbon 1. generace a Lenovo ThinkPad X1 Yoga 4. generace. Zranitelnost byla odstraněna v dubnových a květnových aktualizacích firmwaru od Technologies a Lenovo.
Zdroj: opennet.ru
