Developpement d’applications securisees
MP2 Audit et Securite InformatiqueSalah Triki
Annee 2015-2016
Plan
Introduction a la securite informatique
Securite de bas niveau : langage C et Buffer Overflow
Defenses contre les attaques de bas niveau
Conception et implementation d’application securisee
Analyse statique de code
IntroductionQu’est ce que la securite informatique ?
I La securite informatique, qu’on appelle aujourd’huicybersecurite, est un attribut d’un systeme informatique.
I Attribut justesse :I Dans des situations previsibles, une application se comporte
conformement a la specification.I Exemple de site web bancaire : si un client demande un
transfert 100$ dans compte a un autre, alors si le montantexiste, le transfert est effectivement effectue.
I Attribut securite :I Dans des situations variees, une application ne doit pas
presenter des comportements indesirables .
I Alors que la justesse concerne ce que l’application doit faire,la securite concerne ce qu’elle ne doit pas faire ; memelorsqu’un utilisateur malveillant essaie de contourner lesmesures proactives etablit par les developpeurs.
IntroductionLes types de comportements indesirables
I Un comportement indesirable est la violation d’un ou deplusieurs proprietes de securite.
I Violation de confidentialiteI Vols d’information confidentielles : plans de conception des
produits, code source, numero carte de credit ...
I Violation d’integriteI Modification des fonctionnalites : installation de logiciels
(spyware, client botnet)
I Modification/Suppression/Creation de fichiers : comptes, logs,plans, ...
I Violation de disponibiliteI Indisponibilite du service achat, d’acces au compte bancaire
IntroductionTotal des vulnerabilites, 2006-2014
IntroductionQu’est ce que le developpement d’applications securisees ?
I Le developpement d’applications securisees (securite deslogicielles) est une branche la securite informatique consacreea la conception et l’implementation securisees desapplications.
I La securite des logicielles se distingue par l’accent mis sur lasecurisation du code, ce qui la rend une approche de typeboıte blanche
I Les approches de type boıte noire ignorent les details internesdu logiciel.
I Securite du systeme d’exploitation, Antivirus, Pare-feu.
IntroductionPourquoi est-il important de securiser le code ?
I Les defauts logiciels sont la cause principale des problemes desecurite, et la securite des logicielles vise a adresser cesproblemes directement.
I Les autres approches de securite (SE, Antivirus, Pare-feu)entourent le logiciel de defenses tout en ignorant le code.
I Lorsque le code contient des defauts, ces defenses sontinefficaces et un utilisateur malveillant trouve toujours unmoyen pour les contourner.
Introduction a la securite informatique
Securite de bas niveau : langage C et Buffer Overflow
Defenses contre les attaques de bas niveau
Conception et implementation d’application securisee
Analyse statique de code
Securite de bas niveauQu’est ce qu’un Buffer Overflow ?
I Defaut logiciel qui :I Affecte, essentiellement, les programmes ecrits en langage C
ou C++.
I Provoque le plantage du programme
I A des implications significatives sur la securite.
I Exploite par un utilisateur malveillant pour forcer leprogramme a effectuer des actions indesirables tels que :
I Recuperation d’information privees
I Corruption de donnees importantes
I Execution d’un code specifique.
Securite de bas niveauPourquoi etudier les Buffers Overflows ?
I Ils sont toujours d’actualite.
I C et C++ sont des langages populaires
I Ils partagent les memes caracteristiques d’autres bugsrepondus
Securite de bas niveauLes connaissances essentielles
I Pour comprendre les buffers overflows, il necessaire de savoir :I Comment le compilateur produit un code executable a partir
d’un code ecrit en C
I Comment le SE et l’architecture materielle cooperent pourexecuter un programme
I La connaissance de ces details permet de comprendre :I Comment les programmes utilisent la memoire et ainsi les
attaquer.I Comment un utilisateur malveillant peut exploiter les defauts
logiciels.
Securite de bas niveauArrangements des programmes dans la memoire
Securite de bas niveauArrangements des programmes dans la memoire (Cont.)
Securite de bas niveauArrangements des programmes dans la memoire (Cont.)
Securite de bas niveauArrangements des programmes dans la memoire (Cont.)
Securite de bas niveauAppel de fonction et pile : resume
Fonction appelante :
1. Empiler les parametres dans la pile/positionner les parametresdans des registres
2. Empiler l’adresse de l’instruction de retour
3. Faire un saut vers l’adresse de la fonction
Fonction appelee :
4. Empiler l’adresse du pointeur de pile (%ebp)
5. (%ebp) ← (%esp)
6. Empiler les variables locales
Retour a la fonction appelante :
7. Reinitialiser le pointeur de pile et le pointeur de sommet depile
8. Faire un saut vers l’instruction de retour