Parsifal, ou comment écrire rapidement des parsers robustes et efficaces

Entrée en langue française / French entry Catégorie: Conférence
Auteur: Olivier Levillain
Date: juin 2013
Série: Parsifal

Dans le cadre de ses activités d'expertise, le laboratoire sécurité des réseaux et protocoles (LRP) de l'ANSSI est amené à étudier divers protocoles de communication. L'étude fine de ces protocoles passe par l'utilisation de parsers, ou dissecteurs, de confiance permettant d'analyser les messages échangés lors d'une exécution du protocole.

L'expérience a montré qu'il était nécessaire de disposer d'implémentations indépendantes et robustes pour étudier et comprendre les comportements d'un protocole donné, en particulier pour détecter et caractériser les anomalies. En effet, pour un protocole donné, les implémentations disponibles de clients, serveurs ou dissecteurs sont parfois limitées (refus de certaines options), laxistes (acceptation silencieuse de paramètres erronés) ou fragiles (terminaison brutale du programme pour des valeurs inattendues, qu'elles soient licites ou non).

Ce constat a conduit au développement d'outils, l'objectif étant de développer rapidement des dissecteurs robustes et efficaces. Pour cela, plusieurs langages de programmation ont été successivement utilisés (C, C++, python, OCaml). Le dernier d'entre eux s'appelle Parsifal, et montre les bonnes propriétés suivantes : code succinct, programmes compilés efficaces et robustes, possibilité de décrire des formats de manière incrémentale.

Le code source de Parsifal est disponible sur GitHub (https://github.com/picty/parsifal).

Présenté lors de la conférence SSTIC à Rennes, France en juin 2013

BibTeX Document Présentation