Zum Inhalt springen

MISRA C

MISRA C – Programmierrichtlinien für sichere, zuverlässige C-Software in eingebetteten und sicherheitskritischen Systemen. Die Ausgabe 2023 unterstützt C11/C18.

Definition
MISRA C – Programmierrichtlinien für sichere, zuverlässige C-Software in eingebetteten und sicherheitskritischen Systemen. Die Ausgabe 2023 unterstützt C11/C18.

MISRA C – Sichere Programmierung für eingebettete Systeme

MISRA C ist ein Satz von Programmierrichtlinien, der von der Motor Industry Software Reliability Association (MISRA) entwickelt wurde, um die Sicherheit, Zuverlässigkeit und Cybersicherheit von C-Code in eingebetteten Systemen zu gewährleisten. Ursprünglich für die Automobilindustrie entwickelt, ist MISRA C heute der De-facto-Standard in der Luft- und Raumfahrt, der Medizintechnik, der Industriesteuerung, der Bahntechnik und in allen Bereichen, in denen ein Softwarefehler Folgen für die funktionale Sicherheit oder die Cybersicherheit hat.

MISRA C:2023 und MISRA C:2025

Die Ausgabe 2023 (MISRA C:2012 Third Edition, Second Revision) fasst MISRA C:2012 mit den Amendments 1–4 und den Technical Corrigenda 1–2 in einem einzigen Dokument zusammen. MISRA C:2025, eine im März 2025 veröffentlichte inkrementelle Aktualisierung, ist die aktuelle Ausgabe. Zu den wichtigsten Neuerungen der Ausgabe 2023 gehören:

NeuerungBeschreibung
Unterstützung für C11/C18Richtlinien für _Generic, _Noreturn, _Alignas, Atomics und Threads
Regeln zur NebenläufigkeitNeue Richtlinien für Multithreading und atomare Operationen – entscheidend für RTOS-basierte eingebettete Systeme
Fokus auf CybersicherheitVeröffentlichte Abdeckungszuordnungen zu CERT C und ISO/IEC 17961 (eine CWE-Zuordnung kam mit MISRA C:2025 hinzu)
Einheitliches DokumentAlle Amendments und Corrigenda in einer einzigen Spezifikation zusammengefasst

Klassifizierung der Richtlinien

KategorieBedeutungAbweichung zulässig?
Zwingend (Mandatory)Muss befolgt werden – keine Ausnahmen❌ Niemals
Erforderlich (Required)Muss befolgt werden, es sei denn, es wird eine formale Abweichung dokumentiert✅ Mit dokumentierter Begründung
Empfehlung (Advisory)Empfohlene Best Practice✅ Keine formale Abweichung erforderlich

Die Richtlinien werden weiter in Regeln (Rules) (präzise definiert, werkzeuggestützt prüfbar) und Anweisungen (Directives) (allgemeiner, erfordern ingenieurtechnisches Urteilsvermögen) unterteilt.

Was MISRA C verhindert

Häufige Fallstricke der Programmiersprache C, gegen die MISRA C schützt:

  • Undefiniertes Verhalten – Überlauf von vorzeichenbehafteten Ganzzahlen, nicht initialisierte Variablen, Dereferenzierung von Nullzeigern
  • Implementierungsdefiniertes Verhalten – Reihenfolge von Bitfeldern, Vorzeichen von char, Padding von Strukturen
  • Gefährliche Konstrukte – goto, setjmp/longjmp, Unions für Type-Punning, rekursive Funktionen
  • Cybersicherheitsschwachstellen – Pufferüberläufe, Format-String-Angriffe, Integer-Trunkierung
  • Fehler bei der Nebenläufigkeit – Wettlaufsituationen (Data Races), nicht-atomare Operationen auf gemeinsam genutzten Variablen

Konformität in der Praxis

AspektVorgehensweise
Statische AnalysewerkzeugePC-lint, Polyspace, Coverity, Parasoft, LDRA, QA-C
CI/CD-IntegrationAutomatisierte MISRA-Prüfung bei jedem Commit
AbweichungsprozessFormale Dokumentation der Abweichung mit Analyse der Sicherheitsauswirkungen
KonformitätsmatrixZuordnung von MISRA-Regeln zu Projektregeln mit Nachverfolgung von Verstößen

MISRA C und Normen zur funktionalen Sicherheit

Die Konformität mit MISRA C wird von wichtigen Normen zur funktionalen Sicherheit gefordert oder vorausgesetzt:

NormAnwendungsbereichMISRA-Anforderung
ISO 26262AutomobilindustrieVerlangt Programmierrichtlinien; nennt MISRA C als Beispiel für C
IEC 61508IndustrieEmpfiehlt eine eingeschränkte Untermenge von C
DO-178CLuft- und RaumfahrtProgrammierstandards erforderlich (MISRA wird häufig verwendet)
IEC 62304MedizintechnikErfordert dokumentierte Programmierstandards
EN 50716 (ersetzt EN 50128)BahntechnikEmpfiehlt eine eingeschränkte Sprachuntermenge

Verwandte Begriffe

  • CRA – Die EU-Cyberresilienz-Verordnung verlangt, dass Produkte so konzipiert und entwickelt werden, dass sie ein angemessenes Cybersicherheitsniveau gewährleisten, nennt aber keinen Programmierstandard; MISRA C ist eine Möglichkeit, dies für C-Code zu unterstützen.
  • RTOS – Die neuen Richtlinien zur Nebenläufigkeit in MISRA C:2023 sind für RTOS-basierte, multithreaded Firmware unerlässlich.

Alle unsere Projekte für eingebettete Systeme folgen den MISRA-C-Richtlinien mit automatisierter statischer Analyse in der CI/CD-Pipeline. Informieren Sie sich über unsere Dienstleistungen zur Entwicklung eingebetteter Systeme.

Offizielle Referenzen

Verwandte Begriffe