Proposition de sujet de thèse - Frama-C

Transcription

Proposition de sujet de thèse - Frama-C
Proposition de sujet de thèse
Vérication de propriétés de sécurité par analyse
statique sur des programmes C de grande taille
Encadrement :
Julien Signoles, ingénieur-chercheur
tél : 01 69 08 71 83
e-mail : [email protected]
Co-encadrant avec une HDR
tél :
e-mail :
Lieu :
Laboratoire de Sûreté du Logiciel, CEA LIST
CEA, centre de Saclay
91191 Gif-sur-Yvette Cedex
Cadre de la thèse
Le CEA LIST est un centre de recherche technologique sur les systèmes à logiciel prépondérant qui mène ses recherches en partenariat avec les grands acteurs industriels du
nucléaire, de l'automobile, de l'aéronautique, de la défense et du médical pour étudier et
développer des solutions innovantes adaptées à leurs besoins. Au sein du CEA LIST, le Laboratoire de Sûreté des Logiciels (LSL), localisé à Saclay (Essonne, 91), développe des outils
d'aide à la validation et à la vérication de logiciels et de systèmes matériels/logiciels, tout
particulièrement dans le domaine des systèmes embarqués critiques.
L'un des nos outils, nommé Frama-C [5], est une plate-forme logicielle facilitant le développement d'outils d'analyses statiques de programmes C . Un de ses buts principaux est
de proposer des solutions logicielles permettant d'augmenter le degré de conance envers
des applications critiques de nature industrielle. C'est au sein de l'équipe de R&D du thème
analyse statique développant Frama-C que se déroulera la thèse.
Contexte scientique
Les propriétés de sécurité au c÷ur du sujet de thèse sont des propriétés d'absence de
divulgation (condentialité ) ou de modication (intégrité ) non autorisée d'information. Or,
autant le problème de la vérication de ce type de propriétés sur des protocoles (en particulier des protocoles cryptographiques) et celui de la vérication de propriétés de sûreté de
fonctionnement (comme l'absence d'erreur à l'exécution) sur des programmes C ont fait, et
font encore, les objets de recherches intensives grâce auxquelles diérentes solutions existent,
autant le problème de la vérication de ce type de propriétés de sécurité sur des programmes
C demeure peu étudié [1, 8, 10]. Ceci peut être expliqué par la diculté de ce problème, qui
résulte de la combinaison des aspects bas-niveaux des programmes C (allocation mémoire,
gestion des pointeurs, etc ) avec les caractéristiques haut-niveau inhérentes aux propriétés
visées (propriétés globales du système non vériables localement, etc ). C'est ce dé que ce
sujet de thèse propose de relever.
Des recherches préliminaires récentes, menées au LSL, ont abouti au développement d'un
prototype au sein de Frama-C . Il permet de détecter automatiquement des failles potentielles
de condentialité et d'intégrité dans des programmes C. La méthode employée est fondée
sur l'interprétation abstraite [3]. Ce prototype soure cependant d'un problème majeur de
passage à l'échelle, ne lui permettant pas d'analyser avec succès des programmes C de grande
taille. Pour surmonter cette diculté, une nouvelle analyse a été mise au point, fondée sur
un mécanisme de génération d'annotations [7, 9] dans le langage de spécication ACSL [2]
utilisé par Frama-C . Cette technique permet de convertir le problème de la détection de
failles de sécurité en un problème usuel de vérication de sûreté de fonctionnement. Ainsi,
n'importe quel outil de vérication de programmes peut a priori être utilisé, en particulier
ceux déjà existants dans Frama-C . Ces derniers étant capables de vérier des programmes
C de grande taille, la diculté du passage à l'échelle devrait donc être surmontée.
Néanmoins, même s'il est prometteur, ce nouveau mécanisme ne laisse en réalité choisir ni
le modèle de sécurité, ni l'outil (et donc la méthode) de vérication souhaités. L'approche doit
donc être revue en profondeur pour permettre un tel degré de paramétricité, indispensable
en pratique.
Objectif
L'objectif de cette thèse est de proposer une analyse statique de sécurité paramétrée par
un modèle de sécurité et permettant d'utiliser diérents analyseurs existants pour eectuer
in ne la vérication. En particulier, l'utilisation de l'analyse de valeurs de Frama-C [4],
fondée sur l'interprétation abstraite, et celle d'un autre analyseur fondé sur une méthode
déductive (comme l'outil Jessie relié à la plate-forme Why [6]) devraient être possibles.
En plus des aspects théoriques, un des points importants de la thèse consistera à valider
la méthode choisie à travers un prototype expérimenté sur un programme C de taille réelle.
Références
[1] June Andronick, Boutheina Chetali, and Chritine Paulin-Mohring. Formal verication
of security properties of smart card embedded source code. In John Fitzgerald, Ian J.
Hayes, and Andrzej Tarlecki, editors, International Symposium of Formal Methods Europe, volume 3582 of Lecture Notes in Computer Science, Newcastle,UK, July 2005.
Springer-Verlag.
[2] Patrick Baudin, Jean-Christophe Filliâtre, Claude Marché, Benjamin Monate, Yannick
Moy, and Virgile Prevosto. ACSL : ANSI C Specication Language (preliminary design
V1.4), preliminary edition, October 2008.
[3] Patrick Cousot and Radhia Cousot. Abstract interpretation : a unied lattice model for
static analysis of programs by construction or approximation of xpoints. In Proceedings
of the 4th Symposium on Principles of Programming Languages, pages 238252, Los
Angeles, Californie, États-Unis, 1977. ACM Press.
[4] Pascal Cuoq and Virgile Prevosto. Documentation of Frama-C's value analysis plug-in,
October 2009.
[5] Pascal Cuoq and Julien Signoles. Experience Report : OCaml for an Industrial-Strength
Static Analysis Framework. In Proceedings of the 2009 International Conference on
Functional Programming, pages 281286. ACM, September 2009.
[6] Jean-Christophe Filliâtre and Claude Marché. The Why/Krakatoa/Caduceus platform
for deductive program verication. In Werner Damm and Holger Hermanns, editors,
19th International Conference on Computer Aided Verication, Lecture Notes in Computer Science, Berlin, Germany, July 2007. Springer-Verlag.
[7] Alain Giorgetti and Julien Groslambert. JAG : JML Annotation Generation for verifying temporal properties. In FASE'2006, Fundamental Approaches to Software Engineering, volume 3922 of LNCS, pages 373376, Vienna, Austria, March 2006. Springer.
[8] Jean Goubault-Larrecq and Fabrice Parrennes. Cryptographic protocol analysis on real
C code. In Radhia Cousot, editor, Proceedings of the 6th International Conference on
Verication, Model Checking and Abstract Interpretation (VMCAI'05), volume 3385
of Lecture Notes in Computer Science, pages 363379, Paris, France, January 2005.
Springer.
[9] Julien Groslambert and Nicolas Stouls. Vérication de propriétés LTL sur des programmes C par génération d'annotations. In AFADL'09, 2009. Article court.
[10] Benjamin Monate and Julien Signoles. Slicing for security of code. In Peter Lipp,
Ahmad-Reza Sadeghi, and Klaus-Michael Koch, editors, TRUST, volume 4968 of Lecture Notes in Computer Science, pages 133142. Springer-Verlags, March 2008.

Documents pareils