Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux tesi di laurea Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Anno Accademico 2009/2010 relatore Ch.mo prof. Domenico Cotroneo correlatori Ing. Domenico Di Leo Ing. Roberto Natella candidato Mariana Esposito Matr. 885/390 1 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Contesto Verifica dei Sistemi mission­critical Test di robustezza Obiettivi Migliorare l’efficienza e l’efficacia del robustness testing Applicato ad un caso di studio reale: FINMECCANICA LINUX 2 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Robustezza Capacità di un sistema di funzionare correttamente in presenza di input eccezionali o carico di lavoro eccessivo. [IEEE Std 610.12.1990 ] Robustness Testing Struttura: Workload: Input validi per il sistema Faultload: Input eccezionali o input che creano condizioni di stress Limite: Individuare lo spazio dei valori di input 3 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Stato dell’arte : error model TIPOLOGIA DESCRIZIONE ESEMPIO BIT­FLIP Inversione di un bit read (8, 0x8326980, 4096) read (8, 0x8326981, 4096) RANDOM (FUZZY) Sostituzione con valore casuale read (8, 0x8326980, 4096) read (8, 0x12ff8678, 4096) TIPO DI DATO Sostituzione con valore predefinito read (8, 0x8326980, 4096) read (8, 0x0000000, 4096) 4 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Nei sistemi operativi? Punti Iniezione: System call Interfaccia driver Applicazioni Interfaccia Applicazioni Sistema operativo Interfaccia Driver Possibili fallimenti: Crash del sistema Stallo Corruzione di memoria D1 D2 D3 D4 Hardware 5 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Test di robustezza: tool e limiti Alcuni tool esistenti Input random: Scrashme Input basati su tipi di dato: Ballista Limiti attuali Difficoltà a rilevare vulnerabilità gravi Test non considerano lo stato delle risorse (memoria, messaggi, file…) del sistema. 6 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Approccio proposto Considerare gli input non validi per le system call tenendo in considerazione lo stato delle risorse (memoria, messaggi, file, socket ) del sistema, sollecitato da workload esistenti. I1 I5 I9 7 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Classi di fallimento Classi di fallimento Classe 1: non si osservano fallimenti Classe 2: fallimento applicazione Classe 3: fallimento sistema operativo Strategie di rilevazione di fallimenti Rilevazione di stallo attraverso task “canarino” Asserzioni nel codice Check stack overflow Check sui limiti delle aree di memoria allocate dal kernel 8 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Caso di studio FNM­Linux (Finmeccanica Linux) v. 2.1.1 Basata sulla meta‐distribuzione Gentoo Linux Management di prodotti industriali Real Time su sistemi multi‐core Scalabilità Software Safety D0178B Kernel: Linux‐2.6.24‐FNM_v2.1 (evoluzione della versione 2.6.24.7, applicate patch secondo le necessità aziendali). 9 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Configurazione Test Workload Database MySql I/O Disco­Memoria Web server Apache Risorse di rete Middleware DDS RTI IPC System call mmap () open () execve () socket () bind () Memoria File System Processi Rete Rete 10 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Test preliminari Scrashme: assenza fallimenti del sistema operativo Ballista: fallimento dei processi, ma non del SO Test approccio proposto 33 Input random Iniezioni effettuate per tutti i parametri delle 5 system call in ordine sequenziale Test totali per tipologia: 660 Test non iterativo Unico punto di iniezione 33 input random alla stessa iterazione Test iterativo 11 punti di iniezione 3 valori per ogni iterazione 11 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Risultati Test Test non iterativo Fallimenti: Solo Classe 1 e Classe 2 Test iterativo Un fallimento di Classe 3 (Crash), i restanti di classe 1 e 2 Primitiva bind() Parametro addrlen Valore iniettato:3381078368 12 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Un approccio innovativo alla tecnica di robustness testing del sistema operativo Linux Conclusione Tecniche di test attuali non considerano lo stato Verifica della rilevanza dello stato del sistema operativo nel test di robustezza Dai test effettuati il sistema operativo Finmeccanica Linux è risultato robusto Sviluppi futuri Ampliare lo spazio degli esperimenti (variare la tipologia di input, aumentare lo spazio di input) Costruire workload ad­hoc che sollecitino le risorse Tool che monitori le risorse ed esegua i test 13