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 – Aktuelle Ausgabe
Die Ausgabe 2023 fasst alle früheren Versionen (MISRA C:2012 + Amendments 1–4 + Technical Corrigenda) in einem einzigen, umfassenden Standard zusammen. Zu den wichtigsten Neuerungen gehören:
| Neuerung | Beschreibung |
|---|---|
| Unterstützung für C11/C18 | Richtlinien für _Atomic, _Static_assert, anonyme Strukturen/Unions |
| Regeln zur Nebenläufigkeit | Neue Richtlinien für Multithreading und atomare Operationen – entscheidend für RTOS-basierte eingebettete Systeme |
| Fokus auf Cybersicherheit | Verbesserte Abstimmung mit den Anforderungen von CWE, CERT C und der Cyberresilienz-Verordnung (CRA) |
| 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 | Empfiehlt MISRA C für ASIL A–D |
| 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 50128 | Bahntechnik | Empfiehlt eine eingeschränkte Sprachuntermenge |
Verwandte Begriffe
- CRA – Die EU-Cyberresilienz-Verordnung fordert sichere Entwicklungspraktiken; MISRA C bietet das Rahmenwerk für die Implementierung.
- 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