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:
| Neuerung | Beschreibung |
|---|---|
| Unterstützung für C11/C18 | Richtlinien für _Generic, _Noreturn, _Alignas, Atomics und Threads |
| Regeln zur Nebenläufigkeit | Neue Richtlinien für Multithreading und atomare Operationen – entscheidend für RTOS-basierte eingebettete Systeme |
| Fokus auf Cybersicherheit | Veröffentlichte Abdeckungszuordnungen zu CERT C und ISO/IEC 17961 (eine CWE-Zuordnung kam mit MISRA C:2025 hinzu) |
| Einheitliches Dokument | Alle Amendments und Corrigenda in einer einzigen Spezifikation zusammengefasst |
Klassifizierung der Richtlinien
| Kategorie | Bedeutung | Abweichung 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
| Aspekt | Vorgehensweise |
|---|---|
| Statische Analysewerkzeuge | PC-lint, Polyspace, Coverity, Parasoft, LDRA, QA-C |
| CI/CD-Integration | Automatisierte MISRA-Prüfung bei jedem Commit |
| Abweichungsprozess | Formale Dokumentation der Abweichung mit Analyse der Sicherheitsauswirkungen |
| Konformitätsmatrix | Zuordnung 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:
| Norm | Anwendungsbereich | MISRA-Anforderung |
|---|---|---|
| ISO 26262 | Automobilindustrie | Verlangt Programmierrichtlinien; nennt MISRA C als Beispiel für C |
| IEC 61508 | Industrie | Empfiehlt eine eingeschränkte Untermenge von C |
| DO-178C | Luft- und Raumfahrt | Programmierstandards erforderlich (MISRA wird häufig verwendet) |
| IEC 62304 | Medizintechnik | Erfordert dokumentierte Programmierstandards |
| EN 50716 (ersetzt EN 50128) | Bahntechnik | Empfiehlt 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
- MISRA C – Guidelines for the Use of the C Language in Critical Systems – MISRA Consortium