La recherche de vulnérabilités est généralement menée en plusieurs étapes : identifier des parties du code potentiellement dangereuses puis étudier la possibilité de les exploiter, par exemple pour corrompre la mémoire. Dans cet article, nous montrons comment des techniques d'analyse statique de code apportent une aide significative à ces étapes.
1. Détection de vulnérabilités
Détecter des vulnérabilités est un processus complexe, d'autant plus que les applications grossissent et que les vulnérabilités exploitées deviennent de plus en plus sophistiquées. Pour illustrer cette montée en complexité, il suffit de prendre pour exemple l'édition 2014 du concours Pwn2Own. Durant cette édition, tous les navigateurs web ont pu être mis en défaut. Cependant, la difficulté à trouver les vulnérabilités et la complexité des exploits obtenus sont révélatrices du niveau d'expertise nécessaire. Par exemple, la société Vupen a expliqué qu'elle a dû effectuer 60 millions de tests sur Firefox pour trouver un 0-day [1]. Il devient donc nécessaire de disposer d'outils assistant au mieux le processus de recherche de vulnérabilités. Dans cet article, nous montrons comment des techniques reposant sur l'analyse de code (source ou assembleur) peuvent être utilisées dans ce processus.
Précisons tout d'abord la...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première