IFFree est un outil de recherche d'interférences dans du code C. Les interférences sont des interactions entre modules de niveaux de privilèges différents. Ces niveaux de privilèges correspondent à des classifications associées au logiciel critique selon les domaines: niveaux d'ASIL pour l'automobile, niveaux de DAL pour l'avionique, niveaux de SIL pour le ferroviaire, etc.

Les interactions recherchées sont:

  • Les requêtes d'exécution sur une API
  • Les affectations. Celles-ci recouvrent par exemple l'écriture de variables de niveau plus élevé, la lecture de variables ou de valeurs provenant de module de niveau de privilège moins élevé, etc
  • L'échappement d'adresses provenant de modules protégés

Pour réaliser ces analyses, IFFree réalise l'inlining du code afin d'avoir la meilleure granularité et la meilleure précision. Par exemple, si une valeur dangereuse est passée en paramètre à travers de nombreux appels de fonction pour n'être utilisée que très profondément dans le graphe d'appel, IFFree pointera directement l'endroit où elle est utilisée.

IFFree peut être utilisé sur des codes C embarqués industriels de taille réaliste. Il a par exemple été utilisé pour réaliser l'analyse d'un code embarqué automobile d'environ 750 kLoC.