Le projet Vulcain est soutenu par le programme MSTIC de l’Université Joseph Fourier.

Les systèmes informatiques actuels sont souvent conçus par des combinaisons de programmes existants (systèmes d'exploitations, bases de données, etc.). Les erreurs de programmation, directes ou résultant de la combinaison incorrecte d'éléments, peuvent amener à des comportements incorrects que nous appellerons dans la suite vulnérabilités. Si une vulnérabilité peut être utilisée pour modifier le comportement elle devient alors une faille du système. Le code exploitant une faille pour modifier effectivement le système est un exploit. Les différentes étapes amenant à une attaque sont donc :
  • la découverte de la vulnérabilité,
  • la recherche de la séquence d'événements utilisant cette vulnérabilité pour ouvrir une faille dans le système,
  • l'écriture d'un programme reproduisant cette séquence de manière déterministe, l'exploit.

De nombreuses vulnérabilités portant sur des applications usuelles sont signalées quotidiennement par des organismes de veille et de collecte. La plupart du temps, un correctif de sécurité fourni par l'éditeur accompagne ces alertes. Le développement de ces correctifs présente un coût important pour les éditeurs.
D'autre part, ces correctifs de sécurité présentent également un coût pour les utilisateurs. En effet, l'application de ces correctifs peut entraîner une modification des fonctionnalités du logiciel (par passage à une version plus récente), et peut donc avoir des conséquences pas toujours prévisibles. Il est donc important de disposer de moyens permettant de déterminer si une vulnérabilité présente ou non un risque réel, et si elle se traduit ou non par une faille pour une configuration donnée de l'application, dans son contexte d'exécution.


L'objectif de ce projet est de proposer des techniques automatiques d'aide à la détection de failles dans un environnement « classique ».
Nous nous intéressons au problème de la recherche de vulnérabilités dans une application et à la caractérisation de leur contexte d'activation. Différentes approches sont utilisées, selon les informations disponibles (approche boîte noire par apprentissage, approche boîte blanche par analyse des codes, ...). L'étape suivante est de contrôler la réalité des failles détectées, par exemple en construisant un exploit. Pour ce faire il faut connaître les contextes d'activations des vulnérabilités, leurs enchaînements possibles. Par exemple, on peut chercher l'activation d'une seule vulnérabilité en balayant les valeurs d'un ou plusieurs paramètres (techniques de « fuzzing », frelatage). Une autre approche est la technique des graphes d'attaques, qui recherche le contexte d'activation d'une nouvelle vulnérabilité à partir des exploitations des précédentes.