Support de cours
Filière: Mastère professionnel Audit et Sécurité Informatique
Niveau: 2
Etablissement: Faculté des Sciences Economiques et de Gestion de Sfax (FSEGS)
Université de Sfax
2. Plan
Introduction `a la s´ecurit´e informatique
S´ecurit´e de bas niveau : langage C et Buffer Overflow
D´efenses contre les attaques de bas niveau
Conception et impl´ementation d’application s´ecuris´ee
Analyse statique de code
3. Introduction
Qu’est ce que la s´ecurit´e informatique ?
La s´ecurit´e informatique, qu’on appelle aujourd’hui
cybers´ecurit´e, est un attribut d’un syst`eme informatique.
Attribut justesse :
Dans des situations pr´evisibles, une application se comporte
conform´ement `a la sp´ecification.
Exemple de site web bancaire : si un client demande un
transfert 100$ dans compte `a un autre, alors si le montant
existe, le transfert est effectivement effectu´e.
Attribut s´ecurit´e :
Dans des situations vari´ees, une application ne doit pas
pr´esenter des comportements ind´esirables .
Alors que la justesse concerne ce que l’application doit faire,
la s´ecurit´e concerne ce qu’elle ne doit pas faire ; mˆeme
lorsqu’un utilisateur malveillant essaie de contourner les
mesures proactives ´etablit par les d´eveloppeurs.
4. Introduction
Les types de comportements ind´esirables
Un comportement ind´esirable est la violation d’un ou de
plusieurs propri´et´es de s´ecurit´e.
Violation de confidentialit´e
Vols d’information confidentielles : plans de conception des
produits, code source, num´ero carte de cr´edit ...
Violation d’int´egrit´e
Modification des fonctionnalit´es : installation de logiciels
(spyware, client botnet)
Modification/Suppression/Cr´eation de fichiers : comptes, logs,
plans, ...
Violation de disponibilit´e
Indisponibilit´e du service achat, d’acc`es au compte bancaire
6. Introduction
Qu’est ce que le d´eveloppement d’applications s´ecuris´ees ?
Le d´eveloppement d’applications s´ecuris´ees (s´ecurit´e des
logicielles) est une branche la s´ecurit´e informatique consacr´ee
`a la conception et l’impl´ementation s´ecuris´ees des
applications.
La s´ecurit´e des logicielles se distingue par l’accent mis sur la
s´ecurisation du code, ce qui la rend une approche de type
boˆıte blanche
Les approches de type boˆıte noire ignorent les d´etails internes
du logiciel.
S´ecurit´e du syst`eme d’exploitation, Antivirus, Pare-feu.
7. Introduction
Pourquoi est-il important de s´ecuriser le code ?
Les d´efauts logiciels sont la cause principale des probl`emes de
s´ecurit´e, et la s´ecurit´e des logicielles vise `a adresser ces
probl`emes directement.
Les autres approches de s´ecurit´e (SE, Antivirus, Pare-feu)
entourent le logiciel de d´efenses tout en ignorant le code.
Lorsque le code contient des d´efauts, ces d´efenses sont
inefficaces et un utilisateur malveillant trouve toujours un
moyen pour les contourner.
8. Introduction `a la s´ecurit´e informatique
S´ecurit´e de bas niveau : langage C et Buffer Overflow
D´efenses contre les attaques de bas niveau
Conception et impl´ementation d’application s´ecuris´ee
Analyse statique de code
9. S´ecurit´e de bas niveau
Qu’est ce qu’un Buffer Overflow ?
D´efaut logiciel qui :
Affecte, essentiellement, les programmes ´ecrits en langage C
ou C++.
Provoque le plantage du programme
A des implications significatives sur la s´ecurit´e.
Exploit´e par un utilisateur malveillant pour forcer le
programme `a effectuer des actions ind´esirables tels que :
R´ecup´eration d’information priv´ees
Corruption de donn´ees importantes
Ex´ecution d’un code sp´ecifique.
10. S´ecurit´e de bas niveau
Pourquoi ´etudier les Buffers Overflows ?
Ils sont toujours d’actualit´e.
C et C++ sont des langages populaires
Ils partagent les mˆemes caract´eristiques d’autres bugs
r´epondus
11. S´ecurit´e de bas niveau
Les connaissances essentielles
Pour comprendre les buffers overflows, il n´ecessaire de savoir :
Comment le compilateur produit un code ex´ecutable `a partir
d’un code ´ecrit en C
Comment le SE et l’architecture mat´erielle coop`erent pour
ex´ecuter un programme
La connaissance de ces d´etails permet de comprendre :
Comment les programmes utilisent la m´emoire et ainsi les
attaquer.
Comment un utilisateur malveillant peut exploiter les d´efauts
logiciels.
12. S´ecurit´e de bas niveau
Arrangements des programmes dans la m´emoire
13. S´ecurit´e de bas niveau
Arrangements des programmes dans la m´emoire (Cont.)
14. S´ecurit´e de bas niveau
Arrangements des programmes dans la m´emoire (Cont.)
15. S´ecurit´e de bas niveau
Arrangements des programmes dans la m´emoire (Cont.)
16. S´ecurit´e de bas niveau
Appel de fonction et pile : r´esum´e
Fonction appelante :
1. Empiler les param`etres dans la pile/positionner les param`etres
dans des registres
2. Empiler l’adresse de l’instruction de retour
3. Faire un saut vers l’adresse de la fonction
Fonction appel´ee :
4. Empiler l’adresse du pointeur de pile (%ebp)
5. (%ebp) ← (%esp)
6. Empiler les variables locales
Retour `a la fonction appelante :
7. R´einitialiser le pointeur de pile et le pointeur de sommet de
pile
8. Faire un saut vers l’instruction de retour