In den Phoenix SecureCore UEFI-Firmwaren, die in vielen Laptops, PCs und Servern mit Intel-Prozessoren verwendet werden, wurde eine Sicherheitsanfälligkeit (CVE-2024-0762) entdeckt. Diese ermöglicht es Angreifern, durch Systemzugriff Schadcode auf Firmware-Ebene auszuführen. Die Schwachstelle kann nach einem erfolgreichen Angriff auf das System ausgenutzt werden, um einen Backdoor in der Firmware zu hinterlassen, die auf dem Betriebssystem läuft, die Sicherheitsmechanismen des OS umgeht, unbemerkt von Malware-Erkennungsprogrammen bleibt und auch nach einer Neuinstallation des Betriebssystems bestehen bleibt.
Die Sicherheitsanfälligkeit ergibt sich aus der unsicheren Verwendung der Variable TCG2_CONFIGURATION in der TPM (Trusted Platform Module)-Konfiguration. Manipulationen an dieser Variable können zu einem Pufferüberlauf führen und potenziell zur Ausführung von Code mit Privilegien der UEFI-Firmware führen, d. h. auf der Ebene des SMM (System Management Mode), die eine höhere Priorität als der Hypervisor- und Ring-0-Schutzmodus hat und unbeschränkten Zugriff auf den gesamten Systemspeicher gewährt. Die Sicherheitsanfälligkeit ist im Code zur Verarbeitung der TPM-Konfiguration in UEFI vorhanden und tritt unabhängig von der Verfügbarkeit eines TPM-Chips auf.
Die Ursache für das auftretende Überlaufproblem liegt in einem fehlerhaften doppelten Aufruf des UEFI-Dienstes GetVariable, wenn der Wert von TCG2_CONFIGURATION die ursprünglich im Stack zugewiesene Größe des Puffers überschreitet, wobei in beiden Aufrufen dieselbe Variable mit der Größe data_size verwendet wurde, ohne dass diese nach dem ersten Aufruf verändert wurde. Falls ein Angreifer die Möglichkeit hat, den Wert der UEFI-Variablen TCG2_CONFIGURATION während des Betriebs des Systems zu ändern, kann er ihn so groß setzen, dass der erste Aufruf den Code EFI_BUFFER_TOO_SMALL zurückgibt. Da nach dem ersten Aufruf der Wert von data_size anstelle der ursprünglich festgelegten Größe des vorhandenen Puffers auf die Größe der Variablen TCG2_CONFIGURATION gesetzt wird, führt der zweite Aufruf zu einem Pufferüberlauf.
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)
Das Problem tritt in den Phoenix SecureCore-Firmwareversionen auf, die auf Geräten mit Intel-Prozessoren der Familien AlderLake, CoffeeLake, CometLake, IceLake, JasperLake, KabyLake, MeteorLake, RaptorLake, RocketLake und TigerLake verwendet werden. Die Möglichkeit, einen Angriff auf ein bestimmtes System durchzuführen, hängt von den Firmware-Einstellungen und dem Zugang zur Variablen TCG2_CONFIGURATION ab. Ein Beispiel für die Ausnutzung dieser Schwachstelle wird an den Lenovo ThinkPad X1 Carbon der Gen-Generation und dem Lenovo ThinkPad X1 Yoga der 4. Generation demonstriert. Die Schwachstelle wurde in den Firmware-Updates von Technologies und Lenovo im April und Mai behoben.
Quelle: opennet.ru
