Il developer Specter pubblica una primissima versione del plugin binja (Binary Ninja) AMD-SP Loader, un caricatore per i file binari del firmware AMD Secure Processor (SP)/Platform Security Processor (PSP).
AMD Secure Processor (AMD-SP) precedentemente Platform Security Processor (PSP) è un minuscolo coprocessore a microcontrollore integrato nei chip della famiglia AMD che fornisce le funzionalità necessarie per la gestione remota delle risorse, un sottosistema di sicurezza dedicato e un avvio sicuro.
Put out a binja plugin I've been working on on the side for AMD-SP / PSP firmware. Might be interesting for some others out there researching PSP or similar areas. Contribution appreciated.https://t.co/pdLmKdaG6S
— Specter (@SpecterDev) February 1, 2023
Il Secure Processor esegue il proprio codice kernel sicuro firmato AMD (closed-source) e fornisce la maggior parte delle funzionalità relative alla crittografia per i SoC di AMD, tra cui la generazione e la gestione delle chiavi, l’avvio convalidato e varie altre funzionalità della piattaforma sicura AMD.
Il plugin una volta installato tenterà di caricare il Bootloader AGESA (ABL) e i BLOB del Bootloader andando ad impostare gli indirizzi di caricamento corretti.
Facoltativamente, il caricatore ABL annoterà anche le chiamate di sistema utilizzando il dizionario presente in ./data/syscalls.json.
Installazione
Per installare questo plugin, andare alla directory dei plugin di Binary Ninja (può essere trovata andando su Tools -> “Open Plugin Folder”) e digitando il seguente comando:
git clone https://github.com/dayzerosec/AMD-SP-Loader
Nota che probabilmente dovrai riavviare Binary Ninja per caricare il plugin.
Utilizzo
Questo caricatore è destinato all’uso con i file binari estratti tramite lo strumento PSPTool, in quanto questo caricatore non estrarrà il firmware da UEFI né eseguirà alcuna decompressione prima del caricamento.
Basta caricare un binario ABL*
o PSP_FW_BOOTLOADER_*
per utilizzare il caricatore. Il nome visualizzato in alto a sinistra nel riquadro dovrebbe avere un prefisso AMD-SP. Se il tuo particolare BLOB del firmware non viene caricato e/o viene caricato a un indirizzo errato, segnala un problema.
Lavoro futuro/Luoghi per il contributo
- Attualmente gli indirizzi di caricamento sono statici, forse questo dovrebbe essere rielaborato per determinarlo dinamicamente tramite l’analisi delle istruzioni del punto di ingresso?
- Aggiungere caricatori per altri firmware:
- SMU (estesa).
- Sistema operativo affidabile (tOS).
- Trustlet di avvio.
- Invertire e aggiungere più chiamate di sistema al dizionario delle annotazioni.
- Aggiornare gli argomenti delle chiamate di sistema esistenti.
- Migliorare le annotazioni per correggere le chiamate di sistema in HLIL.
Note
- I caricatori fanno alcune ipotesi sull’indirizzo di caricamento e simili, quindi è possibile che un particolare binario differisca e non venga caricato correttamente (apri un problema).
- Le annotazioni Syscall con prefisso a
_
non sono ufficiali/indovinate.
Versione minima
Questo plugin richiede la seguente versione minima di Binary Ninja:
- Release – 3.2.3814
Risorse
- https://github.com/PSPReverse
- https://doc.coreboot.org/soc/amd/psp_integration.html
- https://github.com/sameershaik/coreboot_beagle-xM/blob/main/src/vendorcode/amd/fsp/cezanne/include/bl_uapp/bl_syscall_public.h
Licenza
- Questo plugin è rilasciato con licenza MIT.
Ringraziamenti
- PSPReverse per il lavoro precedente e le fantastiche risorse.
- Carstein (ispirazione e riferimento per l’annotazione di syscall tramite Syscaller
Changelog
- Possibilità di caricare i binari AGESA Bootloader (ABL).
- Possibilità di caricare i binari del Bootloader.
- Annotazione syscall di base per ABL.
Download: Source code AMD-SP Loader v1.0
Fonte: twitter.com