Utilizzando Whitelist per migliorare la sicurezza del firmware

Firmware è diventato più popolare nel mondo della ricerca sulla sicurezza informatica. Gli attacchi che operano a livello di firmware possono essere difficili da scoprire e possono persistere anche in scenari di ripristino bare-metal. Questo tipo di hack è stato ben documentato dalle indagini degli exploit HackingTeam e Vault7.

Fortunatamente, ci sono metodi per rilevare e difendere da tali attacchi. Gli attacchi basati sul firmware in genere tentano di aggiungere o modificare i moduli del firmware di sistema memorizzati nella NVRAM. Gli strumenti forniti dal progetto open source CHIPSEC possono essere utilizzati per generare e verificare gli hash di questi moduli, in modo che gli utenti possano rilevare modifiche non autorizzate.

 CHIPSEC CHISPEC, introdotto nel marzo 2014, è un framework per l’analisi della sicurezza a livello di piattaforma di hardware, dispositivi, firmware di sistema, meccanismi di protezione a basso livello e la configurazione di vari componenti della piattaforma. Contiene una serie di moduli, tra cui semplici test per le protezioni hardware e la configurazione corretta, test per le vulnerabilità nei componenti del firmware e della piattaforma, strumenti di valutazione della sicurezza e fuzzing per vari dispositivi e interfacce della piattaforma e strumenti che acquisiscono firmware e artefatti critici del dispositivo.

Il modulo whitelist (strumenti.uefi.whitelist) utilizza CHIPSEC per estrarre un elenco di eseguibili EFI da un’immagine del firmware binario e crea un elenco di eseguibili” attesi ” e hash corrispondenti (.File JSON) da utilizzare in seguito per il confronto. La documentazione è disponibile come parte del codice sorgente del modulo su github e nel manuale CHIPSEC.

Il processo presuppone che tu stia partendo da una “immagine del firmware nota”, preferibilmente una versione di produzione del firmware fornita dal produttore, e che tu abbia usato CHIPSEC per cercare problemi noti prima di inserire accidentalmente qualcosa di brutto. Questo esempio utilizza il firmware UEFI open source per il rombo MinnowBoard (release 0.97), per una migliore visibilità nel processo.

La seguente riga di comando CHIPSEC crea una whitelist denominata efilist.json basato su una “buona immagine conosciuta” (platform_fw.bidone):

python chipsec_main.py -i -n -m tools.uefi.whitelist -a generate,efilist.json,platform_fw.bin

CHIPSEC in Ubuntu Linux

L’applicazione di questo processo alle immagini x64 “release” e “debug” del firmware MinnowBoard Turbot 0.97 produce le seguenti whitelist:

  • MNW2MAX1.X64. 0097.D01.1709211100.bin (firmware UEFI x64, modalità di debug) – X64D97_whitelist.json
  • MNW2MAX1.X64. 0097.R01.1709211052.bin (firmware UEFI x64, modalità di rilascio) – X64R97_whitelist.json

(esercizio per il lettore: scarica le immagini del firmware, esegui CHIPSEC, vedi se la tua whitelist corrisponde)

È importante notare che il file JSON whitelist risultante non è un semplice hash del file binario, contiene hash dei moduli eseguibili dell’immagine del firmware. CHIPSEC ha la capacità di eseguire la scansione e catalogare i singoli componenti del firmware, che possono essere utilizzati per whitelist o blacklist eseguibili specifici.

Pubblicazione delle whitelist

Se sei un produttore di sistemi, puoi pubblicare queste whitelist per la verifica del cliente. Tuttavia, è meglio firmare i file a scopo di verifica. Per garantire che la whitelist ottenuta da un utente finale sia la whitelist ufficiale, può essere firmata con GPG utilizzando una firma distaccata:

gpg –detach-sign <file>

Inoltre, gli utenti devono autenticare i certificati per un nome di dominio noto per il produttore del sistema quando consegnati tramite HTTPS. È inoltre consigliabile che le organizzazioni IT firmino whitelist generati internamente per impedire l’utilizzo di elenchi non autorizzati negli audit.

Controllo Whitelist

Se è disponibile una firma distaccata, GPG può essere utilizzato per verificare il file whitelist:

gpg –verify <file>

Una volta verificata l’autenticità della whitelist, l’utente deve scattare un’immagine del firmware della piattaforma utilizzando CHIPSEC. Questa riga di comando ha utilizzato il comando ‘dump’ per generare user_fw.bidone:

python chipsec_util.py spi dump user_fw.bin

Ora CHIPSEC può essere utilizzato per verificare l’immagine del firmware della piattaforma rispetto alla whitelist associata. Questo esempio verificherebbe l’immagine “release” x64 per il rombo Minnowboard 0.97:

python chipsec_main.py -i -n -m tools.uefi.whitelist -a check,X64REL_whitelist.json,user_fw.bin

A questo punto, CHIPSEC restituirà uno stato” PASSATO “o” AVVISO”. Se il test restituisce “PASSATO”, tutti gli hash sono stati trovati nella whitelist e corrispondono ai valori attesi. Se il test restituisce “AVVISO”, era allora qualcosa è diverso. Si noti che un” AVVISO ” contro non indica immediatamente una minaccia alla sicurezza (es: l’utente potrebbe aver aggiornato il firmware più recente del produttore), ma richiede un’indagine per assicurarsi che l’immagine del firmware alterata non sia dovuta a un tentativo di attacco.

Limitazioni

Utilizzando strumenti come CHIPSEC questo può migliorare la sicurezza, ma nessun sistema può essere assolutamente sicuro, e queste procedure non possono difendersi da tutti i possibili attacchi. Ci sono una serie di limitazioni da considerare quando si interpretano i risultati della whitelist:

  • Potrebbero esserci metodi di imballaggio delle immagini personalizzati o proprietari che CHIPSEC non capisce. Ciò potrebbe comportare l’esclusione di alcuni moduli, quindi le modifiche corrispondenti potrebbero essere perse durante un confronto della whitelist.
  • Il software in esecuzione su un sistema già compromesso può essere ingannato. Se un sistema è già compromesso, CHIPSEC e software simili potrebbero non produrre indicatori affidabili.

Sommario

La possibilità per CHIPSEC di generare whitelist fornisce un metodo per convalidare la supply chain del firmware. I produttori possono sfruttare questi strumenti per aiutare gli utenti a verificare le versioni ufficiali del firmware e gli amministratori IT possono generare whitelist per gli audit interni basati su immagini attendibili.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.