Sicurezza delle reti informatiche:
come, dove e perchè
F.Baiardi *, S.Suin+, C.Telmon*
*Dipartimento di Informatica,
+Centro SerRA
Università di Pisa
Fabrizio Baiardi-I punti critici -1
© Fabrizio Baiardi, 1999
Sicurezza Informatica UniPI
corso Sicurezza delle Reti -DU in
Informatica
progetto Credits
corsi specialistici
sviluppo di software per sicurezza
proxy
sicuro
firewall kit
autorità di certificazione in Java
Fabrizio Baiardi-I punti critici -2
© Fabrizio Baiardi, 1999
I temi trattati oggi
I punti critici di una rete informatica
come
individuarli
Gli strumenti per attaccare
come
violare i punti critici
Gli strumenti per difendersi dagli
attacchi
come
rafforzare il sistema
Fabrizio Baiardi-I punti critici -3
© Fabrizio Baiardi, 1999
Politiche di sicurezza
la definizione della politica di
sicurezza non può che partire da una
analisi dei rischi
l’analisi dei rischi deve individuare i
punti critici
criticità = ridotta robustezza
Fabrizio Baiardi-I punti critici -4
© Fabrizio Baiardi, 1999
Robustezza Informatica
robustezza di un componente =
capacità di non danneggiare il
sistema in cui è inserito quando
vengono violate le specifiche del
componente stesso
violazione delle specifiche =
input
diversi da quelli specificati,
risorse diverse da quelle specificate
Fabrizio Baiardi-I punti critici -5
© Fabrizio Baiardi, 1999
Robustezza Informatica
è una proprietà diversa da
correttezza, efficienza, facilità d’uso,
....
è in contrasto con efficienza e
facilità d’uso, può aumentare solo a
spese di queste due proprietà
No Free Lunch Theorem
Fabrizio Baiardi-I punti critici -6
© Fabrizio Baiardi, 1999
Robustezza Informatica
Un programma per il calcolo degli
stipendi che dato un nome
restituisce lo stipendio
- corretto se calcola lo stipendio
esatto
- efficiente se impiega poco tempo
- facile da usare se addestramento
è
breve
- robusto ????
Fabrizio Baiardi-I punti critici -7
© Fabrizio Baiardi, 1999
Robusto ....
nome sbagliato
nome non esistente
allocata meno memoria di quella
necessaria
file con nomi non esistente
file con qualifiche non esistente
disco non esistente ....
Fabrizio Baiardi-I punti critici -8
© Fabrizio Baiardi, 1999
Quanto robusto ....
è estremamente difficile prevedere
tutte
le possibili
violazioni delle specifiche
robustezza non è una proprietà 0/1
misura di robustezza = associare ad
ogni componente un valore da 0 a 1
1 è valore asintotico
Fabrizio Baiardi-I punti critici -9
© Fabrizio Baiardi, 1999
Quanto robusto
Robustezza
1
Numero dei controlli
Fabrizio Baiardi-I punti critici -10
© Fabrizio Baiardi, 1999
Quanto robusto
valore dipende dai controlli che il
componente esegue sul proprio
ambiente
robustezza tende ad 1 al tendere ad
infinito dei controlli
normalmente i controlli sono inutili,
ciò limita il numero dei controlli
possibili senza danneggiare le
Fabrizio Baiardi-I punti critici -11
prestazioni
© Fabrizio Baiardi, 1999
Robustezza
è stato provato come controlli
anche banali siano in grado di
rilevare
numerose
situazioni
anomale
quindi è bene eseguire controlli
sofisticati solo dopo quelli semplici
i controlli più significativi sono
quelli sull’uso dei dati coerenti con i
tipi dichiarati
Fabrizio Baiardi-I punti critici -12
© Fabrizio Baiardi, 1999
Robustezza
è inutile cercare di essere
impenetrabili
occorre essere costosi (tempo e
danaro ) da penetrare
Fabrizio Baiardi-I punti critici -13
© Fabrizio Baiardi, 1999
Sistema Robusto ...
la robustezza di un sistema nasce
dalla
robustezza
dei
suoi
componenti
è inutile costruire sistemi ove
componenti robusti interagiscono
con componenti poco robusti
criticità dei sistemi operativi e dei
linguaggi di programmazione per la
robustezza
Fabrizio Baiardi-I punti critici -14
© Fabrizio Baiardi, 1999
Robustezza Globale ...
Applicazioni
Sistema Operativo
Hardware
è inutile, e dannoso, costruire
applicazioni robuste su sistemi non
robusti
è inutile costruire utilizzare la
crittografia su
sistemi
in punti
cuicritici
è facile
Fabrizio
Baiardi-I
-15
© Fabrizio Baiardi, 1999
Robustezza globale ...
la situazione può essere ancora più
critica nel caso di linguaggi di
programmazione
un linguaggio poco robusto inficia
tutte le applicazioni sviluppate con
quel linguaggio
un linguaggio con operazioni sui
vettori non controllate non può
essere robusto Fabrizio Baiardi-I punti critici -16
© Fabrizio Baiardi, 1999
Robustezza globale
esistono molti attacchi a cui sono
soggette
tutte
le
applicazioni
sviluppate in C
tutti questi attacchi sono possibili
perchè il C non controlla che
le
operazioni sui dati siano coerenti con il tipo
dichiarato
le operazioni sui vettori rispettino i limiti
dichiarati per il vettore stesso
Fabrizio Baiardi-I punti critici -17
© Fabrizio Baiardi, 1999
Come valutare la robustezza
Caso di interesse :
un componente condiviso di un
sistema che definisce un insieme di
operazioni
le
operazioni possono essere invocate da
“utenti” che condividono il componente
le
operazioni sono fisse ma gli utenti possono
variare
Fabrizio Baiardi-I punti critici -18
© Fabrizio Baiardi, 1999
Valutazione: primo criterio
esiste una struttura dati che
rappresenta i diritti degli utenti sul
componente
diritto
= operazioni che utente può invocare
assenza
di informazioni deve essere
interpretata come un divieto
la struttura o è interna al
componente o è utilizzata dal
sistema operativo
Fabrizio Baiardi-I punti critici -19
© Fabrizio Baiardi, 1999
Valutazione: primo criterio
struttura dati complessiva = matrice
di protezione
soggetto = può invocare una
operazione
= utente o altro
componente
oggetto = un componente condiviso
controllo degli accessi = controllo
dei diritti dei soggetti
sugli oggetti
Fabrizio Baiardi-I punti critici -20
© Fabrizio Baiardi, 1999
Matrice di protezione
oggetti
A
B
X
Op1
Op1,
Op2
Y
Op3
Op1
C
X
Y
Op3
Op1, Op2 Op4
Z
Fabrizio Baiardi-I punti critici -21
© Fabrizio Baiardi, 1999
Matrice di protezione
i controlli sono eseguiti ogni volta
che un soggetto invoca una
operazione
riga della matrice = dominio di
protezione di un soggetto
non può esistere robustezza senza
una qualche rappresentazione di
questa struttura
domini non gerarchici
Fabrizio Baiardi-I punti critici -22
© Fabrizio Baiardi, 1999
Matrice di protezione
nel caso in cui gli oggetti siano i file
di un server ed i soggetti siano gli
utenti del server stesso sono
necessarie da 10 a 15 ore per
rappresentare correttamente la
matrice di protezione (stima NSA)
in questo caso i diritti sono
semplicemente lettura, scrittura ed
esecuzione
Fabrizio Baiardi-I punti critici -23
© Fabrizio Baiardi, 1999
Matrice di protezione
sorge il problema della
identificazione di un soggetto
password
crittografia
uso

di certificati e firma elettronica
....
Fabrizio Baiardi-I punti critici -24
© Fabrizio Baiardi, 1999
Matrice di protezione
non sempre questo criterio è applicabile perchè non tutte le
risorse sono sotto il controllo del sistema
ad esempio non è possibile garantire che nessuno stia
monitorando il traffico sulle linee fisiche
crittografia
Fabrizio Baiardi-I punti critici -25
© Fabrizio Baiardi, 1999
Domini di protezione
è fondamentale poter associare un
dominio di protezione ad ogni
applicazione
il rispetto del dominio deve essere
garantito dal sistema operativo
del/dei nodi dove essa è eseguita
questo mandatory access control si
affianca a quello dell’applicazione
stesso
Fabrizio Baiardi-I punti critici -26
© Fabrizio Baiardi, 1999
Tre politiche per la robustezza
il primo criterio evidenzia tre
politiche che sono fondamentali per
la robustezza
controlli
nell’accesso agli oggetti
controlli
di identificazione
politiche
di crittografia
per
l’identificazione dei soggetti
per
la confidenzialità dei dati
Fabrizio Baiardi-I punti critici -27
© Fabrizio Baiardi, 1999
Valutazione: secondo criterio
per rispecchiare l’avanzamento
della computazione i diritti (e quindi
la matrice) variano dinamicamente
occorre minimizzare il dominio
corrente di ogni soggetto
al diminuire del dominio aumenta la
capacità di rilevare comportamenti
anomali
Fabrizio Baiardi-I punti critici -28
© Fabrizio Baiardi, 1999
Valutazione: secondo criterio
in teoria occorre modificare la
matrice per ogni istruzione eseguita
ovviamente questo produce un
sistema robusto ma inutile
una granularità più ragionevole è
quella delle procedure o dei metodi
Fabrizio Baiardi-I punti critici -29
© Fabrizio Baiardi, 1999
Valutazione: secondo criterio
il criterio sottolinea l’importanza di
eliminare
le
funzionalità
non
necessarie
generalizzazione = la regola KISS
Keep
It
Simple
Stupid
è più semplice garantire la
robustezza di un sistema semplice
non si attacca quel che non esiste
Fabrizio Baiardi-I punti critici -30
© Fabrizio Baiardi, 1999
Valutazione: secondo criterio
separare i componenti critici dal
punto di vista della robustezza dagli
altri
possibile aumentare i controlli nei
componenti critici per la robustezza
un codice che deve essere
commentato è troppo complesso
per essere robusto
Fabrizio Baiardi-I punti critici -31
© Fabrizio Baiardi, 1999
Valutazione: terzo criterio
non deve essere possibile violare i
controlli operando ad un livello
diverso da quello considerato
ciò avviene tipicamente se è
possibile
utilizzare nella stessa
applicazione due linguaggi di
programmazione con caratteristiche
diverse
(linguaggio ad alto livello e
assembler)
Fabrizio Baiardi-I punti critici -32
© Fabrizio Baiardi, 1999
Sistema Robusto
Applicazioni
Sistema Operativo
Assembler
Firmware
Hardware
Fabrizio Baiardi-I punti critici -33
© Fabrizio Baiardi, 1999
Valutazione: quarto criterio
la robustezza aumenta se lo stesso
controllo
viene
ripetuto
in
componenti diversi
ad esempio il possesso di un diritto
viene
controllato
prima
nell’invocante e poi nell’invocato
evitare i punti di caduta catastrofica
= sandbox di Java, firewall, ...
Fabrizio Baiardi-I punti critici -34
© Fabrizio Baiardi, 1999
Come utilizzare i criteri
un uso paranoico dei criteri può
portare a sistemi robusti ma
inutilizzabili
questo non sembra comunque un
rischio a breve termine
attualmente un pizzico di paranoia
non può che essere utile e
produttivo
Fabrizio Baiardi-I punti critici -35
© Fabrizio Baiardi, 1999
Come utilizzare i criteri
individuare i componenti critici
inserire tutti i controlli che non
riducono le prestazioni di tali
componenti
spesso il controllo può essere
inserito
in
componenti
che
interagiscono con quelli ad elevata
criticità
bilanciamento
del carico
rilevazione veloce di violazioni
Fabrizio Baiardi-I punti critici -36
© Fabrizio Baiardi, 1999
Come utilizzare i criteri
stabilire la probabilità di attacco ad
ogni punto
aumentare la robustezza di un
punto in maniera proporzionale agli
attacchi
non comprare un firewall poco
robusto
Fabrizio Baiardi-I punti critici -37
© Fabrizio Baiardi,
1999
 a firewall
is a replacement of the