Développement d'applications sécurisées [Partie 1]

Preview:

Citation preview

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

Recommended