Scoperto un nuovo exploit generico per le SMU AMD basate su LM32 versione 7 che potrebbe essere utilizzato nelle APU e, molto probabilmente, anche sulle GPU. Tuttavia non si applicherebbe alle CPU Zen e SMU/RSMU, poiché utilizzano core Xtensa.
Rudolf Marek ha precedentemente sfruttato una vulnerabilità nel firmware SMU AMD basato su LM32, come discusso nel suo discorso sull’analisi del firmware AMD x86 SMU.
Want to own the SMU coprocessor in your AMD CPU/APU/possibly GPU? Extract the firmware signing HMAC key from the bootrom?
Pre-Zen only, since its based on LM32 architecture features while Zen and later switched to Xtensa cores for their SMUs.https://t.co/YxFqLutS4W
— Jevin Sweval (@jevinskie) May 29, 2023
Tuttavia, è stato segnalato che AMD ha presumibilmente corretto la vulnerabilità del gestore dei messaggi SMU.
L’autore menziona di essere pigro e non voler trovare un nuovo exploit nel firmware SMU. Tuttavia, sottolinea che ha sviluppato un plugin Ghidra LM32 per analizzare i firmware.
Si chiede se ci sono altri metodi per eseguire codice nella SMU e menziona la possibilità di scaricare la bootrom contenente la chiave HMAC per firmare firmware personalizzati e compiere azioni come leggere eFuse, ottenere l’accesso alla porta seriale e persino leggere/scrivere DRAM arbitraria.
Inoltre, viene menzionata l’esistenza di una regione sbloccata nella SRAM della SMU per la comunicazione tra il mondo x86 e la SMU.
Si sottolinea che i dettagli precisi sono in parte incerti, come il valore di blocco della lettura, ma si afferma che AMD abbia integrato l’LM32 in modo completo mantenendo la funzionalità di debug. Gli accessi avvengono tramite uno schema di indirizzi/dati indiretti al complesso root PCI.
L’autore descrive infine una serie di passaggi per l’esecuzione di un exploit nella SMU. Si suggerisce di monitorare la SRAM della SMU per trovare uno spazio adatto per il codice shellcode.
Viene menzionato l’utilizzo di uno stub shellcode tra gli indirizzi 0x0003_F400
e 0x0003_F600
. Successivamente, si fa riferimento al monitoraggio del contatore di programma della SMU attraverso il registro SMC_PC_C
in 0x80000370
, generando un istogramma per identificare l’indirizzo dell’istruzione più eseguita.
Vengono descritti anche i passaggi per configurare i registri SMC_LM32_DEBA
, SMC_LM32_BP0
e SMC_LM32_DC
al fine di puntare alla tabella vettoriale di debug e abilitare un breakpoint hardware.
Si suggerisce di attendere l’esecuzione dell’istruzione comune desiderata nel firmware, momento in cui il breakpoint verrà attivato e si avrà accesso allo shellcode della tabella del vettore di debug.
Si afferma che dall’interno della SMU è possibile disattivare le protezioni SRAM e leggere la bootrom.
La bootrom contiene una chiave HMAC codificata, ma viene menzionato un bit eFuse che consente di programmare una chiave HMAC personalizzata. Infine, viene menzionata la decompilazione di Ghidra dal bootrom di un’APU Kaveri o Kabini.
AUTH_START_ADDR = (FIRMWARE_HEADER_V7 *)(efuse_read1 & 0x7fffffff); entry_point = (code *)AUTH_START_ADDR->EntryPoint; calc_digest[1] = 0xefcdab89; calc_digest[3] = 0x10325476; calc_digest[0] = 0x67452301; calc_digest[2] = 0x98badcfe; // sha constant shit calc_digest[4] = 0xc3d2e1f0; do { efuse_read1 = read_volatile_4(SMU_FIRMWARE_AUTH); // spin while SMU_KEY_RD_DONE != 11b } while ((efuse_read1 & 6) != 6); efuse_read1 = read_volatile_4(SMU_FIRMWARE_AUTH); // SMU_KEY_SEL if ((efuse_read1 & 0x20000) == 0) { key[0] = 0x3818c563; key[1] = 0x2f4383c1; key[2] = 0x21853a57; key[3] = 0xd7c7169; } else { key[0] = read_volatile_4(SMU_SECURE_KEY_0); key[1] = read_volatile_4(SMU_SECURE_KEY_1); key[2] = read_volatile_4(SMU_SECURE_KEY_2); key[3] = read_volatile_4(SMU_SECURE_KEY_3); } hmac(&AUTH_START_ADDR->Version,key,calc_digest,AUTH_START_ADDR->CodeSize >> 2);
L’exploit generico per le SMU AMD basate su LM32 versione 7 potrebbe potenzialmente avere un impatto sulle console PlayStation 4.
Questo exploit sfrutta le vulnerabilità presenti nella gestione della memoria e nella comunicazione tra il mondo x86 e la SMU, che potrebbero essere presenti anche nelle APU utilizzate dalla console PlayStation 4.
Se l’exploit è applicabile con successo a tali sistemi, potrebbe consentire l’accesso privilegiato alla SMU e aprire la possibilità di eseguire azioni non autorizzate o modificare il funzionamento del sistema.
Tuttavia, è importante notare che l’effettiva applicabilità e l’impatto su console specifiche richiedono ulteriori valutazioni e test.
Download: Plugin Ghidra LM32
Fonte: github.com