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
Sicurezza nei sistemi operativi
Linee guida per la progettazione di
sistemi sicuri

Semplicità




Meno cose possono andare male ...
Un numero minore possibile di inconsistenze
Facile da capire
Restrizioni


Minimizzare gli accessi
Inibire la comunicazione
Minimo Privilegio

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 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
Fail-Safe Defaults

Per default, l’accesso di un soggetto ad un
oggetto deve essere negato


Ogni diritto deve essere concesso esplicitamente
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:


Semplice significa anche che ci sono meno cose da
controllare


nel progetto, implementazione, numero di operazioni,
interazioni con altre componenti, addirittura nella specifica
In caso di errori è più facile identificarli e correggerli
Particolare attenzione deve essere posta nelle
interfacce ad altri moduli (possono fare assunzioni
non verificate)

esempio: finger
Completa Mediazione


Controllare ogni 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
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



Si potrebbe intendere che il codice sorgente
dovrebbe essere pubblico
“Sicurezza mediante oscurità” ?
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


ad esempio in molti Unix per diventare root bisogna
1.
2.
conoscere la password di root
far parte del gruppo wheel
Perciò si devono richiedere più condizioni per
garantire un privilegio



Separazione dei compiti: in un’azienda chi scrive gli
assegni non deve firmarli
“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



L’informazione può fluire attraverso i canali
condivisi
“Covert channels”
Isolamento


Virtual machines
Sandboxes
Accettabilità psicologica

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
Facilità di installazione, configurazione e uso
I fattori umani sono critici in questo punto
Sicurezza nei sistemi operativi




Strumenti di protezione hardware
Controllo di accesso a file
Progettazione di S.O. fidati
Esempi di implementazione
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
Protezione degli oggetti


I maggiori problemi di sicurezza nei sistemi operativi
sono dati (oltre che dalla rete) dalla
multiprogrammazione
Gli oggetti che devono essere protetti sono





memoria
dispositivi condivisibili, come i dischi o le stampanti
programmi e procedure condivisi
rete
dati
Separazione

L’idea di base della sicurezza è tenere separati
gli oggetti di ogni utente





separazione fisica
separazione temporale
separazione logica
separazione crittografica
Questo ordine è crescente in complessità e per
i primi tre decrescente in sicurezza
Condivisione



Non è possibile separare solamente
Gli utenti devono poter condividere alcune
risorse
Il sistema operativo può a tal scopo





Non proteggere le risorse
Isolare i processi
Gestire oggetti pubblici e privati
Gestire le capabilities
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
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
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
Segmentazione: la memoria è gestita a
segmenti
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
Gli indirizzi logici che un programma può
usare sono nella forma <numero segmento,
offset>
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.)
Protezione della memoria




Ogni segmento può avere una certa classe di
protezione (sola lettura, sola esecuzione, ...)
Paginazione: la memoria è suddivisa in pagine
fisiche della stessa grandezza
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)
Protezione della memoria




Il S.O. mantiene una tabella di corrispondenza
tra pagine logiche e pagine fisiche
Un indirizzo logico è una coppia
<numero_pagina, offset> e viene tradotto in un
indirizzo fisico
Non è semplice associare i diritti sulle pagine
E’ possibile però combinare paginazione e
segmentazione
Controllo di accesso
ad oggetti generali

Scopi della protezione



controllare ogni accesso: si può revocare un diritto
mentre l’utente ha già fatto un accesso
garantire il principio del minimo privilegio
verificare gli usi accettabili di un oggetto
Directory



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
Problemi



liste molto grandi se ci sonooggetti condivisi da
tutti
revoche di diritti a cascata
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
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
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 in UNIX

I file e le directory hanno 9 bit che indicano i
diritti r(ead), w(rite), (e)x(ecute) per





il possessore del file
gli utenti del gruppo associato al file
tutti gli altri utenti
I diritti sono concessi dal possessore (o dal
superuser) con chmod
E’ possibile cambiare proprietario/gruppo del
file con chown e chgrp
Protezione in Unix

I diritti per le directory vanno intesi




r: si può listare il contenuto della directory
w: si può modificare il contenuto della directory
(creando, cancellando e rinominando file o
directory)
x: si può entrare nella directory
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
Anna non può stabilire che




lei può fare tutto sul file X
Barbara può solo leggere ed eseguirlo
Carla lo può solo eseguire
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
Si distingue utente e gruppo di login rispetto a
utente e gruppo attuale
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
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
Ogni utente può ricevere dei “ticket” che gli
permettono di svolgere certe operazioni su un
determinato oggetto
Il ticket deve essere non falsificabile
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.
Una capability può essere revocato

dopo la revoca il diritto non può essere più
esercitato dal possessore del ticket
Sistemi operativi fidati








Autenticazione degli utenti
Protezione della memoria
Controllo di accesso a file e dispositivi di I/O
Allocazione e controllo di accesso ad oggetti
Condivisione
Equità di servizio
Comunicazione e sincronizzazione
interprocesso
Protezione dei dati del S.O.
Caratteristiche





Autenticazione e identificazione degli utenti
Controllo obbligatorio e discrezionale
Protezione sul riutilizzo degli oggetti:
attenzione quando si riutilizza una risorsa,
potrebbe contenere dati di precedenti
esecuzioni
Completa mediazione
Percorso fidato: per evitare spoofing
Caratteristiche

Accountability e Audit




non è possibile loggare ogni istruzione
problema dell’ago nel pagliaio nel cercare tracce di
eventuali attacchi
una soluzione è la riduzione del log
Strumenti di scoperta delle intrusioni

si usano tecniche statistiche per rilevare possibili
intrusioni attraverso la presenza di comportamenti
anomali
Implementazioni

Esistono tre grandi categorie di S.O. fidati

i S.O. kernelizzati (kernelized)


i S.O. isolati


minimo privilegio e economia di meccanismo
estensione del minimo comun meccanismo
i S.O. a struttura ad anello

disegno aperto e mediazione completa
Kernelized Design




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
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
Monitor



Un primo modo per avere un S.O. kernelizzato
è usare i reference monitor
Controlla tutti gli accessi ad un oggetto
Deve essere



non manomettibile
sempre invocato
piccolo, per essere meglio analizzato e testato
Trusted Computing Base



Porzione del S.O. che rinforza le politiche di
sicurezza del S.O.
Differenza tra software TCB e non TCB
In TCB




attivazione processi
esecuzione di processi in domini diversi
protezione memoria
operazioni di I/O
Isolamento




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
Ha bisogno di aiuti anche hardware
E’ un’estensione del concetto di memoria
virtuale
Design a livelli




Costruire un S.O. a vari livelli
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
Inoltre si limitano i danni
Assurance

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.
Ambiguità nelle politiche di accesso:
conciliare isolamento e condivisione
Mediazione incompleta
Generalità: utilizzo di pacchetti di terze parti
che devono operare a livello di S.O.
Metodi di accertamento




Testing
“Penetration testing”
Verifica formale
Validazione
Valutazione



Orange Book USA
ITSEC Europa
Combined Federal Criteria USA