Partager

Frama-C, l’analyse sans faille de code source en C

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é.

L’usage

Valider la qualité d’un code source en C

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 :

  • sa capacité à garantir l’absence de défauts logiciels susceptibles de générer une erreur lors de l’exécution,
  • la possibilité pour l’utilisateur de tester et prouver la conformité du programme à des propriétés formelles.

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 atouts

De multiples techniques d'analyse, son architecture modulaire...

Ses forces principales :

  • ses performances liées à l’exhaustivité de ses techniques d’analyse,
  • ses capacités de vérification de l’absence de vulnérabilités
  • l’interaction entre ses différents greffons, qui offre une grande souplesse d’utilisation,
  • des opportunités de développement pour répondre aux enjeux de cybersécurité, de souveraineté numérique et aux besoins de valider les algorithmes de deep learning.

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.

Applications

Systèmes critiques, cybersécurité…

  • Systèmes critiques et/ou embarqués : vérification formelle de l’absence de défauts logiciels, vérification des propriétés fonctionnelles, vérification des propriétés de sécurité (confidentialité, intégrité, disponibilité).
  • Intelligence Artificielle : Analyse de bibliothèques.
  • Cybersécurité : détection de vulnérabilités dans les programmes, vérification de la fiabilité de contre-mesures.
  • Génération de tests.
  • Enseignement : utilisation du logiciel par des universités, en France et à l’étranger pour des formations sur le test, l’analyse et/ou la preuve de programme et plus généralement de génie logiciel.
Success story

Thales utilise Frama-C pour certifier l'OS de ses cartes à puces

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

Evolution

La prise en compte de nouvelles tendances logicielles

Parmi les évolutions prévues de l’outil :

  • l’analyse de programmes qui incorporent des techniques d’apprentissage machine,
  • l’utilisation de techniques d’intelligence artificielle pour faciliter la mise en œuvre des analyses (sujet abordé par le projet H2020 Decoder, avec la génération de spécifications formelles à partir de documentation en langage naturel, et poursuivi dans le projet du Grand Défi Cyber LEIA),
  • la prise en compte des nouvelles méthodes de développement et de déploiement de logiciels (intégration continue) par la possibilité de réutiliser les résultats existants pour l’analyse d’une nouvelle version d’un code (sujet également abordé dans le cadre du projet LEIA).

Publications

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

À lire également

Domaines applicatifs

Cybersécurité : garantir la sûreté et la confidentialité par conception

Au cœur des enjeux de souveraineté numérique, la cybersécurité constitue aujourd’hui un pan essentiel de nos sociétés. Garante de l’autonomie et de la paix dans le cyberespace, elle est un ...
Lire la suite
Enjeux

Confiance numérique

L’interconnexion des réseaux et des objets démultiplie les risques d’attaques malveillantes. Mais l’IA peut aider à les déjouer, tout comme elle peut, en amont, identifier les failles potent...
Lire la suite
Programmes de recherche

Méthodes formelles

Le programme INCA rend les méthodes formelles accessibles à toutes les entreprises qui développent du code.
Lire la suite