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