Il 18 giugno 2003, presso la Scuola Superiore dell'Amministrazione dell'Interno, Vincenzo Calabrò ha tenuto un seminario dal titolo: Programmazione Sicura. Questo seminario introduce ai principi, la metodologia ed alcune applicazioni pratiche relative alla Programmazione Sicura.
https://www.vincenzocalabro.it
4. www.vincenzocalabro.it
www.vincenzocalabro.it 4
4
Cosa
Cosa proteggere
proteggere?
?
Applicazioni
Applicazioni per
per il
il trattamento
trattamento di
di informazioni
informazioni
riservate
riservate
Applicazioni
Applicazioni amministrative
amministrative (
(Utilizzate
Utilizzate da
da root o
root o
Administrator)
Administrator)
Servizi
Servizi di
di rete
rete (Daemons,
(Daemons, servizi
servizi, non
, non escludendo
escludendo
CGI)
CGI)
Applicazioni
Applicazioni con
con elevazioni
elevazioni di
di privilegi
privilegi (SUID)
(SUID)
5. www.vincenzocalabro.it
www.vincenzocalabro.it 5
5
Pitfall
Pitfall comuni
comuni
• Gratuita' nell'analisi del codice da parte dello
sviluppatore stesso
• Mancanza di auditing del codice (dovuti a
costi e tempi di sviluppo)
• Fattori esterni
• Noncuranza da parte dell'amminstratore di sistema
• Noncuranza da parte degli utenti
6. www.vincenzocalabro.it
www.vincenzocalabro.it 6
6
L'ambiente
L'ambiente UNIX
UNIX
Presenta
Presenta una
una forma
forma di
di autenticazione
autenticazione basata
basata
su
su login e password.
login e password.
Utilizza
Utilizza una
una tipologia
tipologia di
di controllo
controllo DAC,
DAC,
basata
basata su
su permessi
permessi di
di lettura
lettura,
, scrittura
scrittura
esecuzione
esecuzione distinti
distinti tra
tra utente
utente,
, gruppo
gruppo,
, altro
altro.
.
Ogni
Ogni utente
utente ha un
ha un userid
userid ed un
ed un groupid
groupid
numerico
numerico.
.
Permette
Permette l'elevazione
l'elevazione dei
dei privilegi
privilegi utilizzando
utilizzando
lo
lo suid
suid bit
bit sull'eseguibile
sull'eseguibile.
.
7. www.vincenzocalabro.it
www.vincenzocalabro.it 7
7
L'ambiente
L'ambiente NT
NT
Presenta
Presenta una
una forma
forma di
di autenticazione
autenticazione basata
basata su
su
login e password.
login e password.
Utilizza
Utilizza una
una tipologia
tipologia di
di controllo
controllo MAC,
MAC,
basandosi
basandosi su
su ACL;
ACL; il
il sistema
sistema tratta
tratta le
le proprie
proprie
risorse
risorse come
come oggetti
oggetti aventi
aventi ognuno
ognuno ACL per
ACL per
l'accesso
l'accesso.
.
Un
Un utente
utente e'
e' identificato
identificato da
da un UUID (Universal
un UUID (Universal
Unique
Unique IDentifier
IDentifier) e
) e puo
puo'
' appartenere
appartenere a
a piu
piu'
' di
di un
un
gruppo
gruppo,
, anch'essi
anch'essi identificati
identificati da
da un UUID.
un UUID.
Concede
Concede l'elevazione
l'elevazione dei
dei privilegi
privilegi mediante
mediante la
la
negoziazione
negoziazione di
di token
token di
di autenticazione
autenticazione.
.
11. www.vincenzocalabro.it
www.vincenzocalabro.it 11
11
Di
Di chi mi
chi mi fido
fido?
?
In
In teoria
teoria,
, nessuno
nessuno
Obbligatoriamente
Obbligatoriamente,
, il
il sistema
sistema sottostante
sottostante
Obbligatoriamente
Obbligatoriamente,
, delle
delle restrizioni
restrizioni di
di accesso
accesso
Mai,
Mai, dell’utente
dell’utente
Mai,
Mai, di
di altri
altri programmi
programmi agganciati
agganciati
Mai, del
Mai, del mio
mio output
output
12. www.vincenzocalabro.it
www.vincenzocalabro.it 12
12
Auditing
Auditing
I
I vantaggi
vantaggi dell’Open
dell’Open Source
Source
Beta testing
Beta testing
Utilizzo
Utilizzo di
di random input generator per
random input generator per il
il test
test
Tutto
Tutto ci
ciò
ò che
che la
la vostra
vostra mente
mente ha
ha previsto
previsto non
non
è
è nella
nella mente
mente dell’attaccante
dell’attaccante e
e viceversa
viceversa
13. www.vincenzocalabro.it
www.vincenzocalabro.it 13
13
Sistemi
Sistemi di
di base
base
Controllo
Controllo dell’eseguibilit
dell’eseguibilità
à dello
dello stack:
stack:
StackGuard
StackGuard (
(gcc
gcc)
)
Chrooting
Chrooting
Sanity check
Sanity check di
di qualsiasi
qualsiasi risorsa
risorsa esterna
esterna
Capabilities o drop
Capabilities o drop dei
dei privilegi
privilegi
Block by default
Block by default
15. www.vincenzocalabro.it
www.vincenzocalabro.it 15
15
OOP
OOP
Non vi è particolare differenza
Non vi è particolare differenza
Mantenere il
Mantenere il private
private e il
e il public
public
Il
Il garbage
garbage collector
collector
Gli oggetti importati sono sicuri?
Gli oggetti importati sono sicuri?
16. www.vincenzocalabro.it
www.vincenzocalabro.it 16
16
Applets
Applets
Apertura di altre finestre
Apertura di altre finestre untrusted
untrusted
Operazioni sui file del
Operazioni sui file del client
client
Aggancio di altre
Aggancio di altre applet
applet
Utilizzo di risorse del sistemi
Utilizzo di risorse del sistemi