Ouvrir le menu Fermer le menu

Validation MISRA sur FreeRTOS

trait de séparation
Temps de lecture : 5 minutes

Marc Hermeling, de CodeSecure a fait le test et voici son feedback :

"Certaines parties du noyau FreeRTOS sont conformes à la norme MISRA 2012 (les détails sont  ici ). Je suis assez impressionné par le travail effectué pour rendre conforme à la norme MISRA un projet écrit à l'origine sans tenir compte de la norme MISRA. 

Ils ont utilisé l'analyse statique Coverity (qui fait maintenant partie de Synopsis) pour effectuer les tests MISRA à l'époque. Mais je me demandais ce que CodeSonar trouverait aujourd'hui sur ce noyau, et si les analyses Coverity couvrent ou non les vérificateurs MISRA 2023. J'ai donc configuré un projet dans GitLab, basé sur une démo FreeRTOS antérieure que j'avais déjà, et j'ai effectué un test en utilisant CodeSonar Static Application Security Testing (SAST) de CodeSecure avec des modules de conformité MISRA intégrés."

Paramètres

Les quatre éléments clés du travail sur FreeRTOS comprennent :
  • Un projet qui définit les parties incluses, voir exemples/coverity, pour les versions mono et multi-cœur
  • Une configuration qui désactive certains vérificateurs pour Coverity, ce qui est typique de nombreux projets qui sélectionnent un sous-ensemble de MISRA à cibler
  • Un  fichier avec un ensemble d'écarts  et de justifications pour ceux-ci
  • Annotations dans les fichiers sources qui font référence au fichier numéro 3

Hypothèses

Que trouverait CodeSonar sur le code testé par Coverity ? 

Mon raisonnement derrière ce test est simple : nous savons que CodeSonar a moins de faux négatifs que Coverity car nos clients nous le disent fréquemment, en particulier ceux qui créent des logiciels critiques pour la sécurité et la sûreté. Cela concerne principalement les vulnérabilités de sécurité et les chemins dans le code source où un problème peut survenir, souvent en raison de violations de mémoire. 

MISRA est un sous-ensemble C qui permet de sécuriser la mémoire C, avec un ensemble de règles à suivre. Néanmoins, je voulais tester cela pour le facteur « fun ».  

Quel serait le delta si nous activions les vérificateurs MISRA 2023 ?

La loi MISRA 2023 est principalement une synthèse des amendements de la loi MISRA 2012, mais je voulais quand même trouver la réponse à cette question par ma propre curiosité. 

Au total, il m'a fallu environ 15 minutes pour créer le clone, configurer le pipeline et exécuter quelques tests. L'examen des résultats a pris un peu plus de temps, mais les résultats en valent la peine.

Résultats 

Les résultats étaient intéressants et assez conformes à mes attentes. Par exemple :

  • Certaines règles que Coverity n'a pas vérifiées, telles que 17.11  ( une fonction qui ne renvoie jamais doit être déclarée avec un spécificateur de fonction _Noreturn )
  • Certaines découvertes que Coverity n'a pas détectées d'une manière ou d'une autre, par exemple une comparaison entre un  caractère non signé et un caractère signé , ce qui viole les règles 10.4  (Les deux opérandes d'un opérateur dans lequel les conversions arithmétiques habituelles sont effectuées doivent avoir la même catégorie de type essentielle).
  • Il y a quelques endroits où CodeSonar creuse simplement plus profondément, comme les variables qui peuvent rester non initialisées dans certains cas et les éventuels dépassements d'entiers.
  • Aucun nouvel avertissement après le passage à MISRA-C 2023, ce qui est logique, car la configuration CodeSonar MISRA 2012 couvre la dernière version de MISRA 2012 et MISRA 2023 est en réalité le cumul de tous les amendements et corrections apportés à 2012. 
Le point numéro un ci-dessus est davantage un contrôle de clarté du logiciel, il rend le logiciel plus facile à comprendre. Les points deux et trois peuvent en fait conduire à des échecs d'exécution. Je suis en fait surpris du nombre d'avertissements MISRA que Coverity a manqué.

Grâce à ces résultats et à d'autres résultats spécifiques résultant de mes tests, je travaille actuellement à l'intégration des résultats dans le projet open source et à l'élaboration d'un ensemble de demandes d'extraction qui fournissent des corrections MISRA, des correctifs de code source et une configuration CodeSonar pour FreeRTOS. Il est important de redonner à la communauté open source et le fait d'avoir la configuration CodeSonar facilement disponible permettra aux projets de démarrer plus facilement et de fournir plus rapidement un code plus sûr et plus sécurisé. 

Vous voulez voir par vous-même ?
La configuration de CodeSonar est disponible ici

0

Ces articles peuvent vous intéresser

image blog article

Adopter MISRA C comme votre ami

Découvrez l’organisation des lignes directrices MISRA C.

image blog article

Comment être conforme à MISRA lors de l'utilisation de GitLab

Vidéo de présentation de la conformité MISRA tout en utilisant GitLab.

image blog article

N'ignorez pas les règles MISRA C

Respectez les nouvelles règles et directives ce qui contribuera à éliminer les pratiques de codage connues pour être dangereuses.

image blog article

SAST et MISRA pour éviter pannes critiques

Normes de sécurité mémoire SAST et MISRA pour éviter une débâcle CrowdStrike