In de UEFI-firmware van Phoenix SecureCore, die op veel laptops, pc's en servers met Intel-processoren wordt gebruikt, is een kwetsbaarheid (CVE-2024-0762) ontdekt die, indien toegang tot het systeem is verkregen, kan leiden tot het uitvoeren van code op firmware-niveau. De kwetsbaarheid kan worden gebruikt na een succesvolle aanval op het systeem om een backdoor in de firmware achter te laten die bovenop het besturingssysteem draait, de beveiligingsmechanismen van het OS omzeilt, onopgemerkt blijft voor malware-detectieprogramma's en zijn aanwezigheid na herinstallatie van het OS behoudt.
De kwetsbaarheid wordt veroorzaakt door het onveilige gebruik van de variabele TCG2_CONFIGURATION in de TPM-configuratie (Trusted Platform Module), waarvan manipulaties kunnen leiden tot een bufferoverloop en potentieel code-executie met de privileges van de UEFI-firmware, dat wil zeggen op SMM-niveau (System Management Mode), wat hogere prioriteit heeft dan hypervisor-modus en ring 0-bescherming, en ongehinderde toegang biedt tot alle systeemsgeheugen. De kwetsbaarheid is aanwezig in de code voor het verwerken van de TPM-configuratie in UEFI en doet zich voor ongeacht of er een TPM-chip aanwezig is.
De oorzaak van de bufferoverloop is een onjuiste dubbele aanroep van de UEFI-service GetVariable door de firmware, wanneer de waarde van TCG2_CONFIGURATION de oorspronkelijk in de stack toegewezen bufferomvang overschrijdt, waarbij in beide aanroepen dezelfde variabele met de grootte data_size wordt gebruikt zonder deze na de eerste aanroep te veranderen. Indien een aanvaller de mogelijkheid heeft om de waarde van de UEFI-variabele TCG2_CONFIGURATION te wijzigen tijdens de werking van het systeem, kan hij deze groot genoeg maken zodat de eerste aanroep de code EFI_BUFFER_TOO_SMALL retourneert. Aangezien na de eerste aanroep de waarde van data_size in plaats van de oorspronkelijk toegewezen grootte van de bestaande buffer op de grootte van de variabele TCG2_CONFIGURATION wordt ingesteld, zal de tweede aanroep leiden tot een bufferoverloop.
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)
Het probleem doet zich voor in de Phoenix SecureCore-firmware die wordt toegepast op apparaten met Intel-processoren van de AlderLake-, CoffeeLake-, CometLake-, IceLake-, JasperLake-, KabyLake-, MeteorLake-, RaptorLake-, RocketLake- en TigerLake-families. De mogelijkheid om een aanval op een specifiek systeem uit te voeren, hangt af van de instellingen van de firmware en de mogelijkheid om toegang te krijgen tot de variabele TCG2_CONFIGURATION. Een voorbeeld van de uitbuiting van de kwetsbaarheid is gedemonstreerd op de Lenovo ThinkPad X1 Carbon van de Gen- generatie en de Lenovo ThinkPad X1 Yoga van de 4e generatie. De kwetsbaarheid is verholpen in de firmware-updates van april en mei van Technologies en Lenovo.
Bron: opennet.ru
