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’usage

Valider la qualité d’un code source en C

Frama-C est une plateforme open source d’analyse de programmes écrits en langage C, en vue d’en vérifier la sûreté et la sécurité. Elle combine différentes techniques pour garantir l’absence de bugs ou de vulnérabilités.

Frama-C peut garantir l’absence de défauts logiciels susceptibles de générer une erreur lors de l’exécution ou de permettre des actions malveillantes, mais aussi de garantir le respect de propriétés spécifiques (fonctionnelles, temporelles, relationnelles, contraintes globales, confidentialité, intégrité, etc.) décrites par l’utilisateur.

La principale particularité de Frama-C est que ses analyseurs ne restent jamais silencieux quand un problème peut apparaître. Ils sont basés sur les méthodes formelles, des méthodes d’analyses mathématiques, comme l’interprétation abstraite, la vérification déductive, la vérification dynamique de propriétés, etc. Ces analyseurs coopèrent pour garantir l’absence de bugs ou vulnérabilités en échangeant des informations via un langage de spécification dédié.

Frama-C est adapté aux contextes critiques (aéronautique, nucléaire, ferroviaire, …), où de très hauts niveaux de garantie sont exigés, mais également pour des contextes de cybersécurité pour garantir certaines classes de propriétés de sécurité (confidentialité et intégrité).

Reconnu au niveau national et mondial, l’outil est utilisé par un grand nombre de partenaires institutionnels, tels que l’ANSSI ou la DGA, et industriels tels qu’AIRBUS, EDF, Thales ou Sandia Labs.

Ses atouts

De multiples techniques d'analyse et une 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
  • ses capacités à vérifier des propriétés définies par l’utilisateur,
  • 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.

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, (DO 178-C, ISO 60880, …).
  • Cybersécurité : détection de vulnérabilités dans les programmes, vérification de la fiabilité de contre-mesures, vérification de propriétés de sécurité (reconnaissance sur le schéma français pour les certifications les plus exigeantes en sécurité à savoir les certifications critères Communs EAL6/7).
  • 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 amenant en 2022 jusqu’au plus haut niveau de certification Critères Communs, le CC EAL7.

Pour en savoir plus, lire la publication.

Cela fait de Frama-C le troisième outil reconnu par la centre de certification de l’ANSSI, connu pour son exigence, pour les certifications Critères Communs aux niveaux EAL6 et EAL7, aux côtés de Rocq et Atelier B. De plus Frama-C est le seul de ces trois outils  à travailler directement sur le code cible du produit certifié et donc augmentant encore la confiance dans l’analyse faite.

Evolution

La prise en compte de nouvelles tendances logicielles

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

  • ouverture de la plateforme vers d’autres langages de programmation pour traiter des bases de codes toujours plus complexes et hétérogènes,
  • création de nouvelles extensions au langage de spécification pour pouvoir exprimer et vérifier de nouveaux types de propriétés,
  • amélioration continue des techniques de visualisation pour garantir que les résultats d’analyse restent exploitables malgré des bases de codes toujours plus grandes et complexes,
  • utilisation de techniques d’apprentissage pour faciliter la configuration des analyseurs et réduire l’effort utilisateur.

Publications

Pour en savoir plus, visiter le site Frama-C.

À lire également

Rapport activité 2024

Méthodes formelles pour l’analyse de programme

Pour contribuer à la cybersécurité des systèmes, le CEA-List développe des outils d’analyse de logiciels, notamment via les plateformes Frama-C et BINSEC.
Lire la suite
Rapport activité 2024

DGA et CEA-List, une collaboration fructueuse sur l’analyse de codes de sécurité

Conçus historiquement pour l’analyse de sûreté de fonctionnement, les logiciels BINSEC et FRAMA-C du CEA-List sont adaptés aux nouveaux besoins de sécurité de la DGA, dans le cadre de l’acco...
Lire la suite