Introduzione alla sicurezza dei sistemi embedded
Transcript
Introduzione alla sicurezza dei sistemi embedded
Introduzione alla sicurezza dei sistemi embedded Alessandro Budai - eMaze Networks 24 Settembre 2012 Agenda 1 Motivazioni 2 Panoramica vulnerabilità 3 Esempio completo 4 Indicazioni e conclusioni Agenda 1 Motivazioni 2 Panoramica vulnerabilità 3 Esempio completo 4 Indicazioni e conclusioni Perchè un sistema embedded 1/2 I I sistemi embedded sono largamente diffusi e presenti: I I I I I I Router, telecamere, stampanti Sistemi di controllo Terminali di pagamento ... Sempre più dispositivi connessi in rete Spesso ”invisibili” Perchè un sistema embedded 2/2 I I I Spesso mancanza di interazione diretta Finchè funziona è spesso ignorato La sicurezza è spesso esclusa (risorse e time to market) Un sistema embedded è quindi target molto appetibile per un attacco. Vulnerabilità Difetto nella progettazione, implementazione, configurazione che può essere sfruttato localmente o remotamente allo scopo di modificare o degradare un sistema in termini di: I Confidenzialità I Integrità I Disponiblità Obiettivi di un attaccante Quali possono essere gli obiettivi/motivazioni nell’attaccare un sistema embedded ? I Clonazione dispositivo / estrazione proprietà intellettuale I Abilitazione di funzionalità a pagamento I Estrazioni di informazioni (es.: chiavi crittografiche, traffico dati) I Impersonificazione dell’utente I Utilizzo come punto di attacco verso altri sistemi I Causare disservizio Attenzione ! I I La cifratura è solo uno dei componenti di un sistema sicuro Security through obscurity non è una buona idea Agenda 1 Motivazioni 2 Panoramica vulnerabilità 3 Esempio completo 4 Indicazioni e conclusioni Livello degli attacchi I I I Software (Applicativo, OS, Bootloader) Board (Bus, Interfacce comunicazione) Chip Vulnerabilità software Tipiche vulnerabilità individuate in sistemi embedded I Buffer overflow I Command injection I Credenziali di default o mancanza di autenticazione I Chiavi di cifratura / token predicibili I Servizi di rete non utilizzati (e vulnerabili) I Vulnerabilità interfacce di configurazione Web: I I Cross site request forgery Cross site scripting Command injection: esempio 1/2 Il diffuso router WRT54 ne è stato vulnerabile: I Interfaccia Web con funzione di diagnostica rete (ping) I L’utente inserisce l’indirizzo IP nell’interfaccia I Viene composto il comando ”ping indirizzo” e chiamata system Manca validazione, quindi se inserisco 192.168.1.1; reboot ho ottenuto una command injection Command injection: esempio 2/2 Esecuzione ping void diagnose_network(char *userinput) { char buffer[256]; snprintf(buffer, 256, "ping %s", userinput); system(userinput); ... } Chiavi predicibili: esempio 1/2 Sistema di controllo con abilitazione/disabilitazione via SMS I Invio SMS da numero registrato verso il sistema I Il sistema genera un token I Il token viene ricevuto e utilizzato per l’invio del comando Chiavi predicibili: esempio 2/2 I I I I Token generato con rand Il seeding è fatto tramite time ogni volta ! Il sistema ha l’orologio sincronizzato via NTP Posso generare alcuni token e inviare il comando Alcuni suggerimenti I I I I I L’input utente non è mai fidato, validarlo sempre Accessi alla memoria sempre controllati rispetto alla dimensione dei buffer (strncpy vs strcpy) Rimuovere credenziali di default Utilizzare veri generatori casuali ... Attacchi a livello board I I Accesso a console di gestione e/o testing Interazione con interfacce di DEBUG (JTAG) I I I I Download di immagini di firmware Modifica di parametri di configurazione Upload di firmware modificati Interazione con bus Alcuni suggerimenti I I I I Rimozione marking Rimozione a livello software e PCB interfacce Utilizzo di chip con fusing JTAG Rendere i segnali ”delicati” difficilmente accessibili I I I I Segnali su layer interni Utilizzo di resine Package complessi (BGA, COB, ...) Meccanismi (efficaci) antitamper Attacchi a livello chip I Side channel attack I I I I Analisi emissioni Power analysis Failure injection (power glitch, temperatura, irradiazione) Decapping e ricostruzione layer Anatomia di un attacco 1/2 I I I I I Acquisizione del prodotto Analisi visiva del dispositivo Ispezione della board e individuazione componenti principali Ricerca di interfacce comunicazione / debug (console, JTAG, ...) Estrazione delle immagini del firmware Anatomia di un attacco 2/2 I I Analisi del contenuto delle immagini Ricerca di vulnerabilità conosciute e non I I I I I Network e vulnerability scan Fuzzing input Reverse engineering codice Preparazione del vettore di attacco (diretto, indiretto) Azione Agenda 1 Motivazioni 2 Panoramica vulnerabilità 3 Esempio completo 4 Indicazioni e conclusioni Esempio 1/6: il dispositivo e l’attacco Dispositivo in ambito networking con chiavi crittografiche Scopo di un potenziale attacco: I Accesso al sistema sottostante I Estrazione delle chiavi I Estrazione dei flussi non cifrati Esempio 2/6: analisi dispositivo I I I I Acquisizione due dispositivi (uno da ”sacrificare”) Analisi visiva del dispositivo e rimozione case (no antitamper) Ispezione PCB (nessun evidente segno di console/JTAG) Ricerca seriale/JTAG (non disponibile/disabilitato) Esempio 3/6: Board dissection Analisi dei componenti della board I SoC - recuperato datasheet parziale I RAM I Flash NAND I Area coperta da resina Esempio 4/6: Estrazione bootloader e firmware I I I I I I I Rimozione della flash NAND e dump Prima analisi del firmware (tracce interessanti) Boot del SoC avviene da flash seriale (SPI) Individuate piste con segnali bus SPI Rimozione delle resistenze di terminazione Dump della flash seriale Flash SPI con protezione abilitata Esempio 5/6: Reversing bootloader I I I Reversing codice binario bootloader Individuata modalità di abilitazione console bootloader Analisi delle immagini di sistema Esempio 6/6: Accesso al sistema I I I I Modifica delle risposta della flash (test mode) Verifica della signature abilitata da flag contenuto nell’immagine Immagine modificata con flag verifica signature disabilitato Upload di firmware modificato con accesso al sistema Obiettivo raggiunto ! Principali vulnerabilità riscontrate I I I Bus SPI / Flash accessibile Firmware con modalità di test Verifica della signature controllata da flag modificabili Possibili rimedi I I I Utilizzo di bootloader e firmware cifrati (con supporto CPU) Rimozione di qualsiasi modalità utilizzate in fase di factory test Verifica signature non disabilitabile Agenda 1 Motivazioni 2 Panoramica vulnerabilità 3 Esempio completo 4 Indicazioni e conclusioni Concetti generali I Nulla è sicuro al 100% I I Con tempo, risorse e motivazioni qualunque sistema è attaccabile Valutare correttamente il rischio e le minacce I I Comprendere le minacce a cui il sistema è esposto Ridurre il rischio ad un livello accettabile Sicurezza e sviluppo Correggere a posteriori è sempre complesso e costoso I Secure design all’interno del ciclo di sviluppo I Applicazione e conoscenza secure programming I Testing prima di rollout massivi I Imparare dagli errori del passato: I I Database di errori comuni (CWE) Database di vulnerabilità (CVE) Gestire le segnalazioni Le vulnerabilità sono spesso individuate da utenti o ricercatori e riportate al vendor I Evitare di ignorarle I Avere un contatto per la raccolta I Stabile un processo per fixing e rollout Riferimenti utili I I I I CVE: http://nvd.nist.gov, http://www.cvedetails.com CWE: http://cwe.mitre.org OWASP Testing project: https://www.owasp.org/index.php/ OWASP_Testing_Project ... motori di ricerca Conclusioni I I I I I Il problema della sicurezza c’è Va affrontato Più sistemi, maggiori possibilità di attacco Il fixing a posteriori è la soluzione più complessa Contestualizzare e valutare correttamente Fine ! Grazie ! email: [email protected] twitter: pmst