Frama-C est une plateforme d’analyse de programmes écrits en C, adapté notamment aux contextes critiques (nucléaire, aéronautique, ferroviaire, santé, etc.). Elle permet de garantir l’absence d’erreurs logicielles et de prouver la conformité du code à des propriétés formelles. L’outil s’est enrichi récemment de modules de vérification de propriétés de cybersécurité.
Frama-C est un logiciel open source d‘analyse de programmes écrits en langage C, en vue d’en vérifier la sûreté et l’absence de vulnérabilités au sens cybersécurité. Il se caractérise par deux qualités :
Ces deux qualités rendent l’outil particulièrement adapté à des contextes critiques (aéronautique, nucléaire, ferroviaire, santé…), où de très hauts niveaux de garantie sont exigés, et pour lesquels le nombre de cas de tests à réaliser s’avère en général rédhibitoire.
Le logiciel est construit autour d’un noyau, qui gère le code sous analyse, et de modules, ou greffons, spécialisés dans diverses fonctions. Certains sont dédiés à une technique d’analyse : analyse par interprétation abstraite, analyse déductive, vérification dynamique de propriétés, etc. D’autres servent à vérifier des classes de propriétés spécifiques (temporelles, relationnelles, contraintes globales, etc.). D’autres encore ont vocation à aider les utilisateurs à naviguer dans le code pour identifier les causes d’un problème (dépendances de données, de contrôle, …). Les greffons coopèrent pour dépister les bugs en échangeant des informations (des résultats partiels ou finaux, des annotations etc.) dans un langage dédié. Cela, en collaborant séquentiellement ou simultanément.
Parmi ses évolutions récentes, Frama-C s’est enrichi de fonctions permettant de spécifier et de vérifier des propriétés liées à la cybersécurité.
Reconnu au niveau mondial, l’outil est utilisé par un grand nombre de partenaires institutionnels, tel que l’ANSSI, et industriels tels qu’Airbus, EDF, Thales et, dans un contexte R&T, par Dassault Aviation.
Ses forces principales :
Frama-C est l’un des rares outils au monde à avoir passé les tests d’évaluation des analyseurs de code du NIST (National Institute of Standards and Technology) et à avoir satisfait au critère le plus exigeant, à savoir la capacité à garantir l’immunité du code.
Thales doit certifier les machines virtuelles de ses cartes à puce, c’est-à-dire le code chargé d’exécuter les applications sur celles-ci. L’objectif est, en particulier, de vérifier leurs propriétés d’intégrité et de confidentialité. L’industriel y est parvenu grâce à Frama-C. Réalisée fin 2021, l’opération a été une première dans le monde des cartes à puce de grande diffusion.
Pour en savoir plus, lire la publication
Parmi les évolutions prévues de l’outil :
The dogged pursuit of bug-free C programs: the Frama-C software analysis platform. Patrick Baudin, François Bobot, David Bühler, Loïc Correnson, Florent Kirchner, Nikolai Kosmatov, André Maroneze, Valentin Perrelle, Virgile Prevosto, Julien Signoles, and Nicky Williams. 2021.. Commun. ACM 64, 8 (August 2021), 56–68.
Structuring Abstract Interpreters Through State and Value Abstractions, Sandrine Blazy, David Bühler and Boris Yakobowski. In Verification, Model Checking, and Abstract Interpretation (VMCAI), 2019
Logic against ghosts: Comparison of two Proof Approaches for a List Module SAC 2019, Allan Blanchard, Nikolai Kosmatov, Frédéric Loulergue. The 34th ACM/SIGAPP Symposium On Applied Computing, Apr 2019.
How testing helps to diagnose proof failures, Guillaume Petiot, Nikolaï Kosmatov, Bernard Botella, Alain Giorgetti, Jacques Julliand. Springer Verlag, 2018, 30 (6), pp.629 – 657.
Shadow state encoding for efficient monitoring of block-level properties, Kostyantyn Vorobyov Julien Signoles Nikolai Kosmatov, Proceedings of the 2017 ACM SIGPLAN International Symposium on Memory Management.
MetAcsl: Specification and Verification of High-Level Properties Virgile Robles, Nikolai Kosmatov, Virgile Prevosto, Pascale Le Gall
TACAS (25th International Conference on Tools and Algorithms for the Construction and Analysis of Systems), Avril 2019.
Pour en savoir plus, visiter le site Frama-C