In den Phoenix SecureCore UEFI-Firmwares, die auf vielen Laptops, PCs und Servern mit Intel-Prozessoren verwendet werden, wurde eine SicherheitsanfĂ€lligkeit (CVE-2024-0762) entdeckt, die es bei Zugang zum System ermöglicht, Code auf Firmware-Ebene auszufĂŒhren. Diese SicherheitsanfĂ€lligkeit kann nach erfolgreichem Angriff auf das System genutzt werden, um einen Backdoor in der Firmware zu hinterlassen, der unter dem Betriebssystem arbeitet, die Sicherheitsmechanismen des OS umgeht, von Malware-Erkennungssoftware unbemerkt bleibt und nach einer Neuinstallation des OS weiterhin vorhanden ist.
Die SicherheitsanfĂ€lligkeit resultiert aus unsicherer Verwendung der Variable TCG2_CONFIGURATION in der TPM (Trusted Platform Module)-Konfiguration, deren Manipulation zu einem PufferĂŒberlauf und potenzieller AusfĂŒhrung von Code mit Privilegien der UEFI-Firmware fĂŒhren kann, d. h. auf der Ebene des SMM (System Management Mode), was höher priorisiert ist als der Hypervisor-Modus und das Ring-0-Schutzsystem, und unbeschrĂ€nkten Zugriff auf den gesamten Systemspeicher gewĂ€hrt. Die SicherheitsanfĂ€lligkeit ist im TPM-Konfigurationsverarbeitungscode in UEFI vorhanden und tritt unabhĂ€ngig von der VerfĂŒgbarkeit eines TPM-Chips auf.
Der Grund fĂŒr den aufkommenden PufferĂŒberlauf ist der fehlerhafte doppelte Aufruf des UEFI-Dienstes GetVariable durch die Firmware, falls der Wert von TCG2_CONFIGURATION die ursprĂŒnglich im Stack zugewiesene PuffergröĂe ĂŒberschreitet, wobei in beiden Aufrufen dieselbe Variable mit der GröĂe data_size verwendet wird, ohne dass diese nach dem ersten Aufruf geĂ€ndert wird. Wenn ein Angreifer die Möglichkeit hat, den Wert der UEFI-Variable TCG2_CONFIGURATION wĂ€hrend des Systembetriebs zu Ă€ndern, kann er diesen ausreichend groĂ setzen, sodass 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 Variable 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 zeigt sich in den Phoenix SecureCore-Firmwareversionen, die auf GerĂ€ten mit Intel-Prozessoren der Familien AlderLake, CoffeeLake, CometLake, IceLake, JasperLake, KabyLake, MeteorLake, RaptorLake, RocketLake und TigerLake eingesetzt werden. Die Möglichkeit, einen Angriff auf ein bestimmtes System durchzufĂŒhren, hĂ€ngt von den Einstellungen der Firmware und der Möglichkeit, auf die Variable TCG2_CONFIGURATION zuzugreifen, ab. Ein Beispiel fĂŒr die Ausnutzung der Schwachstelle wurde auf den Laptops Lenovo ThinkPad X1 Carbon der Gen-Generation und 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
