• Aucun résultat trouvé

3.5 Expérimentations

3.5.4 Synthèse

La synthèse de toutes nos expériences est résumée dans le tableau 3.8. Ces expériences montrent que :

Wasapy est un scanner efficace, surtout dans des conditions particulières pour lesquelles il a été conçu : 1) il est plus efficace que les autres scanners en source libre testés lorsque les notifi-cations d’erreur sont désactivés, 2) il est plus efficace que les autres scanners pour découvrir et exploiter les vulnérabilités qui sont incluses dans les pages qui ne sont pas directement acces-sibles (pages qui nécessitent l’exploitation réussie d’une vulnérabilité pour être consultées). En effet, notre scanner est le seul qui est capable d’exploiter la vulnérabilité et fournir les requêtes exactes pour les injections correspondantes.

Wasapy est globalement aussi efficace que les autres scanners de vulnérabilités testés sur les applications web vulnérables non modifiées.

– Notre algorithme de “clustering” peut être facilement adapté à différents types de vulnérabi-lités. En effet, même s’il a été conçu pour les injections SQL, les résultats des expériences montrent que Wasapy détecte également les vulnérabilités XPATH, OS commanding et File Include et qu’il est au moins aussi efficace que les autres scanners de vulnérabilités.

74 Détection de vulnérabilités par classification automatique des pages html Vulnérabilité Skipfish W3af W apiti W asap y AppScan W ebInspect Acunetix Type CVE Emplacement

NR edit_post.php 7 7 7 3 7 7 7 NR edit_post_script.php 7 7 7 7 7 7 7 SQLi NR index.php 7 7 7 3 7 7 7 NR message.php 7 7 7 3 7 7 7 NR reader.php 3 3 7 3 7 7 7 Faux positif 0 0 0 0 0 0 0

TABLE3.6 – Résultats de détection de vulnérabilités pour l’applicationRiotpix

3.6 Conclusion

Dans ce chapitre, nous avons présenté un scanner de vulnérabilité qui implémente un nouvel algorithme pour identifier la présence de certains types de vulnérabilités et fournir les requêtes per-mettant d’exploiter ces vulnérabilités suivant une approche boîte noire. La génération automatique des requêtes est basée sur des grammaires. L’identification des requêtes conduisant à une exploitation réus-sie des vulnérabilités est basée sur la classification automatique des réponses du serveur basée sur un algorithme de “clustering”.

Nous avons utilisé un grand nombre d’applications avec et sans injection volontaire des vulné-rabilités afin de valider notre approche et d’analyser son efficacité par rapport aux trois outils existants disponibles en source libre. Les résultats expérimentaux sont prometteurs. En particulier, nous avons montré que notre algorithme peut contribuer à améliorer la capacité de détection de certains outils exis-tants et à automatiser le processus de détection de vulnérabilité (en permettant par exemple la détection réussie de vulnérabilités dans les pages qui ne sont pas directement accessibles, mais qui sont unique-ment accessibles après le succès de l’exploitation d’une première vulnérabilité).

Nous nous sommes principalement intéressés, dans ce chapitre, aux injections SQL. Néanmoins, nous avons également montré que l’algorithme proposé peut aussi être appliqué avec succès à d’autres types de vulnérabilités. L’algorithme proposé a été mis en œuvre dans un nouvel outilWasapy. Cet algorithme peut aussi être intégré dans les outils en source libre que nous avons étudiés tel queW3afet

Skipfishpour profiter des autres fonctionnalités puissantes offertes par ces outils.

Notre algorithme permet de réaliser des attaques élémentaires et ne gère pas les dépendances entre les URLs et les attaques, et ceci est dû au fait qu’il utilise seulement une session pour naviguer sur le site cible. Autrement dit, ce modèle ne permet pas de déterminer s’il existe une relation d’ordre

3.6 Conclusion 75 Vulnérabilité Skipfish W3af W apiti W asap y AppScan W ebInspect Acunetix Type CVE Emplacement

2008-7091 login.php 7 7 7 3 7 3 7 2008-7091 story.php 3 7 3 3 3 3 3 NR userrss.php 7 7 7 7 3 3 3 2008-7091 out.php 7 7 7 7 3 7 3 2008-7091 trackback.php 7 7 7 7 7 7 7 SQLi 2008-7091 cloud.php 7 7 7 7 7 7 7 2008-7091 cvote.php 7 7 7 7 7 7 7 2008-7091 recommend.php 7 7 7 7 7 7 7 2008-7091 submit.php 7 7 7 7 7 7 7 2008-7091 vote.php 7 7 7 7 7 7 7 2008-7091 edit.php 7 7 7 7 7 7 7 False positive 0 0 0 2 1 1 0

TABLE3.7 – Résultats de détection de vulnérabilités pour l’applicationPligg

entre les URLs car nous n’avons pas assez de traces.

Par conséquent, nous avons pensé à améliorer cette approche et proposer une solution pour tenir compte de ces performances. Cette solution consiste principalement à générer le graphe de navigation du site cible et à élaborer des scénarios d’attaques possibles. Nous détaillons cette approche dans le chapitre suivant.

76 Détection de vulnérabilités par classification automatique des pages html Skipfish W3af W apiti W asap y True Positive 6 6 5 12 False Positive 1 0 0 3 False Negative 20 20 21 14

4

Dépendance entre vulnérabilités et génération de

scénarios d’attaque

Introduction

La contribution décrite dans ce chapitre complète celle du chapitre précédent pour la généra-tion du trafic malveillant pour l’analyse et l’évaluagénéra-tion d’applicagénéra-tions Web. L’objectif est de générer automatiquement des scénarios d’attaques prenant en compte explicitement les dépendances entre vul-nérabilités. Ces scénarios sont élaborés à partir d’un graphe d’attaques qui est construit dynamiquement en identifiant de façon itérative les différentes possibilités pour naviguer au travers du site Web et des

78 Dépendance entre vulnérabilités et génération de scénarios d’attaque

vulnérabilités susceptibles d’être exploitées par un attaquant via les différents points d’entrée identifiés au cours de l’exploration du site. Pour ce faire, nous commençons par un parcours combinatoire du site qui a pour objectif d’identifier toutes les traces de navigation possibles à travers le site Web. Ainsi, un nombre important d’urls peuvent être identifiées, qui sont traitées par la suite dans le but de générer un graphe réduit du site parcouru que nous appelonsgraphe de navigation. Ensuite, à partir de ce graphe commence une étape d’identification et d’exploitation de vulnérabilités conformément à l’approche dé-crite dans le chapitre 3 en envoyant des requêtes spécifiques à travers les liens disponibles à partir de chaque nœud du graphe de navigation. L’exploitation de vulnérabilités permet de révéler de nouvelles urls qui n’étaient pas initialement accessibles. Ces deux étapes s’exécutent itérativement jusqu’à abou-tir au graphe final modélisant le site complet. Ce graphe final permet enfin de définir l’ensemble des scénarios d’attaque incluant les différentes vulnérabilités identifiées en tenant compte de l’ordre dans lequel ces vulnérabilités peuvent être exploitées.

Ce chapitre est composé de six sections. La section 4.1 donne un aperçu de différents travaux liés aux graphes d’attaque dans la littérature. La section 4.2 décrit notre approche pour la génération du graphe de navigation. L’algorithme qui a été mis en œuvre pour la génération de ce graphe est présenté dans la section 4.3. L’approche proposée est illustrée sur un cas d’étude qui est présentée dans la section 4.4. Une étude de complexité de l’algorithme de génération du graphe d’attaque est effectuée dans la section 4.5. Enfin, la section 4.6 conclut ce chapitre.

4.1 Graphe d’attaque

La génération de scénarios d’attaques a fait l’objectif d’un grand nombre de travaux de recherche sur lesgraphes d’attaque.

Un graphe d’attaqueest un formalisme qui permet de décrire les vulnérabilités dans un système et les scénarios d’attaque possibles (à travers des chemins dans le graphe) qui peuvent être utilisés par un intrus pour atteindre un objectif spécifique. Dans un graphe d’attaque, les nœuds modélisent les états du processus d’attaque et représentent généralement les privilèges possédés par l’attaquant et les connaissances dont il dispose sur l’état du système cible et de son environnement. Les arcs représentent les actions de l’attaquant et les vulnérabilités dont l’exploitation permet le passage de l’état source vers l’état destination.

Diverses formes de graphes d’attaque ont été proposées dans la littérature, nous citons par exemple [INGOLS ET AL. 06],[DACIER94], [PHILLIPS ETSWILER98], [ORTALO ET AL. 99],[SHEYNER ET AL. 02] et [NOEL ET AL. 10]. Ces travaux focalisent aussi sur l’optimisation de la construction des graphes d’attaque et la maîtrise de leur complexité. Dans le même contexte, nous pouvons citer également les arbres d’attaque [SCHNEIER99], [MAUW ETOOSTDIJK05] et les arbres d’attaque-défense [KORDY ET AL. 11]. Ces formalismes constituent une adaptation des arbres de fautes utilisés couramment pour représenter des scénarios de défaillance dans des études de sûreté de fonctionnement.