Master Almaweb in Sicurezza dell'Informazionemontreso/master/sicurezza-os-01.pdf · • La politica...
Transcript of Master Almaweb in Sicurezza dell'Informazionemontreso/master/sicurezza-os-01.pdf · • La politica...
1© 2004-2005 Alberto Montresor
Master Almaweb in Sicurezza dell'Informazione
Sicurezza nei Sistemi Operativie nei Sistemi Informativi
Lezione 1 - Introduzione
Alberto Montresor
2© 2004-2005 Alberto Montresor
Introduzione
Benvenuti nel mondo della paranoia più pura!
Parleremo infatti di....
• Nemici, attaccanti, avversari
• Attacchi, intrusioni
• Sistemi di difesa, sistemi chiusi, bastioni,etc.
• Mancanza di fiducia
E' possibile parlare di sicurezza in modo assoluto, formale?
• Daremo qualche modello più o meno formale
• Ma la sicurezza coinvolge troppi elementi, alcuni dei quali imprevedibili, per essere formalizzata completamente
3© 2004-2005 Alberto Montresor
Introduzione
Il docente...
• Alberto Montresor
• E-mail: montreso at cs.unibo.it
• Pagine web:
• http://www.cs.unibo.it/people/faculty/montreso
• http://www.cs.unibo.it/people/faculty/montreso/master
4© 2004-2005 Alberto Montresor
Il programma del corso
4 Febbraio
• Introduzione
• Sicurezza nei programmi
• Sicurezza nei sistemi operativi generici
• Laboratorio
18 Marzo
• Sistemi operativi trusted
• Sicurezza nei database
19 Marzo
• Intrusion detection
• Amministrare la sicurezza
8 Aprile
• Laboratorio
9 Aprile
• Esame finale
• Discussione
Introduzione
5© 2004-2005 Alberto Montresor
Bibliografia
Testo consigliato:
• C. Pfleeger and S. Pfleeger. Security in Computing, 3rd Ed. Prentice Hall, 2003. Versione italiana: Sicurezza in Informatica, Prentice Hall, 2004.
Testo sui sistemi operativi:
• Andrew S. Tanenbaum. Modern Operating System, 2nd Ed.Prentice-Hall, 2001. Capitolo 9: Security
Libri “utili” per il laboratorio:
• Bob Toxen, Real World Linux Security, 2nd Ed. Prentice Hall, 2003.
• Ed Bott, Carl Siechert. Microsoft Windows Security Inside-Out.Microsoft Press, 2003
Introduzione
6© 2004-2005 Alberto Montresor
L'oggetto di questo corso
Sistema informativo
• Un insieme di hardware, software, supporti di memorizzazione, dati e persone che un'organizzazione utilizza per eseguire le attività di elaborazione
Proteggere un sistema informativo:
• Ogni risorsa di un sistema informativo può interessare un attaccante esterno
• Esempi:
• Sistema bancario: Risorse finanziare vs dati sensibili
• Automobile: Sistemi di controllo, sistemi di accesso
Introduzione
7© 2004-2005 Alberto Montresor
Il problema
Comunemente
• Protezione e sicurezza sono utilizzati come sinonimi; ma....
Sicurezza
• E' il problema generale, che coinvolge non solo il sistema informatico, ma anche aspetti amministrativi, legali, politici e finanziari
• Misura della fiducia in un sistema informativo
Protezione
• L'insieme dei meccanismi utilizzati in un sistema di calcolo per il controllo di accesso alle risorse
Introduzione
8© 2004-2005 Alberto Montresor
Politiche e meccanismi
Separazione della politica dai meccanismi
• La politica decide cosa deve essere fatto
• I meccanismi attuano la decisione
E' un concetto fondamentale di software engineering
• La componente che prende le decisioni "politiche" può essere completamente diversa da quella che implementa i meccanismi
• Rende possibile
• Cambiare la politica senza cambiare i meccanismi
• Cambiare i meccanismi senza cambiare la politica
Introduzione
9© 2004-2005 Alberto Montresor
Politiche
La scelta di una politica di sicurezza dipende da:
• Il tipo di attaccanti attesi
• Il valore delle informazioni contenute nel sistema
• I costi dovuti all'utilizzazione di una politica di sicurezza
Valutare questo tipi di problemi
• E' compito del Risk Manager
• Nel terzo ciclo è presente un corso di Risk Assessment
In questo corso:
• Ci occupiamo soprattutto di meccanismi
• Ma discuteremo anche di alcuni esempi di politiche
Introduzione
10© 2004-2005 Alberto Montresor
Vulnerabilità, minacce, attacchi
Vulnerabilità
• Una debolezza nel sistema di protezione
Minaccia:
• Un insieme di circostanze che hanno il potenziale di causare perdite e danni.
Attacco:
• Un tentativo di sfruttare una vulnerabilità da parte di un essere umano o un altro sistema informativo
Controllo:
• Un'azione, un dispositivo, una procedura o una tecnica che rimuove o riduce una vulnerabilità
Introduzione
11© 2004-2005 Alberto Montresor
Minacce: tipologie
Tutte le minacce ricadono in una di queste quattro tipologie:
Intercettazione
Un'entità non autorizzata ottiene l'accesso in “lettura” a una risorsa
Modifica
Un'entità non autorizzata ottiene l'accesso in “scrittura” a una risorsa
Interruzione
La fornitura di un servizio viene interrotto
Falsificazione
La creazione di oggetti contraffatti
Minacce
12© 2004-2005 Alberto Montresor
Obiettivi della protezione
E' necessario definirli correttamente
E' necessario trovare il giusto equilibrio
Availability Integrity
Confidentiality
Minacce
13© 2004-2005 Alberto Montresor
Obiettivi della protezione
Confidentiality (riservatezza, privacy)
• A prima vista: semplice da definire
• Tuttavia:
• Chi determina chi può accedere a cosa?
• Qual è la granularità dell'accesso?
• E' possibile accedere ai dati esterni al contesto?
• Un'entità autorizzata può divulgare dati ad altre entità?
Integrity (integrità)
• Ancora più difficile da definire
• Ad esempio:preciso, accurato, non modificato, modificato in modo accettabile, modificato da processi autorizzati, coerente, etc.
Minacce
14© 2004-2005 Alberto Montresor
Obiettivi della protezione
Availability (disponibilità)
• Relativa sia ai dati che ai servizi (processi che operano sui dati)
• Ancora una volta, è difficile da definire formalmente:
• Il dato/servizio è presente in forma utilizzabile
• Una richiesta viene completata in forma accettabile
• Graceful degradation
Ma non solo...
• Come evitare che il sistema sia un trampolino di lancio per altri attacchi
Minacce
15© 2004-2005 Alberto Montresor
Modellazione degli attacchi
E' necessario capire...
• come si compone un attacco
• qual è l'obiettivo degli attacchi
• chi sono gli attaccanti
• quali attacchi sono più facili di altri
• quali sono le assunzioni di sicurezza di un sistema
• dove spendere meglio il budget di sicurezza
Attacchi
16© 2004-2005 Alberto Montresor
Composizione di un attacco
Un attaccante deve poter disporre di questi tre elementi:
• Metodo
• Capacità, conoscenze, strumenti necessari per l'attacco
• Attacchi diversi richiedono abilità diverse
• Opportunità
• Di quanto tempo dispone un attaccante?
• Che tipo di accesso è a disposizione dell'attaccante?
• Che tipo di fondi sono a disposizione dell'attaccante?
• Movente
• Crimine di opportunità vs un attacco con obiettivo specifico
• Motivazione finanziaria vs motivazione politica
• Divertimento – ovvero, nessun motivo
Attacchi
17© 2004-2005 Alberto Montresor
Tipologie di attacco
Per obiettivo:
• Attacchi passivi:
• attaccano un sistema al fine di leggere i dati, senza modificarli
• Attacchi attivi:
• attaccano un sistema al fine di causare danni
Per metodologia:
• Attacchi “interni”
• Software o utenti “all'interno” del sistema protetto
• Possono seguire un attacco esterno precedente
• Attacchi “esterni”
• Tramite interfacce di comunicazione con l'esterno
• Tramite rete, ma anche tramite CD, dischetti, etc.
Attacchi
18© 2004-2005 Alberto Montresor
Tipologie di attacco
Obiettivi, reloaded (dal punto di vista tecnico)
• Acquisire una qualche forma di controllo della macchina
• Se possibile, acquisire il controllo totale della macchina
Nota sui sistemi operativi multi-utente
• Permettono a più persone di accedere allo stesso sistema informativo
• Vi è una distinzione fra:
• Utenti normali
– hanno accesso solo ad un sottoinsieme di risorse personali
• Superutenti, root, amministratori di sistema, administrator
– hanno accesso all'intero insieme di risorse della macchina
– la controllano totalmente
Attacchi
19© 2004-2005 Alberto Montresor
Attaccanti - Categorie
Script kiddie
• Una persona che utilizza script e programmi sviluppati da altri allo scopo di compromettere computer account e lanciare attacchi più complessi (DoS).
Cracker, o black-hat hacker
• Entrano in un sistema allo scopo di produrre danni, in termine di distruzione dati, disturbo dell'immagine dell'azienda o riduzione della disponibilità
• Possono utilizzare un sistema come base per attacchi più complessi (DoS)
White-hat hacker
• Entrano in un sistema per curiosità, o allo scopo di informare i sistemisti che un certo sistema è debole
Attacchi
20© 2004-2005 Alberto Montresor
Attaccanti - Categorie
Personale interno – corrente
• E' uno degli attacchi più frequenti
• In alcuni casi, è il più difficile da cui difendersi e prevenire
Personale interno – passato
• E' importante assicurarsi che al personale licenziato sia tolto immediatamente ogni diritto di accesso al sistema
Criminali, concorrenza, spie(!), terroristi(!)
• Lo scopo non è più quello di creare un danno generico, ma di trarre vantaggi (economici, sociali) dagli attacchi
Attacchi
21© 2004-2005 Alberto Montresor
Percorsi di attacco
UtenteOrdinario
Root
Scoprireaccount nametramite finger
Scoprire account name via web,
e-mail, newsgroup
Scoprire account name via ftp
Ftp AnonimoSenza chroot
Read /etc/passwd
Guess password
Trappola basatasu trojan horse
Write /tmp
Write /tmp
/etc/passwdsenza shadow
Guess password
Break set-UIDto root prorgram
Read /etc/passwd Crack root
password
Attacchi
22© 2004-2005 Alberto Montresor
Esempio di attacco – Banale!
Individuare il sistema da attaccare
● Tramite web, perchè si è ricevuto un mail, etc.
● Ad esempio, la ditta yahuu
Cercare di carpire qualche prima informazione
● Tramite ping verifichiamo se esiste
$ ping www.yahuu.com
PING www.yahuu.com (217.12.3.11) 56(84) bytes of data.
64 bytes from www.yahuu.com (217.12.3.11): icmp_seq=1 ttl=242
time=88.7 ms
64 bytes from www.yahuu.com (217.12.3.11): icmp_seq=2 ttl=242
time=89.5 ms
● In effetti esiste...
Attacchi
23© 2004-2005 Alberto Montresor
Esempio di attacco – Banale!
Cercare di carpire qualche prima informazione
● Proviamo con finger
$ finger [email protected]
[www.yahuu.com]
Login: root Name: root
Directory: /root Shell: /bin/tsch
Last login Thu Jan 8 00:12 (CET) on tty2
● Ottimo! Ora sappiamo● Finger è abilitato (oggi è molto raro)● L'utente root non è al momento connesso
Attacchi
24© 2004-2005 Alberto Montresor
Esempio di attacco – Banale!
Cerchiamo ora di scoprire qualche nome utente
• Abbiamo bisogno di un dizionario di nomi
• Possiamo utilizzare finger per scoprire se il nome esiste
$ finger dennisFinger: dennis: no such user
$ finger paulLogin: paul Name: Paul HughesDirectory: /home/paul Shell: /bin/bashOffice: 789-123456Last login Wed Jan 7 19:05 (CET) on pts/4 from ...
Attacchi
25© 2004-2005 Alberto Montresor
Esempio di attacco – Banale!
Una volta scoperto il nome utente
• Possiamo utilizzare un meccanismo automatico per tentare di indovinare la password
• Funziona quando la password è banale
Il passo successivo è cercare di acquisire privilegi da superutente
• Probabilmente, indovinare la password di root non avrà successo
• Proviamo a vedere cosa contiene la variabile $PATH di root:
cat /root/.bash_profile
export PATH=".:/usr/local/bin:/etc:$PATH"
• Ottimo! Il superutente sprovveduto permette permette di eseguire qualunque programma nella directory corrente
Attacchi
26© 2004-2005 Alberto Montresor
Esempio di attacco – Banale!
Prepariamo una trappola
• Ad esempio in /tmp
• Si crea un file di dimensioni enormi, che in qualche modo catturi l'attenzione del superutente
• Si installa un insieme di trojan horse quali ad esempio ls, vi,
etc.
• Quando vengono eseguiti, questi programmi possono eseguire qualunque cosa l'attaccante voglia
Attacchi
27© 2004-2005 Alberto Montresor
Percorsi di attacco
UtenteOrdinario
Root
Scoprireaccount nametramite finger
Scoprire account name via web,
e-mail, newsgroup
Scoprire account name via ftp
Ftp AnonimoSenza chroot
Read /etc/passwd
Guess password
Trappola basatasu trojan horse
Write /tmp
Write /tmp
/etc/passwdsenza shadow
Guess password
Break set-UIDto root prorgram
Read /etc/passwd Crack root
password
Attacchi
28© 2004-2005 Alberto Montresor
Percorsi di attacco
I percorsi di attacco (o attack tree) sono uno strumento molto potente e generale
• Rappresentano gli attacchi e le contromisure su
• Strutture ad albero
• Grafi diretti aciclici
• Il nodo radice è il goal dell'attacco
• I nodi foglia sono attacchi
Come si usano:
• Si associano ai nodi foglia delle proprietà
• Si calcolano le proprietà dei nodi interni in base alla proprietà dei loro figli
Attacchi
29© 2004-2005 Alberto Montresor
Percorsi di attacco
UtenteOrdinario
Root
Scoprireaccount nametramite finger
Scoprire account name via web,
e-mail, newsgroup
Scoprire account name via ftp
Ftp AnonimoSenza chroot
Read /etc/passwd
Guess password
Trappola basatasu trojan horse
Write /tmp
Write /tmp
/etc/passwdsenza shadow
Guess password
Break set-UIDto root prorgram
Read /etc/passwd
impossibileCosto: Inf.
possibileCosto: 2h
impossibileCosto: Inf.
possibileCosto: 100h
possibileCosto: 24h
possibileCosto: 126h
Attacchi
30© 2004-2005 Alberto Montresor
Percorsi di attacco
Le domande da porsi
• Qual è il percorso più semplice (meno costoso) per un cracker?
• Esistono dei percorsi così semplici da rappresentare un vero rischio di break-in?
• E' possibile eliminare questi percorsi, o renderli più difficili da seguire?
• E' possibile forzare un cracker a seguire un percorso più complesso e costoso?
Ma soprattutto...
• Sono stati trovati tutti i percorsi di attacco?
• E' la domanda più difficile
• Richiede una conoscenza completa del sistema da difendere
Attacchi
31© 2004-2005 Alberto Montresor
Percorsi di attacco
Sono stati trovati tutti i percorsi di attacco?
Un esempio emblematico
• CGI-BIN per la spedizione di mail
• Alcuni di questi CGI-BIN fanno uso del comando mail
• Il comando effettivo viene composto a partire dall'input dell'utente
• Se
• Il CGI-BIN è mal scritto e non effettua alcun controllo
• L'attaccante sottomette una stringa del tipo "subject ; <comando>"
• Il comando risultante sarebbe "mail -s subject ;
<comando>", dando accesso all'attaccante
Attacchi
32© 2004-2005 Alberto Montresor
Alcuni principi fondamentali
Principio dell'anello debole (weakest link)
Nessun soluzione di sicurezza è più forte del suo anello più debole
Principio della protezione adeguata
Gli elementi di un sistema informativo devono essere protetti a un grado coerente con il loro valore
Principio di efficacia
I controlli devono essere utilizzati adeguatamente per essere efficaci. Devono essere efficienti, di facile impiego e appropriati.
Controlli
33© 2004-2005 Alberto Montresor
Quali sono gli elementi coinvolti
Hardware
• L'hardware fornisce i meccanismi base per implementare i meccanismi di protezione più complessi?
• Cosa si intende con hardware?
• Il processore, la memoria, i dispositivi
• Ma anche l'ambiente fisico in cui si trova la macchina
Sistema operativo (nucleo)
• Il nucleo del sistema operativo fornisce due meccanismi fondamentali per garantire la protezione del sistema:
• Autenticazione
• Autorizzazione
Controlli
34© 2004-2005 Alberto Montresor
Quali sono gli elementi coinvolti
Sistema operativo (librerie, tool di sistema)
• Molto spesso: • Contengono grandi quantità di codice
• Vengono eseguiti in modalità superutente
Applicazioni
• Possono fornire una prima "testa di ponte" per attaccare un sistema
Utenti
• Sono l'anello più debole!
• Tutta la sicurezza ruota intorno a loro
Controlli
35© 2004-2005 Alberto Montresor
Metodi di difesa
Come gestire un attacco:
• prevenire
• cercare di evitare completamente
• scoraggiare
• ridurre le probabilità di successo / aumentare il costo
• deviare
• rendere altri sistemi più attraenti
• rendere questo sistema meno attraente
• rilevare
• al momento o successivamente
• correggere
• eliminare gli effetti
Controlli
36© 2004-2005 Alberto Montresor
Tecniche a disposizione
Crittografia
Controllo sul software
• Controlli interni di programmi applicativi
• e.g. gestione dei limiti
• Controlli del sistema operativo e del sistema di rete
• proteggere gli utenti da altri utenti
• Programmi di controllo indipendenti
• contro specifiche vulnerabilità, come ad esempio anti-virus
• Controlli di sviluppo
• implementare software seguendo un certo standard di qualità
• progettazione, codifica, testing e manutenzione
Controlli
37© 2004-2005 Alberto Montresor
Protezione nei programmi
La protezione dei programmi
• è il cuore della sicurezza dei sistemi informativi
Due domande fondamentali:
• come è possibile impedire la presenza di difetti nei programmi
• come è possibile proteggere le risorse da programmi contenenti difetti?
Quali tipologie di software
• Applicazioni
• Sistemi Operativi
• Altri sistemi speciali: sistemi operativi trusted, database
Protezione dei programmi
38© 2004-2005 Alberto Montresor
Protezione nei programmi
Quali sono i possibili “difetti” del software?
• Errori di programmazione:
• Violazione dei limiti (buffer overflow)
• Errori di convalida
• Autenticazione inadeguata (blocco lucidi successivi)
• Controllo degli accessi incompleto
• Codice maligno
• Virus, worm
• Cavalli di troia (trojan horse)
• Bombe logiche
• Backdoor
Protezione dei programmi
39© 2004-2005 Alberto Montresor
Buffer Overflow
Qual'è la tecnica:
• L'idea generale è quella di fornire ad un programma (server) un insieme di dati di dimensioni superiori a quella prevista (buffer overflow)
Cosa succede?
• Nel "migliore" dei casi, il programma va in crash(segmentation fault)
• Nei casi peggiori, è possibile che l'attaccante prenda il controllo della macchina
Un po' di statistica...
• >50% degli incidenti riportati al CERT sono dovuti a buffer overflow
Protezione dei programmi
40© 2004-2005 Alberto Montresor
Buffer Overflow
Realizzare un exploit tramite buffer overflow:
• I principi base sono gli stessi per ogni architettura
• Ma si richiede conoscenza del sistema operativo e della CPU del target
Background necessario
• Organizzazione della memoria
• Le funzioni C e lo stack
• Un po' di linguaggio macchina
Protezione dei programmi
41© 2004-2005 Alberto Montresor
Buffer Overflow
Organizzazione della memoria
• Segmento codice
• Programma eseguibile
• Segmento dati
• Dati "statici"
• Segmento stack
• Dati "temporanei"
Protezione dei programmi
42© 2004-2005 Alberto Montresor
Buffer Overflow
Funzioni Cint main()
{
int buffer[10];
buffer[20] = 5;
}
Il buffer
• Viene creato nello stack (è "temporaneo" per la funzione C)
• Non vengono effettuati alcun tipo di controllo di dimensione
• La seconda iscrizione sovrascrive altri dati nello stack
Protezione dei programmi
43© 2004-2005 Alberto Montresor
Buffer Overflow
Un po' di linguaggio macchina
• Ad ogni chiamata di funzione, nello stack vengono collocati
• Indirizzo di ritorno
• Eventuali argomenti della funzione
• Eventuali dati locali
stack stack
Ret. add.
Argomenti,dati locali
Protezione dei programmi
44© 2004-2005 Alberto Montresor
Buffer Overflow
Quali tipo di codice porta ad un buffer overflow?
• Utilizzazione di funzioni di libreria deboli che non controllano la dimensione dei loro argomenti
• gets() - legge lo standard input
• strcpy() - copia una stringa in un'altra
• sprintf() - formata una stringa in un buffer
Esempio:int main()
{
char buffer[10];
printf("Inserisci il CAP");
gets(buffer);
}
Protezione dei programmi
45© 2004-2005 Alberto Montresor
Buffer Overflow
L'idea generale è quella di riempire il buffer
• Con codice "maligno"
• Un nuovo indirizzo di ritorno che punti a tale codice maligno
stack stack
ret. add.
buffer
stack
ret. add.
buffer
bufferoverflow
nuovo ret. addrs
codice"malefico"
Protezione dei programmi
46© 2004-2005 Alberto Montresor
Buffer Overflow
Contromisure
• Scrivere codice sicuro
• I buffer overflow sono il risultato di "sloppy programming"
• Evitare le funzioni citate, consultare i manuali delle librerie, etc.
• Invalidazione del codice nello stack
• Tutto dipende dal fatto che si esegue codice nello stack
• E' possibile evitare tutto ciò?
• In Linux, si utilizzano "funzioni trampolino", basate su questo meccanismo
• Esistono però delle versioni sicure del kernel linux
Protezione dei programmi
47© 2004-2005 Alberto Montresor
Buffer Overflow
Contromisure
• Controlli a tempo di compilazione• Patch per compilatori che aggiungono controlli sulla
dimensione dei buffer– Tendono a far crescere il codice e diminuire le prestazioni
• Patch per compilatori che controllano unicamente l'indirizzo di ritorno
– Copiato in una posizione sicura
– StackGuard, StackShield
• Nota: richiede ri-compilazione delle applicazioni
• Controlli a run-time• Verificano a run-time le dimensioni degli stack frame
• Se gli stack frame presentano qualche errore, terminano il programma
• Librerie pre-caricate tipo libsafe
Protezione dei programmi
48© 2004-2005 Alberto Montresor
Errori di convalida
In cosa consiste:
• fornire ad un programma dati non validi
• Esempio: http://www.a.com/input.php&parm1=2004Feb29
• In alcuni casi, può avere ripercussioni sulla sicurezza
• Caso reale: una ditta di e-commerce che prendeva in input, oltre ai quantitativi, anche i prezzi!
Provate questa...
http://www.space.com/php/multimedia/imagedisplay/img_display.php?pic=h_astronaut_djn_02.jpg&cap=Per+ragioni+igieniche,+gli+studenti+di+Almaweb+devono+indossare+adeguate+protezioni
Protezione dei programmi
49© 2004-2005 Alberto Montresor
Errori di controllo degli accessi
Errori tempo di controllo / tempo di utilizzo
Esempio:
a.txt operazione
A B
a.txt A,Bb.txt C,B
Protezione dei programmi
50© 2004-2005 Alberto Montresor
Errori di controllo degli accessi
Errori tempo di controllo / tempo di utilizzo
Esempio:
b.txt operazione
A B
a.txt A,Bb.txt C,B
Protezione dei programmi
51© 2004-2005 Alberto Montresor
Cavalli di troia – Trojan horse
Definizione
• Sono programmi che replicano le funzionalità di programmi di uso comune o programmi dall’apparenza innocua ma che contengono codice “malefico”
Tipicamente
• Catturano informazioni e le inviano al creatore del programma
• Informazioni critiche per la sicurezza del sistema
• Informazioni “private” dell'utente
• Compromettono o distruggono informazioni importanti per il funzionamento del sistemi
Protezione dei programmi
52© 2004-2005 Alberto Montresor
Attacchi interni – Trojan horse
Esempi:
• Un applicativo può leggere informazioni relative al vostro sistema o al software installato e inviarle alla ditta creatrice del programma.....
• Spyware in programmi di file sharing
• Inserimento di programmi nelle directory normalmente accedibili tramite $PATH con il nome "simile" a quello di programmi noti sperando che un utente commetta un errore di battitura
• Esempio: dri (al posto di dir), la (al posto di ls)
• Login spoofing
Protezione dei programmi
53© 2004-2005 Alberto Montresor
Bombe logiche, bombe a tempo
Descrizione
• Il creatore di un software utilizzato internamente in una compagnia inserisce del codice maligno che si può attivare sotto particolari condizioni
• Esempi di condizioni...
• Il creatore viene licenziato e il suo nome scompare dal database dei salari
• Non potendo più accedere al sistema, non può evitare che la bomba logica si attivi
Contromisure
• Analisi del codice sorgente (code reviews)
Protezione dei programmi
54© 2004-2005 Alberto Montresor
Backdoor / Trapdoor
Descrizione
• Il creatore di un software può deliberatamente lasciare “porte di servizio” per entrare aggirando i sistemi di protezione
Alcuni esempi
• Il film War Games!
• Back Orifice, Sobig, MyDoom
• Nov. 2003: un tentativo di inserire un backdoor nel kernel linux
• Cosa succede nei sistemi proprietari?
Contromisure
• analisi del codice sorgente (code reviews)
• Ma si veda l'articolo “Reflections on Trusting trust”, di D. Knuth.
Protezione dei programmi
55© 2004-2005 Alberto Montresor
Virus e worm
Un virus
• è un programma che può trasmettere altri programmi non maligni modificandoli
Un worm
• è un programma che diffonde copie di se stesso in una rete
Quali differenze...
• i worm operano sulle reti, i virus possono usare qualunque supporto
• i worm sono programmi autonomi, i virus infettano programmi esistenti
• non vi è più una vera distinzione, ormai...
Protezione dei programmi
56© 2004-2005 Alberto Montresor
Virus e worm
L'attività di un virus si divide in due fasi:
• Riproduzione (infezione)• Un buon virus deve bilanciare infezione e possibilità di essere
scoperto
• Esistono tecniche per cercare di nascondersi
• Attivazione• Può essere scatenata da uno specifico evento
• In generale, un virus attivato compie azioni dannose (o semplicemente consuma risorse)
Protezione dei programmi
57© 2004-2005 Alberto Montresor
Virus e worm
Come si diffondono i virus?
• Un virus deve essere eseguito potersi diffondere/attivare
• Come può forzare la propria esecuzione?
• Accodandosi ad un programma esistente
– EXE/COM in MS-DOS
– Portable Executable in Windows
– ELF in Linux
• Sfruttando un meccanismo di bootstrap
– boot sector
– master boot record
• Accodandosi a file dati che permettono l'esecuzione di codice (anche in maniera automatica)
– posta elettronica
– macro virus in Office
Protezione dei programmi
58© 2004-2005 Alberto Montresor
Virus e worm
Virus “accodato”
Virus “integrato”
Virus S.O. Init
Virus in boot sector / MBR
Macro virus
RAM
SO
Virus residenti
Protezione dei programmi
Disco
59© 2004-2005 Alberto Montresor
Virus e worm
Come individuare un virus?
• I virus non sono invisibili
• Devono essere memorizzati
• Eseguono azioni “tipiche”
• E' possibile estrapolare una definizione o firma che caratterizza il virus
• Questa firma viene cercata dai programmi anti-virus
Esempi:
• Il worm code-red inizia con:/default.ida?NNNNN
Come si nascondono i virus?
• Virus “stealth”
• Virus “polimorfici”
Statistics:
• Più di 100.000 virus
• Relativamente pochi (~1000) sono “attivi” in un certo periodo
Protezione dei programmi
60© 2004-2005 Alberto Montresor
Internet Worm
Internet Worm di Morris
• Il primo work conosciuto (1988)
• Sfruttava alcune bug di sistemi di comunicazione
• Sostanzialmente benigno, bloccò però la rete per un giorno
• Fu la “goccia” che fece nascere il CERT
Sistema infetto Sistema bersaglio
Worm hook
worm
rsh fingersendmail
connessione
download
Protezione dei programmi
61© 2004-2005 Alberto Montresor
Protezione nei sistemi operativi
Per comprendere il problema della protezione di un sistema operativo, è necessario conoscere:
• Quali sono le funzionalità offerte
• Come è strutturato
• Quali sono i principali meccanismi di funzionamento
Quali sono le funzionalità principali
• Esecuzione di programmi
• Accesso semplificato e controllato alle risorse del calcolatore• Dispositivi di I/O
• File system
• Rilevazione e risposta agli errori
• Accounting
Protezione “base”nei S.O.
62© 2004-2005 Alberto Montresor
Protezione nei sistemi operativi
Visione "a strati" delle componenti hardware/software che compongono un elaboratore:
Programmi applicativi
Tool di sistema
Nucleo del Sistema operativo - Kernel
Computer hardware
Progettistadi S.O.
Programmatoredi sistema
Utente
{Programmidi sistema
Sistemista
Librerie
Protezione “base”nei S.O.
63© 2004-2005 Alberto Montresor
Protezione nei sistemi operativi
Sistemi operativi multiutente, multiprogrammati
• Permettono l'esecuzione di più processi da parte di utenti potenzialmente diversi
E' necessaria una separazione logica:
• Fra processi utente e attività di sistema
• I processi utente non devono interferire con altri processi
• I processi utente non devono interferire con il s.o.
Riflessione: anche in un sistema usato da un singolo utente?
• Distinzione fra “attività” personali e “attività di sistema”
• E.g. : scrivere questo file / aggiornare il sistema
Protezione “base”nei S.O.
64© 2004-2005 Alberto Montresor
Protezione nei sistemi operativi
Non è possibile proteggere un s.o. senza un certo insieme di meccanismi da parte dell'hardware
• Meccanismo di avvicendamento fra processi distinti e sistema operativo
• Protezione del processore
• Protezione della memoria
• Protezione dei dispositivi di I/O
Protezione “base”nei S.O.
65© 2004-2005 Alberto Montresor
Interrupt
Definizione:
• Un meccanismo che permette l'interruzione del normale ciclo di esecuzione della CPU
Caratteristiche
• permettono ad un sistema operativo di "intervenire" durante l'esecuzione di un processo utente, allo scopo di gestire efficacemente le risorse del calcolatore
• processore, memoria, dispositivi di I/O
• possono essere sia hardware che software
• possono essere mascherati (ritardati) se la CPU sta svolgendo compiti non interrompibili
Protezione “base”nei S.O.
66© 2004-2005 Alberto Montresor
Interrupt vs Trap
Interrupt Hardware
• Eventi hardware asincroni, non causati dal processo in esecuzione
• Esempi:
• dispositivi di I/O - (per notifica di eventi quali il completamento di una operazione di I/O)
• clock - (eventi fissati nel tempo, generati da un timer)
Interrupt Software (Trap)
• Causato dal programma
• Esempi
• eventi eccezionali come divisione per 0 o problemi di indirizzamento
• richiesta di servizi di sistema (system call)
Protezione “base”nei S.O.
67© 2004-2005 Alberto Montresor
Gestione Interrupt - Panoramica
Cosa succede in seguito ad un interrupt
• Un segnale "interrupt request" viene spedito al processore
• Il processore
• sospende le operazioni del processo corrente
• salta ad un particolare indirizzo di memoria contenente la routine di gestione dell'interrupt (interrupt handler)
• L'interrupt handler
• gestisce nel modo opportuno l'interrupt
• ritorna il controllo al processo interrotto (o a un altro processo, nel caso di scheduling)
• Il processore riprende l'esecuzione del processo interrotto come se nulla fosse successo
Har
dwar
eSof
twar
eProtezione “base”
nei S.O.
68© 2004-2005 Alberto Montresor
Interrupt
Processo utente InterruptHandler
Interrupti
i+1
Protezione “base”nei S.O.
69© 2004-2005 Alberto Montresor
Sistemi operativi "Interrupt Driven"
I sistemi operativi moderni sono detti "Interrupt Driven"
• gran parte del nucleo di un sistema operativo viene eseguito in seguito ad un interrupt
• sono gli interrupt (o i trap) che guidano l'avvicendamento dei processi
Protezione “base”nei S.O.
70© 2004-2005 Alberto Montresor
Protezione Hardware: Utente / Kernel
Modalità kernel / supervisore / privilegiata:
• i processi in questa modalità hanno accesso a tutte le istruzioni, incluse quelle privilegiate, che permettono di gestire totalmente il sistema
Modalità utente
• i processi in modalità utente non hanno accesso alle istruzioni privilegiate
"Mode bit" nello status register per distinguere fra modalità utente e modalità supervisore
Esempio:
• le istruzioni per disabilitare gli interrupt è privilegiata
Protezione “base”nei S.O.
71© 2004-2005 Alberto Montresor
Protezione Hardware: Utente / Kernel
Come funziona
• alla partenza, il processore è in modalità kernel
• viene caricato il sistema operativo (bootstrap) e si inizia ad eseguirlo
• quando passa il controllo ad un processo utente, il S.O. cambia il valore del mode bit e il processore passa in modalità utente
• tutte le volte che avviene un interrupt, l'hardware passa da modalità utente a modalità kernel
Protezione “base”nei S.O.
72© 2004-2005 Alberto Montresor
Protezione Hardware: Protezione I/O
Le istruzioni di I/O devono essere considerate privilegiate
• Il sistema operativo dovrà fornire agli utenti primitive e servizi per accedere all'I/O
• Tutte le richieste di I/O passano attraverso codice del S.O. e possono essere controllate preventivamente
Esempio:
• accesso al dispositivo di memoria secondaria che ospita un file system
• vogliamo evitare che un qualunque processo possa accedere al dispositivo modificando (o corrompendo) il file system stesso
Protezione “base”nei S.O.
73© 2004-2005 Alberto Montresor
Protezione Hardware: Memoria
La protezione non è completa se non proteggiamo anche la memoria
Altrimenti, i processi utente potrebbero:
• modificare il codice o i dati di altri processi utenti
• modificare il codice o i dati del sistema operativo
• modificare l'interrupt vector, inserendo i propri gestori degli interrupt
La protezione avviene tramite la Memory Management Unit (MMU)
Protezione “base”nei S.O.
74© 2004-2005 Alberto Montresor
Protezione Hardware: MMU
Registro base + registro limite
• ogni indirizzo generato dal processoreviene confrontato con due registri,detti base e limite. Se non inclusoin questo range, l'indirizzo non èvalido e genera un'eccezione
Traduzione indirizzi logici in indirizzi fisici
• ogni indirizzo generato dal processorecorrisponde ad un indirizzo logico
• l'indirizzo logico viene trasformato in un indirizzo fisico a tempo di esecuzione dal meccanismo di MMU
• un indirizzo viene protetto se non può mai essere generato dal meccanismo di traduzione
Base
Limite
Protezione “base”nei S.O.
75© 2004-2005 Alberto Montresor
Protezione Hardware
Riflessione - continua
• I meccanismi visti proteggono
• il sistema operativo dai programmi utenti
• i programmi utenti dagli altri programmi utenti
• C'è chi vuole fare di più...
• protezione del sistema da qualunque tentativo di manomissione (compreso il proprietario del sistema...)
Digital Right Management
• Un'iniziativa Microsoft, Intel et al. con lo scopo di creare un "trusted environment", in cui non sia possibile eseguire nessun programma non autorizzato
• mai più virus.... (mah?)
• mai più open-source software... (mah!)
Protezione “base”nei S.O.
76© 2004-2005 Alberto Montresor
Protezione Hardware - System call
Problema
• poiché le istruzioni di I/O sono privilegiate, possono essere eseguite unicamente dal S.O.
• com'è possibile per i processi utenti eseguire operazioni di I/O?
Soluzione
• i processi utenti devono fare richieste esplicite di I/O al S.O.
• meccanismo delle system call, ovvero trap generate da istruzioni specifiche
Protezione “base”nei S.O.
77© 2004-2005 Alberto Montresor
Protezione HW - System call
li $a0, 10li $v0, 1syscall
0x00FF00000
Interrupt vector
01
2
3
...salvataggio registri ...
...gestione interrupt...
...operazioni di I/O...
...ripristino registri...rfe/eret // return from exception
... altrocodice...
Interrupt handler
Codice utente
Protezione “base”nei S.O.