16
eveloppement d’applications s´ ecuris´ ees MP2 Audit et S´ ecurit´ e Informatique Salah Triki Ann´ ee 2015-2016

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

Embed Size (px)

Citation preview

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

Developpement d’applications securisees

MP2 Audit et Securite InformatiqueSalah Triki

Annee 2015-2016

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

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

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

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.

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

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

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

IntroductionTotal des vulnerabilites, 2006-2014

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

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.

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

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.

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

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

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

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.

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

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

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

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.

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

Securite de bas niveauArrangements des programmes dans la memoire

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

Securite de bas niveauArrangements des programmes dans la memoire (Cont.)

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

Securite de bas niveauArrangements des programmes dans la memoire (Cont.)

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

Securite de bas niveauArrangements des programmes dans la memoire (Cont.)

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

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