Sicurezza dei sistemi informatici Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione Terza lezione 19/5/2007
Contenuto della lezione Linee guida della sicurezza Linee guida della sicurezza Sicurezza nei sistemi operativi Sicurezza nei sistemi operativi
Linee guida per la progettazione di sistemi sicuri Semplicità Semplicità Meno cose possono andare male... Meno cose possono andare male... Un numero minore possibile di inconsistenze Un numero minore possibile di inconsistenze Facile da capire Facile da capire Restrizioni Restrizioni Minimizzare gli accessi Minimizzare gli accessi Inibire la comunicazione Inibire la comunicazione
Minimo Privilegio Un soggetto deve possedere solo i diritti di cui ha bisogno per svolgere i propri compiti Un soggetto deve possedere solo i diritti di cui ha bisogno per svolgere i propri compiti I diritti sono concessi in base alla funzione, non all’identità I diritti sono concessi in base alla funzione, non all’identità I diritti sono aggiunti quando servono e quando non servono più sono revocati I diritti sono aggiunti quando servono e quando non servono più sono revocati Non tutti i sistemi, a causa della granularità dei permessi, sono in grado di soddisfare tale principio Non tutti i sistemi, a causa della granularità dei permessi, sono in grado di soddisfare tale principio
Fail-Safe Defaults Per default, l’accesso di un soggetto ad un oggetto deve essere negato Per default, l’accesso di un soggetto ad un oggetto deve essere negato Ogni diritto deve essere concesso esplicitamente Ogni diritto deve essere concesso esplicitamente Inoltre se un’azione fallisce il sistema deve restare sicuro, come se l’azione non fosse stata svolta Inoltre se un’azione fallisce il sistema deve restare sicuro, come se l’azione non fosse stata svolta
Economia del Meccanismo Tenere il sistema più semplice possibile: Tenere il sistema più semplice possibile: nel progetto, implementazione, numero di operazioni, interazioni con altre componenti, addirittura nella specifica nel progetto, implementazione, numero di operazioni, interazioni con altre componenti, addirittura nella specifica Semplice significa anche che ci sono meno cose da controllare Semplice significa anche che ci sono meno cose da controllare In caso di errori è più facile identificarli e correggerli In caso di errori è più facile identificarli e correggerli Particolare attenzione deve essere posta nelle interfacce ad altri moduli (possono fare assunzioni non verificate) Particolare attenzione deve essere posta nelle interfacce ad altri moduli (possono fare assunzioni non verificate) esempio: finger esempio: finger
Completa Mediazione Controllare ogni accesso Controllare ogni accesso Di solito il controllo è fatto al primo accesso Di solito il controllo è fatto al primo accesso Ad esempio in UNIX il controllo di accesso in lettura ad un file è fatto solo all’apertura del file e non ad ogni operazioni di lettura Ad esempio in UNIX il controllo di accesso in lettura ad un file è fatto solo all’apertura del file e non ad ogni operazioni di lettura Se i permessi cambiano durante l’operazione, si possono generare accessi non validi Se i permessi cambiano durante l’operazione, si possono generare accessi non validi
Open Design La sicurezza non dovrebbe dipendere dalla segretezza nella progettazione o dell’implementazione del sistema La sicurezza non dovrebbe dipendere dalla segretezza nella progettazione o dell’implementazione del sistema Si potrebbe intendere che il codice sorgente dovrebbe essere pubblico Si potrebbe intendere che il codice sorgente dovrebbe essere pubblico “Sicurezza mediante oscurità” ? “Sicurezza mediante oscurità” ? Non va bene con informazioni tipo passwords o chiavi crittografiche Non va bene con informazioni tipo passwords o chiavi crittografiche
Separazione dei Privilegi Non si può concedere un diritto in base ad una condizione sola Non si può concedere un diritto in base ad una condizione sola ad esempio in molti Unix per diventare root bisogna ad esempio in molti Unix per diventare root bisogna 1. conoscere la password di root 2. far parte del gruppo wheel Perciò si devono richiedere più condizioni per garantire un privilegio Perciò si devono richiedere più condizioni per garantire un privilegio Separazione dei compiti: in un’azienda chi scrive gli assegni non deve firmarli Separazione dei compiti: in un’azienda chi scrive gli assegni non deve firmarli “Defense in depth”: mettere più ostacoli ad un eventuale attaccante “Defense in depth”: mettere più ostacoli ad un eventuale attaccante
Least Common Mechanism I meccanismi di accesso alle risorse dovrebbero essere condivisi il meno possibile I meccanismi di accesso alle risorse dovrebbero essere condivisi il meno possibile L’informazione può fluire attraverso i canali condivisi L’informazione può fluire attraverso i canali condivisi “Covert channels” “Covert channels” Isolamento Isolamento Virtual machines Virtual machines Sandboxes Sandboxes
Accettabilità psicologica I meccanismi di sicurezza non dovrebbero rendere più difficile l’accesso alle risorse I meccanismi di sicurezza non dovrebbero rendere più difficile l’accesso alle risorse Nascondere la complessità introdotta dai meccanismi di sicurezza: chiarezza nei messaggi errori Nascondere la complessità introdotta dai meccanismi di sicurezza: chiarezza nei messaggi errori Facilità di installazione, configurazione e uso Facilità di installazione, configurazione e uso I fattori umani sono critici in questo punto I fattori umani sono critici in questo punto
Sicurezza nei sistemi operativi Strumenti di protezione hardware Strumenti di protezione hardware Controllo di accesso a file Controllo di accesso a file Progettazione di S.O. fidati Progettazione di S.O. fidati Esempi di implementazione Esempi di implementazione
Sistema operativo La sicurezza in un sistema operativo è essenziale in quanto il software applicativo agisce (quasi) esclusivamente “sul” sistema operativo La sicurezza in un sistema operativo è essenziale in quanto il software applicativo agisce (quasi) esclusivamente “sul” sistema operativo Ogni falla del sistema operativo è quindi estremamente grave e può portare a danni molto maggiori di falle nei programmi applicativi Ogni falla del sistema operativo è quindi estremamente grave e può portare a danni molto maggiori di falle nei programmi applicativi
Protezione degli oggetti I maggiori problemi di sicurezza nei sistemi operativi sono dati (oltre che dalla rete) dalla multiprogrammazione I maggiori problemi di sicurezza nei sistemi operativi sono dati (oltre che dalla rete) dalla multiprogrammazione Gli oggetti che devono essere protetti sono Gli oggetti che devono essere protetti sono memoria memoria dispositivi condivisibili, come i dischi o le stampanti dispositivi condivisibili, come i dischi o le stampanti programmi e procedure condivisi programmi e procedure condivisi rete rete dati dati
Separazione L’idea di base della sicurezza è tenere separati gli oggetti di ogni utente L’idea di base della sicurezza è tenere separati gli oggetti di ogni utente separazione fisica separazione fisica separazione temporale separazione temporale separazione logica separazione logica separazione crittografica separazione crittografica Questo ordine è crescente in complessità e per i primi tre decrescente in sicurezza Questo ordine è crescente in complessità e per i primi tre decrescente in sicurezza
Condivisione Non è possibile separare solamente Non è possibile separare solamente Gli utenti devono poter condividere alcune risorse Gli utenti devono poter condividere alcune risorse Il sistema operativo può a tal scopo Il sistema operativo può a tal scopo Non proteggere le risorse Non proteggere le risorse Isolare i processi Isolare i processi Gestire oggetti pubblici e privati Gestire oggetti pubblici e privati Gestire le capabilities Gestire le capabilities Limitare l’uso degli oggetti Limitare l’uso degli oggetti
Protezione della memoria Sistemi “fence”: ogni processo ha una zona di memoria definita dal valore del registro base B e del registro limite L Sistemi “fence”: ogni processo ha una zona di memoria definita dal valore del registro base B e del registro limite L In tal modo il processo può accedere solo alle locazioni comprese tra B e B+L In tal modo il processo può accedere solo alle locazioni comprese tra B e B+L Ad ogni cambio di contesto B e L devono essere caricati con i valori relativi al processo corrente Ad ogni cambio di contesto B e L devono essere caricati con i valori relativi al processo corrente Si può anche separare zona codice e zona dati Si può anche separare zona codice e zona dati
Protezione della memoria Architettura tagged: ogni locazione di memoria (o gruppi di locazione) ha uno o più bit di protezione che indicano i diritti di accesso Architettura tagged: ogni locazione di memoria (o gruppi di locazione) ha uno o più bit di protezione che indicano i diritti di accesso Segmentazione: la memoria è gestita a segmenti Segmentazione: la memoria è gestita a segmenti Ogni segmento ha un indirizzo iniziale e una lunghezza e viene assegnato ad un processo Ogni segmento ha un indirizzo iniziale e una lunghezza e viene assegnato ad un processo
Protezione della memoria Il S.O. mantiene una tabella dei segmenti Il S.O. mantiene una tabella dei segmenti Gli indirizzi logici che un programma può usare sono nella forma Gli indirizzi logici che un programma può usare sono nella forma L’indirizzo logico viene convertito in indirizzo fisico aggiungendo all’offset l’indirizzo base del segmento L’indirizzo logico viene convertito in indirizzo fisico aggiungendo all’offset l’indirizzo base del segmento Ogni accesso alla memoria è filtrato (hardware e S.O.) Ogni accesso alla memoria è filtrato (hardware e S.O.)
Protezione della memoria Ogni segmento può avere una certa classe di protezione (sola lettura, sola esecuzione,...) Ogni segmento può avere una certa classe di protezione (sola lettura, sola esecuzione,...) Paginazione: la memoria è suddivisa in pagine fisiche della stessa grandezza Paginazione: la memoria è suddivisa in pagine fisiche della stessa grandezza Lo spazio accessibile ad un programma è suddiviso a sua volta in pagine logiche Lo spazio accessibile ad un programma è suddiviso a sua volta in pagine logiche Ogni pagina logica corrisponde ad una pagina fisica (se non c’è la memoria virtuale) Ogni pagina logica corrisponde ad una pagina fisica (se non c’è la memoria virtuale)
Protezione della memoria Il S.O. mantiene una tabella di corrispondenza tra pagine logiche e pagine fisiche Il S.O. mantiene una tabella di corrispondenza tra pagine logiche e pagine fisiche Un indirizzo logico è una coppia e viene tradotto in un indirizzo fisico Un indirizzo logico è una coppia e viene tradotto in un indirizzo fisico Non è semplice associare i diritti sulle pagine Non è semplice associare i diritti sulle pagine E’ possibile però combinare paginazione e segmentazione E’ possibile però combinare paginazione e segmentazione
Controllo di accesso ad oggetti generali Scopi della protezione Scopi della protezione controllare ogni accesso: si può revocare un diritto mentre l’utente ha già fatto un accesso controllare ogni accesso: si può revocare un diritto mentre l’utente ha già fatto un accesso garantire il principio del minimo privilegio garantire il principio del minimo privilegio verificare gli usi accettabili di un oggetto verificare gli usi accettabili di un oggetto
Directory Creare una sorta di directory per oggetti generali per ogni utente del sistema Creare una sorta di directory per oggetti generali per ogni utente del sistema Nella directory dell’utente s si indica per ogni oggetto o quali operazioni s può fare su o Nella directory dell’utente s si indica per ogni oggetto o quali operazioni s può fare su o Problemi Problemi liste molto grandi se ci sonooggetti condivisi da tutti liste molto grandi se ci sonooggetti condivisi da tutti revoche di diritti a cascata revoche di diritti a cascata pseudonimi pseudonimi
Liste di controllo degli accessi Ogni oggetto ha una lista di controllo (ACL) che indica per ogni (o per qualche) utente quali diritti possiede su tale oggetto Ogni oggetto ha una lista di controllo (ACL) che indica per ogni (o per qualche) utente quali diritti possiede su tale oggetto E’ possibile indicare i diritti di default (che sono validi per tutti gli utenti non specificati direttamenti) E’ possibile indicare i diritti di default (che sono validi per tutti gli utenti non specificati direttamenti)
Forme elementari di protezione Tutti/nessuno: differenza solo tra file pubblici e file privati Tutti/nessuno: differenza solo tra file pubblici e file privati Permesso al singolo: accesso mediante password (o altri token) Permesso al singolo: accesso mediante password (o altri token) Protezione orientata alle procedure: non si possono eseguire accessi arbitrari agli oggetti, ma vi si può accedere solo mediante procedure “esposte” (simile alla OOP) Protezione orientata alle procedure: non si possono eseguire accessi arbitrari agli oggetti, ma vi si può accedere solo mediante procedure “esposte” (simile alla OOP)
Protezione in UNIX I file e le directory hanno 9 bit che indicano i diritti r(ead), w(rite), (e)x(ecute) per I file e le directory hanno 9 bit che indicano i diritti r(ead), w(rite), (e)x(ecute) per il possessore del file il possessore del file gli utenti del gruppo associato al file gli utenti del gruppo associato al file tutti gli altri utenti tutti gli altri utenti I diritti sono concessi dal possessore (o dal superuser) con chmod I diritti sono concessi dal possessore (o dal superuser) con chmod E’ possibile cambiare proprietario/gruppo del file con chown e chgrp E’ possibile cambiare proprietario/gruppo del file con chown e chgrp
Protezione in Unix I diritti per le directory vanno intesi I diritti per le directory vanno intesi r: si può listare il contenuto della directory r: si può listare il contenuto della directory w: si può modificare il contenuto della directory (creando, cancellando e rinominando file o directory) w: si può modificare il contenuto della directory (creando, cancellando e rinominando file o directory) x: si può entrare nella directory x: si può entrare nella directory E’ possibile proteggere anche i dispositivi di I/O E’ possibile proteggere anche i dispositivi di I/O
Limiti del sistema di protezione Il limite principale del modello di protezione in Unix è che non si riesce ad assegnare più di tre modi diversi di accesso Il limite principale del modello di protezione in Unix è che non si riesce ad assegnare più di tre modi diversi di accesso Anna non può stabilire che Anna non può stabilire che lei può fare tutto sul file X lei può fare tutto sul file X Barbara può solo leggere ed eseguirlo Barbara può solo leggere ed eseguirlo Carla lo può solo eseguire Carla lo può solo eseguire gli altri non possono accedervi gli altri non possono accedervi
SETUID In Unix è possibile che il processo di un utente nell’eseguire un determinato file assuma momentaneamente l’identità (e quindi i diritti) del proprietario In Unix è possibile che il processo di un utente nell’eseguire un determinato file assuma momentaneamente l’identità (e quindi i diritti) del proprietario Si distingue utente e gruppo di login rispetto a utente e gruppo attuale Si distingue utente e gruppo di login rispetto a utente e gruppo attuale Tale possibilità è data attraverso il comando setuid Tale possibilità è data attraverso il comando setuid
ACL In molti sistemi operativi il sistema operativo affianca alla normale gestione degli accessi in differenziata per il possessore e per il gruppo associato al file, anche diritti ad hoc per singoli utenti o gruppi In molti sistemi operativi il sistema operativo affianca alla normale gestione degli accessi in differenziata per il possessore e per il gruppo associato al file, anche diritti ad hoc per singoli utenti o gruppi Possono essere anche presenti ulteriori tipi di diritti, oltre ai semplici r,w,x Possono essere anche presenti ulteriori tipi di diritti, oltre ai semplici r,w,x
Capabilities Una forma alternativa di gestire gli accessi è quella della capabilities Una forma alternativa di gestire gli accessi è quella della capabilities Ogni utente può ricevere dei “ticket” che gli permettono di svolgere certe operazioni su un determinato oggetto Ogni utente può ricevere dei “ticket” che gli permettono di svolgere certe operazioni su un determinato oggetto Il ticket deve essere non falsificabile Il ticket deve essere non falsificabile E’ possibile, avendone il diritto, trasferire e propagare una capability ad altri utenti E’ possibile, avendone il diritto, trasferire e propagare una capability ad altri utenti
Capabilities Le capability devono essere memorizzati in zone di memoria inaccessibili ai processi utente e gestiti solo dal S.O. Le capability devono essere memorizzati in zone di memoria inaccessibili ai processi utente e gestiti solo dal S.O. Una capability può essere revocato Una capability può essere revocato dopo la revoca il diritto non può essere più esercitato dal possessore del ticket dopo la revoca il diritto non può essere più esercitato dal possessore del ticket
Sistemi operativi fidati Autenticazione degli utenti Autenticazione degli utenti Protezione della memoria Protezione della memoria Controllo di accesso a file e dispositivi di I/O Controllo di accesso a file e dispositivi di I/O Allocazione e controllo di accesso ad oggetti Allocazione e controllo di accesso ad oggetti Condivisione Condivisione Equità di servizio Equità di servizio Comunicazione e sincronizzazione interprocesso Comunicazione e sincronizzazione interprocesso Protezione dei dati del S.O. Protezione dei dati del S.O.
Caratteristiche Autenticazione e identificazione degli utenti Autenticazione e identificazione degli utenti Controllo obbligatorio e discrezionale Controllo obbligatorio e discrezionale Protezione sul riutilizzo degli oggetti: attenzione quando si riutilizza una risorsa, potrebbe contenere dati di precedenti esecuzioni Protezione sul riutilizzo degli oggetti: attenzione quando si riutilizza una risorsa, potrebbe contenere dati di precedenti esecuzioni Completa mediazione Completa mediazione Percorso fidato: per evitare spoofing Percorso fidato: per evitare spoofing
Caratteristiche Accountability e Audit Accountability e Audit non è possibile loggare ogni istruzione non è possibile loggare ogni istruzione problema dell’ago nel pagliaio nel cercare tracce di eventuali attacchi problema dell’ago nel pagliaio nel cercare tracce di eventuali attacchi una soluzione è la riduzione del log una soluzione è la riduzione del log Strumenti di scoperta delle intrusioni Strumenti di scoperta delle intrusioni si usano tecniche statistiche per rilevare possibili intrusioni attraverso la presenza di comportamenti anomali si usano tecniche statistiche per rilevare possibili intrusioni attraverso la presenza di comportamenti anomali
Implementazioni Esistono tre grandi categorie di S.O. fidati Esistono tre grandi categorie di S.O. fidati i S.O. kernelizzati (kernelized) i S.O. kernelizzati (kernelized) minimo privilegio e economia di meccanismo minimo privilegio e economia di meccanismo i S.O. isolati i S.O. isolati estensione del minimo comun meccanismo estensione del minimo comun meccanismo i S.O. a struttura ad anello i S.O. a struttura ad anello disegno aperto e mediazione completa disegno aperto e mediazione completa
Kernelized Design Il kernel (nucleo) è la parte del S.O. che esegue le funzioni al livello più basso Il kernel (nucleo) è la parte del S.O. che esegue le funzioni al livello più basso Si usa un security kernel che si occupa di garantire i meccanismi di sicurezza dell’intero sistema Si usa un security kernel che si occupa di garantire i meccanismi di sicurezza dell’intero sistema Tutti gli accessi ad oggetti protetti devono passare attraverso il security kernel Tutti gli accessi ad oggetti protetti devono passare attraverso il security kernel E’ più semplice tracciare le operazioni, modificare e verificare formalmente la correttezza del security kernel E’ più semplice tracciare le operazioni, modificare e verificare formalmente la correttezza del security kernel
Monitor Un primo modo per avere un S.O. kernelizzato è usare i reference monitor Un primo modo per avere un S.O. kernelizzato è usare i reference monitor Controlla tutti gli accessi ad un oggetto Controlla tutti gli accessi ad un oggetto Deve essere Deve essere non manomettibile non manomettibile sempre invocato sempre invocato piccolo, per essere meglio analizzato e testato piccolo, per essere meglio analizzato e testato
Trusted Computing Base Porzione del S.O. che rinforza le politiche di sicurezza del S.O. Porzione del S.O. che rinforza le politiche di sicurezza del S.O. Differenza tra software TCB e non TCB Differenza tra software TCB e non TCB In TCB In TCB attivazione processi attivazione processi esecuzione di processi in domini diversi esecuzione di processi in domini diversi protezione memoria protezione memoria operazioni di I/O operazioni di I/O
Isolamento Il miglior modo per costruire S.O. basati sull’isolamento è la virtualizzazione Il miglior modo per costruire S.O. basati sull’isolamento è la virtualizzazione Si basa sull’emulazione, attraverso delle macchine virtuali, delle risorse di un computer Si basa sull’emulazione, attraverso delle macchine virtuali, delle risorse di un computer Ha bisogno di aiuti anche hardware Ha bisogno di aiuti anche hardware E’ un’estensione del concetto di memoria virtuale E’ un’estensione del concetto di memoria virtuale
Design a livelli Costruire un S.O. a vari livelli Costruire un S.O. a vari livelli I livelli più interni sono quelli più fidati, sono delegati a svolgere le operazioni più delicate I livelli più interni sono quelli più fidati, sono delegati a svolgere le operazioni più delicate La struttura a livelli garantisce l’incapsulamento, nascondendo e proteggendo i dettagli La struttura a livelli garantisce l’incapsulamento, nascondendo e proteggendo i dettagli Inoltre si limitano i danni Inoltre si limitano i danni
Assurance Verificare che il S.O. rispetta le politiche desiderate controllando il modello, la progettazione e l’implementazione Verificare che il S.O. rispetta le politiche desiderate controllando il modello, la progettazione e l’implementazione
Vulnerabilità frequenti Gestione dell’I/O: difficile da controllare, in alcuni casi si scavalca il S.O. Gestione dell’I/O: difficile da controllare, in alcuni casi si scavalca il S.O. Ambiguità nelle politiche di accesso: conciliare isolamento e condivisione Ambiguità nelle politiche di accesso: conciliare isolamento e condivisione Mediazione incompleta Mediazione incompleta Generalità: utilizzo di pacchetti di terze parti che devono operare a livello di S.O. Generalità: utilizzo di pacchetti di terze parti che devono operare a livello di S.O.
Metodi di accertamento Testing Testing “Penetration testing” “Penetration testing” Verifica formale Verifica formale Validazione Validazione
Valutazione Orange Book USA Orange Book USA ITSEC Europa ITSEC Europa Combined Federal Criteria USA Combined Federal Criteria USA