Nei firmware UEFI Phoenix SecureCore, utilizzati in molti laptop, PC e server con processori Intel, è stata rilevata una vulnerabilità (CVE-2024-0762) che consente, con accesso al sistema, l'esecuzione di codice a livello di firmware. Questa vulnerabilità può essere sfruttata dopo un attacco riuscito sul sistema per lasciare un backdoor nel firmware, che opera al di sopra del sistema operativo, aggirando i meccanismi di sicurezza dell'OS, invisibile ai programmi di rilevamento di malware e mantenendo la propria presenza anche dopo la reinstallazione del sistema operativo.
La vulnerabilità è causata da un uso non sicuro della variabile TCG2_CONFIGURATION nella configurazione del TPM (Trusted Platform Module), le cui manipolazioni possono portare a un overflow del buffer e a un potenziale esecuzione di codice con privilegi del firmware UEFI, ovvero a livello di SMM (System Management Mode), che ha priorità superiore rispetto alla modalità hypervisor e al ring zero, fornendo accesso illimitato a tutta la memoria di sistema. La vulnerabilità è presente nel codice di elaborazione della configurazione del TPM in UEFI e si manifesta indipendentemente dalla presenza di un chip TPM.
La causa del overflow che si verifica è dovuta a una chiamata doppia errata del servizio UEFI GetVariable, nel caso in cui il valore di TCG2_CONFIGURATION superi la dimensione inizialmente allocata nel buffer dello stack, dato che in entrambe le chiamate è stata utilizzata la stessa variabile con la dimensione data_size senza modificarla dopo la prima chiamata. Se un attaccante ha la possibilità di cambiare il valore della variabile UEFI TCG2_CONFIGURATION durante l'esecuzione del sistema, può impostarlo sufficientemente grande affinché la prima chiamata restituisca il codice EFI_BUFFER_TOO_SMALL. Poiché dopo la prima chiamata il valore di data_size invece della dimensione inizialmente definita del buffer disponibile verrà impostato sulla dimensione del valore della variabile TCG2_CONFIGURATION, la seconda chiamata porterà a un overflow del buffer.
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)
Il problema si verifica nei firmware Phoenix SecureCore, utilizzati su dispositivi con processori Intel delle famiglie AlderLake, CoffeeLake, CometLake, IceLake, JasperLake, KabyLake, MeteorLake, RaptorLake, RocketLake e TigerLake. La possibilità di attuare un attacco su un sistema specifico dipende dalle impostazioni del firmware e dalla possibilità di accesso alla variabile TCG2_CONFIGURATION. Un esempio di sfruttamento della vulnerabilità è stato dimostrato sui laptop Lenovo ThinkPad X1 Carbon di generazione Gen e Lenovo ThinkPad X1 Yoga di quarta generazione. La vulnerabilità è stata corretta negli aggiornamenti del firmware di aprile e maggio da parte di Technologies e Lenovo.
Fonte: opennet.ru
