Nel framework InsydeH2O, utilizzato da molti produttori per creare firmware UEFI per il proprio hardware (la realizzazione più comune del UEFI BIOS), sono state identificate 23 vulnerabilità che consentono l'esecuzione di codice a livello SMM (System Management Mode), più prioritario (Ring -2) rispetto alla modalità hypervisor e al livello di protezione zero, con accesso illimitato all'intera memoria. Il problema interessa i firmware UEFI utilizzati da produttori come Fujitsu, Siemens, Dell, HP, HPE, Lenovo, Microsoft, Intel e Bull Atos.
Per sfruttare le vulnerabilità è necessario un accesso locale con privilegi di amministratore, il che rende queste problematiche interessanti come vulnerabilità di secondo livello, utilizzate dopo aver sfruttato altre vulnerabilità nel sistema o utilizzando metodi di ingegneria sociale. L'accesso a livello SMM consente l'esecuzione di codice in un livello non controllato dal sistema operativo, il che può essere utilizzato per modificare i firmware e lasciarvi codice dannoso o rootkit nascosti nella SPI Flash, non identificabili dal sistema operativo, nonché per disabilitare la verifica durante la fase di avvio (UEFI Secure Boot, Intel BootGuard) e attacchi agli hypervisor per eludere i meccanismi di verifica dell'integrità degli ambienti virtuali.

Lo sfruttamento delle vulnerabilità può essere effettuato dal sistema operativo tramite SMI handler (System Management Interrupt) non verificati, nonché in una fase precedente all'esecuzione del sistema operativo durante le fasi iniziali del boot o durante il risveglio da uno stato di sospensione. Tutte le vulnerabilità sono causate da problemi di gestione della memoria e sono suddivise in tre categorie:
- SMM Callout — esecuzione del proprio codice con privilegi SMM mediante il reindirizzamento dell'esecuzione degli handler di interruzione SWSMI a codice al di fuori di SMRAM;
- Corruzioni di memoria che consentono all'attaccante di scrivere i propri dati in SMRAM, una speciale area di memoria isolata in cui viene eseguito codice con privilegi SMM.
- Corruzione di memoria nel codice eseguito a livello DXE (Driver eXecution Environment).
Per dimostrare i principi dell'organizzazione di un attacco, è stato pubblicato un esempio di exploit che consente, attraverso un attacco dal terzo o dal nullo anello di protezione, di accedere al DXE Runtime UEFI e di eseguire il proprio codice. L'exploit manipola il buffer overflow (CVE-2021-42059) nel driver UEFI DXE. Durante l'attacco, l'attaccante può inserire il proprio codice nel driver DXE, che mantiene l'attività anche dopo il riavvio del sistema operativo, oppure apportare modifiche all'area NVRAM nel Flash SPI. Durante l'esecuzione, il codice dell'attaccante può modificare aree di memoria privilegiate, modificare i servizi EFI Runtime e influenzare il processo di avvio.
Fonte: opennet.ru
