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 :
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 :
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é.
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.
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
La configuration de CodeSonar est disponible ici