Se ha identificado una vulnerabilidad (CVE-2024-0762) en los firmwares UEFI de Phoenix SecureCore, utilizados en muchos portátiles, PCs y servidores con procesadores Intel, que permite, en caso de acceso al sistema, ejecutar código a nivel de firmware. Esta vulnerabilidad puede ser utilizada después de un ataque exitoso al sistema para dejar un backdoor en el firmware que opere sobre el sistema operativo, eludiendo los mecanismos de seguridad del SO, siendo indetectable para programas de identificación de malware y manteniendo su presencia incluso después de reinstalar el SO.
La vulnerabilidad es causada por el uso inseguro de la variable TCG2_CONFIGURATION en la configuración de TPM (Módulo de Plataforma Confiable), cuya manipulación puede llevar a un desbordamiento de búfer y a la potencial ejecución de código con privilegios de firmware UEFI, es decir, a nivel de SMM (Modo de Gestión del Sistema), que tiene mayor prioridad que el modo hipervisor y el anillo de protección cero, lo que brinda acceso ilimitado a toda la memoria del sistema. La vulnerabilidad está presente en el código de procesamiento de la configuración de TPM en UEFI y se manifiesta independientemente de la presencia del chip TPM.
La causa del desbordamiento que ocurre es una incorrecta llamada doble al servicio UEFI GetVariable, en caso de que el valor de TCG2_CONFIGURATION supere el tamaño originalmente asignado en el búfer de la pila, considerando que en ambas llamadas se usó la misma variable con el tamaño data_size sin su modificación después de la primera llamada. Si un atacante tiene la posibilidad de cambiar el valor de la variable UEFI TCG2_CONFIGURATION durante la ejecución del sistema, puede establecerlo lo suficientemente grande como para que la primera llamada devuelva el código EFI_BUFFER_TOO_SMALL. Dado que después de la primera llamada el valor de data_size, en lugar del tamaño originalmente asignado del búfer existente, se establecerá al tamaño del valor de la variable TCG2_CONFIGURATION, la segunda llamada conducirá al desbordamiento del búfer.
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)
El problema se manifiesta en los firmware Phoenix SecureCore utilizados en dispositivos con procesadores Intel de las familias AlderLake, CoffeeLake, CometLake, IceLake, JasperLake, KabyLake, MeteorLake, RaptorLake, RocketLake y TigerLake. La posibilidad de llevar a cabo un ataque en un sistema específico depende de la configuración del firmware y de la capacidad de acceder a la variable TCG2_CONFIGURATION. Se ha demostrado un ejemplo de explotación de la vulnerabilidad en las laptops Lenovo ThinkPad X1 Carbon de la generación Gen y en las Lenovo ThinkPad X1 Yoga de la 4ª generación. La vulnerabilidad ha sido corregida en las actualizaciones de firmware de abril y mayo de Technologies y Lenovo.
Fuente: opennet.ru
