Strengere Regeln für Pointer-Umwandlungen, Multithreading und automatisch generierten Code: MISRA C:2025 bringt entscheidende Neuerungen für sicherheitskritische Embedded-Software – mit Vorteilen für Wartbarkeit, Vorhersagbarkeit und Konformität.
Sicherheitskritische Embedded-Systeme, etwa im Automobilbereich, erfordern maximale Codezuverlässigkeit. MISRA C:2025 liefert dazu präzisere Regeln für Speicherzugriffe, Parallelität und automatisierten Code – für robuste, zertifizierbare Software.
(Bild: visoot - stock.adobe.com (bearbeitet))
Die MISRA C:2025 Richtlinien sind die neueste Entwicklung, um den sicheren und zuverlässigen Einsatz der Programmiersprache C in kritischen Systemen zu sichern. Von der Software für die Automobilindustrie bis hin zu Steuerungen für die Luft- und Raumfahrt – Branchen, die auf embedded Systeme angewiesen sind, benötigen strenge Regeln, damit sie nicht ausfallen oder Schwachstellen haben. MISRA C:2025 baut auf jahrzehntelanger Erfahrung auf und enthält aktualisierte Richtlinien und Regeln, die auf die aktuellen Herausforderungen zugeschnitten sind. MISRA C:2025 wurde gemeinsam von Branchenführern, akademischen Einrichtungen und Tool-Anbietern wie Parasoft entwickelt und spiegelt ein tiefes kollektives Verständnis von Software-Zuverlässigkeit wider.
MISRA C:2025 verstehen
Die Version 2025 erklärt, worauf es ankommt: Vorhersagbarkeit, Sicherheit und Wartbarkeit. Um die Vorhersagbarkeit zu gewährleisten, schränken die aktualisierten Richtlinien mehrdeutige oder implementierungsabhängige Sprachfunktionen ein und stellen so sicher, dass der Code auf verschiedenen Compilern und Plattformen gleich funktioniert. Durch die gezielte Adressierung von Schwachstellen, um ausnutzbare Schwachstellen zu reduzieren, wird die Sicherheit wird verbessert. Der Standard erleichtert die Wartbarkeit des Codes, indem er eine klare Struktur und Dokumentation vorschreibt. Darüber hinaus optimiert er das Debugging und vereinfacht ein langfristig effizientes Code-Management. Zusammengenommen stärken diese Verbesserungen die Rolle von MISRA C bei der Förderung robuster, sicherer und nachhaltiger Softwareentwicklungspraktiken.
Warum ein Upgrade?
MISRA C:2023 ist gut für die Entwicklung sicherheitskritischer Systeme - aber die Version 2025 geht noch einen Schritt weiter und bringt wichtige Verbesserungen, die auf die aktuellen Herausforderungen in der Softwareentwicklung zugeschnitten sind. Da embedded Systeme zunehmend Multithreading nutzen, schließt MISRA C:2025 Lücken von älteren Versionen. Diese Updates helfen, das Risiko von Race Conditions, Deadlocks und undefiniertem Verhalten, insbesondere in Echtzeitumgebungen, zu reduzieren.
Wichtige Neuerungen und Funktionen
Unter Beibehaltung der Grundprinzipien früherer Versionen hat MISRA C:2025 mehrere wichtige Aktualisierungen:
Regel 19.3: Ein Verbundelement darf nicht verwendet werden, wenn es nicht vorher festgelegt wurde.
Anwendung der Regel 19.3 von MISRA C:2025 im praktischen Kontext.
(Bild: Parasoft)
Diese Regel verhindert das Aufrufen eines Verbundelements, das nicht als letztes geschrieben wurde und verhindert dadurch undefiniertes Verhalten durch Type Punning. Die neue Version MISRA C:2025 verbietet das Lesen inaktiver Verbundelemente. Es gibt aber Ausnahmen für den Zugriff auf Byte-Ebene. Zum Beispiel darf man auf die Bytes eines Verbundelements zugreifen, wenn man Low-Level-Operationen ausführt.
Konvertierungen zwischen Pointern und Ganzzahlen
Regel 11.4: Man sollte keine Konvertierung zwischen einem Pointer auf ein Objekt und einem Ganzzahltyp durchführen.
Die vormals nur „empfohlene" Regel zur Konvertierung zwischen Pointern und Ganzzahlen ist in MISRA C:2025 nun „erforderlich".
(Bild: Parasoft)
Die neue Version von MISRA C:2025 ändert Regel von „empfohlen" auf „erforderlich". Pointer und Ganzzahlen können je nach Architektur unterschiedlich groß sein (z. B. 32-Bit- vs. 64-Bit-Systeme). Wird ein Pointer in einer zu kleinen Ganzzahl gespeichert (z. B. in einer int), verkürzt sich die Adresse. Das führt zu undefiniertem Verhalten.
Ausnahmefall nach MISRA C:2025.
(Bild: Parasoft)
Eine Ausnahme („compliant by excemption") bilden die Varianten intptr_t/uintptr_t. Sie sind so ausgelegt, dass sie beliebige Objektzeiger aufnehmen können. In MISRA C:2023 galt ein solcher Sonderfall noch als „non-compliant".
Verwendung von nicht-eindeutigen Include-Guard-Identifikatoren
Richtlinie 4.10: Man muss sicherstellen, dass der Inhalt einer Header-Datei nicht mehrmals eingebunden wird.
Beispiel der MISRA C:2025-Direktive 4.10 in der Anwendung.
(Bild: Parasoft)
MISRA C:2025 ist strenger und sorgt für eine robuste Verwaltung von Header-Dateien. Dafür sind global eindeutige Guard-Identifikatoren vorgeschrieben. Entwickler können das Risiko von Fehlern bei der Kompilierung und die Sicherheit ihrer Codes erhöhen, wenn sie bestimmte Regeln für Namen verwenden. Es gibt aber eine Ausnahme: intptr_t/uintptr_t kann beliebige Objektzeiger aufnehmen.
MISRA C:2023 – Unklar, ob konform oder nicht-konform
MISRA C:2025 – Nicht-konform
Sofortige Umwandlung des zugewiesenen Speichers
Regel 11.5: Eine Umwandlung von einem Zeiger auf void in einen Zeiger auf ein Objekt sollte nicht durchgeführt werden.
Regel in MISRA C:2025 zur Umwandlung bestimmter Objektzeiger.
(Bild: Parasoft)
MISRA C:2025 sorgt dafür, dass bestimmte Objektzeiger nicht mehr in void* (generische Zeiger) umgewandelt werden können. Das erhöht die Typsicherheit in sicherheitskritischen Systemen, und verhindert, dass Daten falsch gelesen werden, dass sie als andere Typen gelesen werden, und dass der Puffer überläuft. MISRA C:2025 erlaubt, den neu zugewiesenen Speicherzeiger sofort in einen Zeiger auf einen Objekttyp umzuwandeln.
Beenden von Switch-Klauseln
Regel 16.3: Eine unbeschränkte Break-Anweisung muss jede Switch-Klausel beenden.
Vergleich der Anwendung der Regel in MISRA C:2023 (links) gegenüber MISRA C:2025 (rechts).
(Bild: Parasoft)
Jede Case- oder Default-Klausel in einer Switch-Anweisung beendet den Ausführungsfluss explizit. Fall-Through kann zu Fehlern im Code führen. Das ist besonders in sicherheitskritischen Systemen ein Problem, denn dort ist die Vorhersagbarkeit des Codes von größter Bedeutung. MISRA C:2025 erlaubt aber auch andere Arten der Beendigung (z.B. return, abort() oder exit()), aber unbeabsichtigtes Fall-Through ist weiterhin verboten. Das macht es flexibler, aber sicherer - und entspricht der tatsächlichen Programmierpraxis in kritischen Systemen.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.
Übernahme und Verwendung
1.5.3: Automatisch generierter Code
Mit diesem wichtigen Update wird erklärt, wie die MISRA C:2025-Richtlinien für automatisch generierten Code angewendet werden (z.B. durch modellbasierte Designtools wie Simulink, MATLAB oder benutzerdefinierte Codegeneratoren). Dieser Abschnitt ist besonders wichtig für Branchen, die automatisch generierten Code brauchen, beispielsweise die Automobilindustrie und die Luft- und Raumfahrt. So können sie die Sicherheitsstandards wie ISO 26262 oder IEC 61508 einhalten. Automatisch generierter Code muss daher genauso wie manuell geschriebener Code mit MISRA C:2025 konform sein.
Der automatisch generierte Code wird jetzt so definiert:
[...] Ein qualifizierter Codegenerator erzeugt C-Code. Dieser übersetzt ein Eingabeprogramm in eine andere Programmiersprache. Es wird eine vollständige Bedeutungssprache zwischen den Sprachkonstrukten der Eingabesprache und der Sprache C hergestellt
und NICHT [...] Codefragmente, die durch Zufallsprozesse, statistische Sprachmodelle oder maschinelles Lernen erzeugt werden.
Es gibt einen Unterschied zu KI-Modellen, die zur Codegenerierung verwendet werden, da sie spezifische Risiken im Vergleich zu herkömmlichen Codegeneratoren bergen. Beispielsweise kann die KI keine inkonsistenten oder unsicheren Codemuster erzeugen (z. B. unsichere Zeigerarithmetik, Magische Zahlen). Anders als qualifizierte Tools (z. B. Simulink) können KI-Modelle die MISRA-Regeln nicht standardmäßig durchsetzen. KI-generierter Code kann nur dann in MISRA C:2025-Projekten verwendet werden, wenn er die gleichen Prüfungen durchläuft wie von Menschen geschriebener Code. Wenn es Abweichungen gibt, muss man sie genau dokumentieren und begründen. Menschliche Experten müssen die Sicherheit und Korrektheit überprüfen.
Warum Konformität wichtig ist
Die Konformität mit MISRA C:2025 ist ein Muss für Unternehmen, die strenge funktionale Sicherheitsstandards wie ISO 26262 (Automobilindustrie), IEC 62304 (Medizintechnik), DO-178C (Luftfahrt) und andere erfüllen wollen.
Wenn man sich an diese Regeln hält, muss man weniger Geld für die Zertifizierung ausgeben, weil man dann zeigt, dass man sich an die Regeln für gutes Programmieren hält. Der Code lässt sich besser auf verschiedenen Plattformen und mit verschiedenen Compilern verwenden. Es ist möglich, Analyse-Tools wie die von Parasoft im Entwicklungszyklus einzusetzen, um Probleme früh zu erkennen.
Deutschlands Leitkongress der Embedded-Softwarebranche
Bewerben Sie sich als Sprecher
Gestalten Sie den ESE Kongress aktiv mit! Es gibt viele gute Gründe, warum Sie sich mit Ihrem eigenen Vortrag oder Seminar am Programm beteiligen sollten. Teilen Sie Ihr Wissen, Ihre Erfahrung und Ihre Erkenntnisse mit Ihren Branchenkollegen. Nutzen Sie den ESE Kongress als bewährte Plattform, um sich als Software-Experte einen Namen zu machen und Ihren Marktwert zu steigern, und präsentieren Sie Ihre Lösungen einem hochwertigen Fachpublikum.
MISRA C:2025 in den Entwicklungsprozess implementieren
Um MISRA C:2025 erfolgreich in den Workflow der Softwareentwicklung zu integrieren, sollte man die Richtlinien schon zu Beginn des Projekts einführen, um unnötige Kosten zu vermeiden.
Automatisierte Tools: Mit diesen Tools wird die Einhaltung der Richtlinien automatisch überprüft. Beispielsweise hilft der GenAI Agent for VS Code von Parasoft Entwicklern dabei, Code-Verletzungen beheben. Diese KI-basierte Erweiterung ist in Microsoft Copilot integriert und arbeitet mit dem statischen Analysetool von Parasoft zusammen. So erklärt sie Verstöße im Kontext und liefert detaillierte Einblicke in die Übereinstimmung mit MISRA C:2025 und den Richtlinien des Unternehmens. Außerdem gibt sie Empfehlungen für Korrekturen, die auf Branchenstandards zugeschnitten sind, und automatisiert Korrekturen. Indem sie Codeänderungen direkt in der IDE vorschlägt, entfällt das manuelle Wechseln zwischen verschiedenen Kontexten. Dieser geschlossene Workflow reduziert die Entwicklungszeit um bis zu 30% und ermöglicht es Teams, konformen, qualitativ hochwertigen Code direkt an der Quelle zu erstellen. Führende Unternehmen, darunter ein großer Automobilhersteller und ein weltweit tätiges Halbleiterunternehmen, testen das Tool bereits, um MISRA C:2025 schneller einzuführen.
Entwicklungsteams schulen: Entwickler müssen über die Gründe für die MISRA-Regeln informiert werden, um die Einhaltung zu fördern und Widerstände zu minimieren.
Abweichungen dokumentieren: Notwendige Abweichungen von den MISRA-Compliance-Richtlinien müssen streng begründet werden.
MISRA C:2025 ist nicht nur eine Checkliste für die Einhaltung von Vorschriften. Es ist ein strategischer Wegweiser für Branchen, die sich in einer Zeit beispielloser technologischer Komplexität zurechtfinden müssen. Da immer mehr Industriezweige autonome Systeme und KI-gesteuerte Tools wie den GenAI Agent for VS Code von Parasoft einsetzen, sind die Anforderungen des Standards an Sicherheit und Zuverlässigkeit nicht mehr optional, sondern existenziell. Lösungen, die KI-gestützte Diagnosen mit nahtloser IDE-Integration kombinieren (wie bei Parasoft), zeigen, wie Innovationen die Konformität optimieren und gleichzeitig die Arbeitsabläufe angesichts des rasanten Wandels zukunftssicher machen können.
Durch die Ausrichtung auf neue Paradigmen wie deterministische Parallelität, speichersichere Architekturen und überprüfbare Traceability schließt der Standard die Lücke zwischen alten Praktiken und zukunftssicherer Technologie. Die gemeinsame Entwicklung durch Wissenschaftler, führenden Unternehmen und Tool-Innovatoren stellt sicher, dass er in einer Welt mit immer mehr Sicherheitslücken und strengeren Vorschriften relevant bleibt.
Die Einführung von MISRA C:2025 ist eine Investition in die Anpassungsfähigkeit von Unternehmen. Sie schützt vor Veralterung, beschleunigt die Einhaltung sich entwickelnder Sicherheitszertifizierungen und fördert das Vertrauen in einer zunehmend von Software abhängigen Welt. Während die Grenzen zwischen physischen und digitalen Systemen verschwimmen, bleibt MISRA C ein Eckpfeiler für die Entwicklung von Code, der nicht nur funktioniert, sondern auch Bestand hat. (sg)
* Ricardo Camacho ist Director of Safety & Security Compliance bei Parasoft