Professional Documents
Culture Documents
Plan de la prsentation
Introduction aux vulnrabilits des programmes informatiques Description du problme des BO Exploitation des BO Solutions et prvention des BO
Introduction
lments danalyse des risques Dfinition de ce quest une vulnrabilit informatique Typologie et caractristiques des vulnrabilits
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Introduction
La scurit vise limiter des risques un niveau acceptable Un risque est fonction dune menace, de vulnrabilits et dventuelles contre-mesures Le risque va influencer sur les paramtres de:
Confidentialit Intgrit Disponibilit de linformation
Fautes de conception
Systme vulnrable avant mme sa ralisation technique Exemples de vulnrabilits inhrentes des algorithmes de chiffrement
Involontaires : algorithmes faibles par conception Volontaires : introduction de portes drobes dans lalgorithme
Lorsque faille rendue publique, lditeur du logiciel affect sort un patch (correctif) Les pirates essaient souvent de garder les failles prives : 0day exploit.
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Introduction
Buffer = zone mmoire rserve par un programme pour y stocker/lire/crire des donnes Les buffers overflows (BO) sont une grande famille de failles dimplmentation La plupart des failles publies depuis des annes sont des BO ou assimils Premier BO connu : 1989, le Morris Worm utilise un BO dans finger sous Unix Redcouvert en 1995 par Thomas Lopatic (DE) avec dmonstration (exploit) sur HP-UX
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Petite anecdote
La premire exploitation connue grande chelle dun BO a t le Morris Worm Ver (virus) programm par le fils dun directeur de la recherche de la NSA
Oprations mmoires de lecture/criture/copie Non (ou mauvaise) vrification des oprations mmoires
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Exemple de BO (1)
Programme en langage C :
char *nom; char *buf; buf = (char *) malloc(1024); Rserve 1024 octets de mmoire pour buf Demande lutilisateur de rentrer du texte au clavier, met ce texte dans buf. Cre une variable buf
scanf(%s, buf);
Exemple de BO (2)
Constats sur le programme prcdent
On alloue 1024 octets On demande lutilisateur de rentrer du texte et on le met dans les 1024 octets rservs prcdemment
La fonction utilise scanf ne vrifie pas si la taille du texte est bien infrieure 1024 octets Dans le cas contraire, scanf continuera copier le texte tap en mmoire aprs nos 1024 octets !
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Exemple de BO (3)
Vue mmoire des oprations
Mmoire de lordinateur
montrer un BO
Opration scanf()
Consquences dun BO
Des informations en mmoire sont potentiellement crases Au mieux, crash du programme
Arrive la fin de la mmoire rserve au programme crasement de zones vitales pour le programme
Exploitation des BO
Lexploitation revient craser des zones mmoires sensibles
Adresses de retour ou pointeurs sur fonctions Variables mmoires importantes (nom dutilisateur, ) Variables internes du systme ou programme
Les buffers overflows crasent donc des parties de la pile ou du tas, selon le code du programme
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Chaque fonction a, au moment de son excution, son propre morceau de pile (stack frame)
A la fin de la fonction, destruction de sa pile
Les compilateurs sen servent pour mettre les variables dynamiques des fonctions Sur la pile sont aussi stockes des informations systmes (cf. plus loin)
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Adresse de retour = adresse juste aprs le CALL dans la fonction qui appelle
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Techniques dexploitation
Buffers dans la stack
Modification de variables importantes sur la stack Modification de ladresse de retour vers autre partie du programme Modification de lAR vers un buffer en stack Modification de lAR vers un buffer hors stack Modification de lAR vers fonction de la LIBC
Le shellcode
Code machine (binaire), souvent dvelopp en assembleur Va tre excut par le CPU la suite de loverflow Trs souvent, ce code excute un shell Unix Afin de palier au problme de la prdiction des adresses, de nombreuses instructions NOP (0x90) mises au dbut de ce buffer
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Mthodes ralistes:
Auditer le code de manire proactive Rendre lexploitation extrmement difficile
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
criture scurise
La complexit des dveloppements est dj assez consquente Les programmeurs ne disposent souvent pas des comptences scuritaires Lcriture scurise relve dun vritable art
Mme les produits de scurit sont affects, ex: ISS RealSecure, rcentes failles Checkpoint FW-1
Les possibilits dintroduire involontairement des failles sont nombreuses La smantique mme des langages est parfois trompeuse
Exemples : strncpy(dst, src, nbr), snprintf()
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Nouveaux logiciels
De nombreux logiciels intgrent maintenant ds leur origine la programmation scurise Mais les erreurs se rptent ex: OpenSSH chall < 3.4
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Sardonix
Projet pour laudit du code open source Financ par le DARPA amricain Principalement orient Linux (driv du projet LSAP) Mcanisme de classement des auditeurs chec complet
Inspection automatise
Logiciels danalyse du code source Ex: RATS, LINT Souvent peu efficaces, seules failles les plus videntes dcouvertes Les outils existants sont peu volus Dautres mthodes automatises plus intressantes Problme de laudit de logiciels propritaires
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Constats
Les mthodes prcdentes sont
Coteuses Difficiles Peu efficaces
Les failles resteront, il faut essayer de limiter leur impact Nous allons maintenant tudier les mthodes permettant de limiter limpact des failles
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
Le processus pre est trs simple, do risques doverflows limits Exemple: sparation des privilges dans OpenSSH, overflows rcents
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/
En pratique
Prises indpendamment, les solutions prcdentes sont perfectibles On utilise donc une combinaison de ces techniques Des implmentations de ces techniques sont fournies sous forme de patchs pour GCC ou de patchs pour les kernels
StackGuard
http://www.immunix.org/stackguard.html Modification de GCC pour introduire des canaris
Conclusion
Les buffers overflows, un problme rel Des techniques dattaque dune sophistication extrme Auxquelles rpondent des techniques de protection complexes ! Pour couvrir un rel besoin, en attendant des programmes et systmes sans bugs
Les buffer overflows Nicolas Dube Secway http://www.secway.fr/