Sujet ter0809 lig vasco

De Ensiwiki
Révision de 3 novembre 2008 à 21:37 par Grozr (discussion | contributions) (Nouvelle page : {{Sujet ter | labo = LIG | titre = Combiner un fuzzer et un outil d'apprentissage pour chercher des failles de sécurité | equipe = VASCO | encadrants = Roland.Groz@imag.fr }} [[Cat...)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher


Combiner un fuzzer et un outil d'apprentissage pour chercher des failles de sécurité

Labo LIG
Equipe VASCO
Encadrants Roland.Groz@imag.fr

Thème général

  1. Sécurité logicielle
  2. Frelatage (fuzzing) de données, test aléatoire
  3. Algorithmes d'inférence de machines (par apprentissage)


Contexte

La complexité des logiciels permet des attaques basées sur des vulnérabilités introduites par des fautes de programmation. Comme celles-ci ont échappé au processus de conception, on s'intéresse à des techniques visant à détecter (avant les pirates) des vulnérabilités en soumettant le logiciel à des tests. Une technique particulièrement utilisée dans ce domaine, le "fuzzing" (frelatage des requêtes envoyées au logiciel) teste la robustesse du logiciel face à des données aléatoires jouant sur des paramètres invalides ou proche de bornes. Ce type de test reste largement aléatoire et handicapé par l'absence d'information sur l'état interne du système.

L'équipe Vasco du LIG a développé un outil RALT qui permet de reconstituer un modèle du comportement du logiciel, en utilisant des techniques d'apprentissage. Ceci permettrait de détecter des incohérences entre les états internes et ceux définis par la spécification du système, et d'orienter le frelatage en fonction des états atteints. Ou d'introduire une notion d'état pertinente pour orienter la génération des données frelatées.

Cette idée a déjà été explorée récemment par David Lee et G. Shu de l'université d'Ohio, qui ont pu trouver ainsi assez facilement des erreurs dans les clients MSN.

Sujet

Le travail consistera à enrichir la bibliothèque de méthodes de l'outil RALT avec un fuzzer. Puis de mener un expérimentation sur une application. Le choix de l'application à tester sera défini en concertation avec l'étudiant candidat à cet stage de TER: il s'agira de choisir une application dont il maîtrise bien les interfaces, pour programmer (ou intégrer) assez simplement un fuzzer. Il faut aussi que l'application comporte des états internes qu'on pourra retrouver avec l'outil RALT.

Dans un premier temps, l'étudiant devra donc étudier les différents éléments intervenant dans le sujet:

  1. inférence de machine
  2. test de robustesse et frelatage
  3. travaux de Lee et Shu

Il faudra ensuite choisir une application qui constitue une cible pertinente. Ce pourrait être un utilitaire Linux ou Windows, une application Web, une application en réseau... Cela permettra de définir le frelatage relatif aux paramètres à l'interface de cette application.

Le fuzzer correspondant sera intégré à RALT, et une petite campagne d'expérimentation sera menée pour essayer de lever des vulnérabilités de l'application.


Résultats attendus

  1. logiciel d'interfaçage RALT-fuzzer
  2. détection de vulnérabilités non connues à ce jour
  3. évaluation du gain apporté par l'apprentissage

Compétences attendues

Programmation objet en Java (RALT est écrit en Java)

Compétences fournies

  1. Acquisition de méthodes de test
  2. Aperçu sur plusieurs domaines actifs (tant au plan scientifique que dans l'industrie logicielle): apprentissage de modèles, sécurité logicielle, techniques de test avancées