Luka w firmware UEFI Phoenix, dotycząca wielu urządzeń z procesorami Intel

W zaktualizacjach UEFI Phoenix SecureCore, stosowanych w wielu laptopach, komputerach osobistych i serwerach z procesorami Intel, odkryto lukę (CVE-2024-0762), która umożliwia, przy dostępie do systemu, wykonanie kodu na poziomie firmware'u. Luka ta może być wykorzystana po udanym ataku na system, aby pozostawić w firmware'ie backdoora, działającego nad systemem operacyjnym, omijającego mechanizmy zabezpieczeń OS, niewidocznego dla oprogramowania wykrywającego złośliwe oprogramowanie i zachowującego swoje istnienie po reinstalacji OS.

Luka ta wynika z niebezpiecznego użycia zmiennej TCG2_CONFIGURATION w konfiguracji TPM (Trusted Platform Module), manipulacje którą mogą prowadzić do przepełnienia bufora i potencjalnego wykonania kodu z uprawnieniami firmware'u UEFI, tj. na poziomie SMM (System Management Mode), który ma wyższy priorytet niż tryb hipernadzorcy oraz zerowy poziom ochrony, co zapewnia nieograniczony dostęp do całej pamięci systemowej. Luka ta występuje w kodzie obsługi konfiguracji TPM w UEFI i występuje niezależnie od obecności chipu TPM.

Przyczyną występującego przepełnienia jest nieprawidłowe podwójne wywołanie usługi UEFI GetVariable przez firmware, w przypadku gdy wartość TCG2_CONFIGURATION przekracza rozmiar początkowo zarezerwowanego w stosie bufora, przy czym w obu wywołaniach używana jest ta sama zmienna o rozmiarze data_size bez jej zmiany po pierwszym wywołaniu. Gdy atakujący ma możliwość zmiany wartości zmiennej UEFI TCG2_CONFIGURATION w trakcie pracy systemu, może ustawić ją na wystarczająco dużą, aby pierwsze wywołanie zwróciło kod EFI_BUFFER_TOO_SMALL. Ponieważ po pierwszym wywołaniu wartość data_size zamiast początkowo zadanej wielkości istniejącego bufora zostanie ustawiona na rozmiar wartości zmiennej TCG2_CONFIGURATION, drugie wywołanie doprowadzi do przepełnienia bufora.

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)

Problem występuje w firmware Phoenix SecureCore, stosowanym w urządzeniach z procesorami Intel z rodziny AlderLake, CoffeeLake, CometLake, IceLake, JasperLake, KabyLake, MeteorLake, RaptorLake, RocketLake i TigerLake. Możliwość przeprowadzenia ataku na konkretne systemy zależy od ustawień firmware'u oraz możliwości dostępu do zmiennej TCG2_CONFIGURATION. Przykład wykorzystania podatności został zaprezentowany na laptopach Lenovo ThinkPad X1 Carbon generacji Gen oraz Lenovo ThinkPad X1 Yoga czwartej generacji. Luka została usunięta w aktualizacjach firmware'u z kwietnia i maja od Technologies i Lenovo.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster