Ouvrir le menu Fermer le menu

MISRA : Mythes démystifiés

trait de séparation
Temps de lecture : 5 minutes

Dans cet article, Andrew Banks - Spécialiste technique MISRA de chez LDRA démystifie les mythes du MISRA C :

“MISRA C est uniquement une norme pour l’automobile !”
"MISRA C est uniquement une norme de sécurité !"

MISRA C est uniquement une norme pour l’automobile !

Contexte :
MISRA C est issu de ce qui était à l’origine appelé la Motor Industry Software Reliability Association (ou MISRA en abrégé), un regroupement de l’industrie automobile britannique. La première édition, publiée en 1998, s’intitulait "Guidelines for the use of the C language in vehicle-based software" (Directives pour l'utilisation du langage C dans les logiciels embarqués des véhicules).

Cette perception a été renforcée par le fait que MISRA C est cité dans la norme ISO 26262 relative à la sécurité fonctionnelle des véhicules routiers.

Oui, MISRA C a bien été créé par et pour l’industrie automobile… cependant, peu après sa publication, des questions ont émergé sur ses potentielles applications dans d'autres domaines spécifiques. 25 ans plus tard, cette question revient régulièrement dans les conférences.

La réalité :
Bien que MISRA C ait été créé par et pour l’industrie automobile, ce n’était que le début… Ainsi, la deuxième édition, publiée en 2004, a été intitulée "Guidelines for the use of the C language in critical systems" (Directives pour l'utilisation du langage C dans les systèmes critiques). Ce changement de nom n'était pas une simple modification mineure, mais un véritable changement de paradigme dans la manière de penser son application.

MISRA C a depuis été adopté par de nombreux secteurs et industries, et a même servi de base pour des normes comme le JSF Air Vehicle Coding Standard et le NASA Jet Propulsion Laboratory Institutional Coding Standard for the C Programming Language, entre autres.

Malgré ces nombreux exemples et preuves d’application au-delà du secteur automobile, la perception erronée persiste encore aujourd’hui.

MISRA C est fier de ses origines dans l’automobile… mais il est bien plus qu’une simple norme de codage pour ce secteur.


MISRA C est uniquement une norme de sécurité

Contexte
Il est vrai que MISRA C est souvent perçu comme une norme principalement axée sur la sécurité. Cette perception est compréhensible, étant donné que MISRA signifie Motor Industry Software Reliability Association, et que les directives MISRA C ont été initialement développées pour améliorer la sécurité des systèmes embarqués dans l'industrie automobile.

Réalité
Bien que MISRA C ait été créé avec un fort accent sur la sécurité, il est important de noter que ses directives ne se limitent pas à cet aspect. En effet, MISRA C vise également à améliorer la fiabilité, la maintenabilité et la portabilité du code. Ces qualités sont essentielles non seulement pour les systèmes critiques en matière de sécurité, mais aussi pour toute application nécessitant un code robuste et fiable.

u niveau logiciel, les exigences non fonctionnelles en matière de sécurité et de sûreté sont globalement les mêmes : le logiciel doit faire ce qu’il est censé faire, sans exposer l’utilisateur ou des tiers à des vulnérabilités.

De même, MISRA C traite les vulnérabilités et les comportements indésirables en C, quelle que soit l'application.

Suite à la publication de MISRA C:2012, le groupe de travail international de normalisation responsable du langage C (ISO/IEC JTC1/SC22/WG14) a publié ses propres directives de sécurité pour les utilisateurs du langage C, ISO/IEC TS 17961 .

Dans une activité parallèle, la division CERT du Software Engineering Institute de l'Université Carnegie Mellon a produit la norme éponyme CERT-C Secure Coding Standard.

En conséquence, MISRA a publié des matrices montrant la couverture de MISRA C par rapport à ces deux normes de codage :
  • Addendum 2 (2016) : Couverture de MISRA C:2012 par rapport à C Secure (ISO/IEC TS 17961:2013)
  • Addendum 3 (2018) : Couverture de MISRA C:2012 par rapport au CERT-C
Ces données montrent qu'à quelques exceptions près, MISRA C répond aux exigences spécifiées dans les normes ISO/IEC TS 17961 et CERT-C. De plus, MISRA a également publié l'amendement 1 , ajoutant des conseils de sécurité supplémentaires.

Conclusion
Il est donc réducteur de considérer MISRA C uniquement comme une norme de sécurité. Ses directives offrent une base solide pour le développement de logiciels de haute qualité, couvrant des aspects essentiels tels que la fiabilité et la maintenabilité, en plus de la sécurité.


andrew-banks_LDRA
À propos de l'auteur:
Andrew Banks
Andrew Banks est un spécialiste technique chez LDRA avec plus de 30 ans d'expérience dans le développement de logiciels embarqués/en temps réel à haute intégrité.

Membre agréé de la British Computer Society, il est diplômé de l'Université de Lancaster en 1989 et a passé la majeure partie de sa carrière dans les secteurs de l'aérospatiale, de la défense et de l'automobile.

Andrew est engagé dans le développement des normes – il est impliqué dans la MISRA depuis 2007 et est président du groupe de travail MISRA C depuis début 2013 ; il est président du groupe de travail « Tests de logiciels » du BSI ; et un participant actif dans d'autres travaux du BSI, de l'ISO, de l'IET et du SCSC, y compris la 2e édition de la norme ISO 26262.
1

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

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

Validation MISRA sur FreeRTOS

CodeSecure livre les résultats de Tests MISRA avec leur solution SAST (Static Application Security Testing).

image blog article

Introduction de la norme de codage MISRA C à une base de code existante

Cet article examine certaines approches pragmatiques pour adopter progressivement MISRA à l'aide d'outils de test de sécurité des applications statiques (SAST)