Blog

MISRA C 2012 vs. MISRA C2 - Wie man umsteigt

Secure Code Warrior
Veröffentlicht Aug 17, 2021

Auf Secure Code Warrior sind wir stets bestrebt, unser Schulungsangebot zu erweitern. Um Entwicklern und Sicherheitsverantwortlichen die Möglichkeit zu geben, sichere eingebettete Systeme zu entwickeln, befassen wir uns mit der Welt der Sicherheit eingebetteter Systeme. In diesem Beitrag werden wir über den MISRA C 2012-Standard sprechen und darüber, warum seine Einhaltung für die Entwicklung sicherer eingebetteter Systeme notwendig ist.

Beim Schreiben von Code in C ist es sehr einfach, Dinge zu implementieren, die scheinbar richtig aussehen, aber von Grund auf falsch sind. Ihr Code lässt sich vielleicht gut kompilieren und läuft sogar eine gewisse Zeit lang gut. Aber derselbe Code kann abstürzen oder ein undefiniertes Verhalten zeigen, wenn die Eingabegröße und/oder der Speicher wächst. So kann beispielsweise eine bestimmte Eingabezahl einen Überlauf einer Ganzzahl verursachen oder eine bestimmte Zeichenfolge ein Array aus dem Rahmen fallen lassen.

Hier kann der MISRA C-Codierungsstandard helfen. Die Regeln, Richtlinien und Best Practices des Standards ermöglichen es Entwicklern, sicheren und zuverlässigen C-Code für die Embedded-Entwicklung zu schreiben. 

MISRA C 2012, die neueste Version des Standards, fügt neue Regeln hinzu, verbessert die bestehenden und beseitigt einige Unstimmigkeiten. Wenn Sie noch eine ältere Version verwenden, wäre jetzt ein guter Zeitpunkt für einen Wechsel. 

Was ist der MISRA C-Codierungsstandard?

Der MISRA C-Standard enthält Richtlinien für Codesicherheit, Portabilität und Zuverlässigkeit für die Programmiersprache C. Der erste Satz von Richtlinien wurde 1998 veröffentlicht, der sich speziell auf die Sprache C bezog. 

Seitdem entwickelt das MISRA-Konsortium jedoch auch Codierungsstandards für C++. Jedes MISRA-C-Dokument enthält eine Reihe von Regeln, nicht konforme Beispiele und ausführliche Abschnitte über die Hintergrundinformationen, die zur Entwicklung dieser Regeln beigetragen haben.

C und C++ sind die am häufigsten verwendeten Sprachen für die Entwicklung eingebetteter Software. Einer der Hauptgründe dafür ist, dass sie schnell sind, da sie nur 1 oder 2 Abstraktionsebenen über der Maschinensprache haben. Das bedeutet aber auch, dass das Schreiben von sicherem Code, insbesondere in C, schwierig und fehleranfällig ist. In den meisten Hochsprachen wie Java und C# muss man sich zum Beispiel keine Gedanken über triviale Dinge wie Garbage Collection oder dynamische Typisierung machen. 

In C gibt es jedoch keine vordefinierte Möglichkeit, Speicherplatz zu sammeln, d. h. wenn Sie einen Speicherbereich für eine Datenstruktur zuweisen, müssen Sie ihn manuell freigeben, sobald Sie ihn nicht mehr benötigen. Wenn Sie das nicht tun, gibt C im Gegensatz zu anderen Sprachen den Speicher nicht frei, was zu einem Speicherleck führen würde.

MISRA C 2004 (C2) vs. MISRA C 2012 (C3) - Was hat sich geändert?

MISRA C: 2012, auch bekannt als C3, wurde erstmals im April 2013 veröffentlicht. Mit dem Wissen aus der Arbeit von Tausenden von Menschen und Organisationen fügt C3 neue Regeln hinzu, verbessert die Erläuterungen und Hintergründe einiger bestehender Regeln und schließt einige Schlupflöcher.

C3 unterstützt die C99-Version der Sprache, behält aber auch Regeln für die ältere ISO C90 bei. Das Hauptaugenmerk von C3 lag darauf, die üblichen Kosten für die Durchsetzung von Regeln zu senken und gleichzeitig die Verwendung der Sprache C in kritischen Systemen sicherer zu machen. Daher ist es ratsam, auf die neue Norm umzusteigen, falls Sie dies noch nicht getan haben.

Im Folgenden finden Sie eine Liste der wichtigsten Änderungen:

  • Behebung von Problemen, die in der Version von 2004 gefunden wurden.
  • Erhebliche Erhöhung der Anzahl der entscheidbaren Regeln. Eine Regel ist entscheidbar, wenn ein Analysewerkzeug dabei helfen kann, die Konformität mit ihr festzustellen.
  • Regeln werden als "erforderlich", "beratend" oder "verbindlich" eingestuft. Obligatorische Regeln dürfen unter keinen Umständen gebrochen werden. Erforderliche und beratende Regeln können in besonderen Fällen verletzt werden, sofern die Verletzung gerechtfertigt ist.
  • Es wurde eine Anleitung hinzugefügt, wie Regeln auf automatisch generierten Code anzuwenden sind. Dies ist sehr wichtig, da für von Menschen geschriebenen Code nicht immer dieselben Richtlinien gelten wie für den von einem Tool generierten Code.
  • Beseitigung der übermäßig verallgemeinerten Regeln, die ein vernünftiges Benutzerverhalten verbieten. Früher wurde z.B. empfohlen, überhaupt keine Makros zu verwenden, da sie zu verschiedenen Schwierigkeiten und Verwirrungen führen können (Makros können nicht debuggt werden, Makros haben keine Namespaces usw.). Dies verhinderte die Verwendung von Makros, selbst in Situationen, in denen sie eine elegante, sichere und bequeme Lösung darstellen könnten. In MISRA C: 2012 wurden neue Regeln für Makros eingeführt, die es ermöglichen, sie vorsichtig zu verwenden, wann immer dies möglich ist. Der folgende Auszug aus einem MISRA C-Dokument empfiehlt die Verwendung eines Makros anstelle einer Funktion.

MISRA C-Regeln in Aktion

Genug geredet, jetzt ist es an der Zeit, einige MISRA C-Regeln in die Praxis umzusetzen, mit Beispielen, wie sie angewendet werden.

Verwendung kompatibler Typen als Zeigerargumente für memcpy, memmove und memcmp

Die Standardbibliotheksfunktionen memcpy, memmove und memcmp führen byteweise Verschiebungen oder Vergleiche der angegebenen Anzahl von Bytes durch. Die Regel 21.15 des MISRA C 2012-Standards schreibt vor, dass die beiden Funktionsparameter Zeiger desselben Typs sein müssen. Ein Funktionsaufruf mit inkompatiblen Zeigertypen könnte auf einen Fehler hindeuten. 

Betrachten Sie die folgende Abbildung aus dem offiziellen MISRA-Konformitätsdokument. Die Regel ist erforderlich, entscheidbar und gilt sowohl für C90 als auch für C99.

Screenshot der MISRA C-Regel 21.15

Ein Beispiel folgt der Regelbeschreibung.

Screenshot einer nicht konformen Lösung.

Da die Objekte von unterschiedlichem Typ sind (uint8_t und uint16_t), ist dies eine nicht konforme Lösung, wie Sie sehen können.

Funktionen zur Behandlung von Zeichenketten, die keine Länge als Eingabe benötigen, dürfen nicht zu einem Out-of-Bound-Zugriff führen

String handling functions from <string.h> that don’t take the length as an input, shouldn’t result in out-of-bound access. The relevant functions are: strcat, strchr, strcmp, strcoll, strcpy, strcspn, strlen, strpbrk, strrchr, strspn, strrstr, and strtok. The rule is mandatory, meaning it can never be breached, under any circumstances. It applies to both C90 and C99, and is undecidable.

Screenshot von MISRA C Regel 21.17.

Das entsprechende Beispiel lautet:

Screenshot eines korrekten Beispiels von Funktionen zur Behandlung von Zeichenketten

Wie Sie sehen können, kopiert strcpy in der Funktion f1 über die Länge der Zeichenkette hinaus, die nur 5 Zeichen enthalten kann. Wir haben auch eine konforme und sichere Verwendung von strcpy, bei der die Zeichenkette nur kopiert wird, wenn der Inhalt von "str" passt.

Extern empfangene Daten validieren

Dir 4.14 empfiehlt, die Gültigkeit der von "externen" Quellen empfangenen Daten zu überprüfen. Externer Input kann sein:

  • Lesen aus einer Datei.
  • Lesen aus einer Umgebungsvariablen.
  • Jede Benutzereingabe.
  • Alles, was über einen Kommunikationskanal empfangen wird. Z. B. über eine TCP-Verbindung oder HTTP-API usw.

Diese Richtlinie fällt in die Kategorie " erforderlich" und gilt sowohl für C90 als auch für C99. Der Grund dafür ist, dass ein Programm keine Kontrolle über die von externen Quellen empfangenen Daten hat, was bedeutet, dass diese Daten ungültig oder bösartig sein können. Ein Programm erwartet z. B., dass der Benutzer eine Zahl eingibt, aber der Benutzer gibt eine Zeichenkette ein. Bevor das Programm die Eingabe verarbeitet, muss es überprüfen, ob es sich tatsächlich um eine Zahl handelt.

Die Gültigkeit der aus externen Quellen erhaltenen Werte ist zu überprüfen

Wie man zu MISRA C 2012 wechselt

Die Umstellung auf MISRA C 2012 erfordert eine Aktualisierung Ihres Kodierrichtlinien-Dokuments. Wenn Sie kein solches Dokument verwenden und sich stattdessen auf ein statisches Analysetool verlassen (was die empfohlene Wahl ist), müssen Sie sich möglicherweise eine neuere Version des Tools besorgen. Hier sind drei Tools, die die Einhaltung von MISRA C 2012 überprüfen:

  1. Cppcheck ist ein Open-Source-Tool, das auf MISRA-Regeln prüfen und auch verschiedene Arten von Fehlern aufspüren kann.
  2. PC-lint Plus ist ein kostenpflichtiges Tool, das eine 30-tägige Testphase beinhaltet. Es prüft nicht nur die Einhaltung von MISRA C, sondern kann auch dabei helfen, potenzielle Bugs und Schwachstellen zu erkennen.
  3. CodeSonar ist ein weiteres Tool, das sowohl die MISRA C- als auch die C++-Konformität überprüft.

Es gibt auch einige Compiler, die auf die Einhaltung von MISRA testen können. Falls eine Regelverletzung festgestellt wird, werden entsprechende Warnungen oder Ausnahmen ausgegeben. Green Hills Software bietet z. B. Compiler mit Unterstützung für alle MISRA-Standards, sowohl für 32-Bit- als auch für 64-Bit-Architekturen.

Verwendung von Secure Code Warrior für die Weiterbildung von Entwicklern in MISRA C

Das Vorzeigeprodukt vonSecure Code Warrior- learning platform - bietet zahlreiche interaktive Herausforderungen, courses, und Bewertungen, die Entwicklern helfen können, sicheren C/C++-Code zu schreiben. Der Inhalt der Plattform ist rahmenspezifisch und sehr ansprechend. Unsere C/C++:Embed-Codieraufgaben wurden sowohl von MISRA C, AUTOSAR C++ (MISRA C++) als auch von IEC inspiriert.

Entwickler können sich auf eine persönliche Lernreise begeben, auf der sie C/C++-spezifische Schwachstellen erkennen und - was noch wichtiger ist - lernen, diese Fehler zu beheben. In diesem Prozess können die Entwickler ihre Fortschritte verfolgen, um ihre Schwachstellen zu erkennen, und sogar einen freundschaftlichen Programmierwettbewerb mit Gleichgesinnten austragen. Erfahren Sie mehr darüber, wie wir die Automobil- und Transportbranche mit unseren Lösungen unterstützen.

Möchten Sie herausfinden, wie interaktiv und einbettungsorientiert unsere Challenges sind? Probieren Sie noch heute einige C/C++:Embed-Herausforderungen auf learning platform aus!

Ressource anzeigen
Ressource anzeigen

In diesem Beitrag vergleichen wir den MISRA C 2012 Standard mit C2 und führen Sie durch die Umstellung auf den neuen Standard. Wir erklären, warum die Einhaltung des MISRA-Standards notwendig ist, um sichere eingebettete Systeme zu entwickeln.

Interessiert an mehr?

Secure Code Warrior macht sicheres Programmieren zu einer positiven und fesselnden Erfahrung für Entwickler, die ihre Fähigkeiten ausbauen. Wir leiten jeden Programmierer auf seinem bevorzugten Lernpfad an, damit sicherheitskompetente Entwickler zu den täglichen Superhelden unserer vernetzten Welt werden.

Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Demo buchen
Weitergeben:
Autor
Secure Code Warrior
Veröffentlicht Aug 17, 2021

Secure Code Warrior macht sicheres Programmieren zu einer positiven und fesselnden Erfahrung für Entwickler, die ihre Fähigkeiten ausbauen. Wir leiten jeden Programmierer auf seinem bevorzugten Lernpfad an, damit sicherheitskompetente Entwickler zu den täglichen Superhelden unserer vernetzten Welt werden.

Secure Code Warrior baut eine Kultur von sicherheitsorientierten Entwicklern auf, indem es ihnen die Fähigkeiten vermittelt, sicher zu programmieren. Unser Flaggschiff Agile Learning Platform bietet relevante fähigkeitsbasierte Pfade, praktische Übungen missions und kontextbezogene Tools, mit denen Entwickler ihre Fähigkeiten zum Schreiben von sicherem Code schnell erlernen, aufbauen und anwenden können.

Weitergeben:

Auf Secure Code Warrior sind wir stets bestrebt, unser Schulungsangebot zu erweitern. Um Entwicklern und Sicherheitsverantwortlichen die Möglichkeit zu geben, sichere eingebettete Systeme zu entwickeln, befassen wir uns mit der Welt der Sicherheit eingebetteter Systeme. In diesem Beitrag werden wir über den MISRA C 2012-Standard sprechen und darüber, warum seine Einhaltung für die Entwicklung sicherer eingebetteter Systeme notwendig ist.

Beim Schreiben von Code in C ist es sehr einfach, Dinge zu implementieren, die scheinbar richtig aussehen, aber von Grund auf falsch sind. Ihr Code lässt sich vielleicht gut kompilieren und läuft sogar eine gewisse Zeit lang gut. Aber derselbe Code kann abstürzen oder ein undefiniertes Verhalten zeigen, wenn die Eingabegröße und/oder der Speicher wächst. So kann beispielsweise eine bestimmte Eingabezahl einen Überlauf einer Ganzzahl verursachen oder eine bestimmte Zeichenfolge ein Array aus dem Rahmen fallen lassen.

Hier kann der MISRA C-Codierungsstandard helfen. Die Regeln, Richtlinien und Best Practices des Standards ermöglichen es Entwicklern, sicheren und zuverlässigen C-Code für die Embedded-Entwicklung zu schreiben. 

MISRA C 2012, die neueste Version des Standards, fügt neue Regeln hinzu, verbessert die bestehenden und beseitigt einige Unstimmigkeiten. Wenn Sie noch eine ältere Version verwenden, wäre jetzt ein guter Zeitpunkt für einen Wechsel. 

Was ist der MISRA C-Codierungsstandard?

Der MISRA C-Standard enthält Richtlinien für Codesicherheit, Portabilität und Zuverlässigkeit für die Programmiersprache C. Der erste Satz von Richtlinien wurde 1998 veröffentlicht, der sich speziell auf die Sprache C bezog. 

Seitdem entwickelt das MISRA-Konsortium jedoch auch Codierungsstandards für C++. Jedes MISRA-C-Dokument enthält eine Reihe von Regeln, nicht konforme Beispiele und ausführliche Abschnitte über die Hintergrundinformationen, die zur Entwicklung dieser Regeln beigetragen haben.

C und C++ sind die am häufigsten verwendeten Sprachen für die Entwicklung eingebetteter Software. Einer der Hauptgründe dafür ist, dass sie schnell sind, da sie nur 1 oder 2 Abstraktionsebenen über der Maschinensprache haben. Das bedeutet aber auch, dass das Schreiben von sicherem Code, insbesondere in C, schwierig und fehleranfällig ist. In den meisten Hochsprachen wie Java und C# muss man sich zum Beispiel keine Gedanken über triviale Dinge wie Garbage Collection oder dynamische Typisierung machen. 

In C gibt es jedoch keine vordefinierte Möglichkeit, Speicherplatz zu sammeln, d. h. wenn Sie einen Speicherbereich für eine Datenstruktur zuweisen, müssen Sie ihn manuell freigeben, sobald Sie ihn nicht mehr benötigen. Wenn Sie das nicht tun, gibt C im Gegensatz zu anderen Sprachen den Speicher nicht frei, was zu einem Speicherleck führen würde.

MISRA C 2004 (C2) vs. MISRA C 2012 (C3) - Was hat sich geändert?

MISRA C: 2012, auch bekannt als C3, wurde erstmals im April 2013 veröffentlicht. Mit dem Wissen aus der Arbeit von Tausenden von Menschen und Organisationen fügt C3 neue Regeln hinzu, verbessert die Erläuterungen und Hintergründe einiger bestehender Regeln und schließt einige Schlupflöcher.

C3 unterstützt die C99-Version der Sprache, behält aber auch Regeln für die ältere ISO C90 bei. Das Hauptaugenmerk von C3 lag darauf, die üblichen Kosten für die Durchsetzung von Regeln zu senken und gleichzeitig die Verwendung der Sprache C in kritischen Systemen sicherer zu machen. Daher ist es ratsam, auf die neue Norm umzusteigen, falls Sie dies noch nicht getan haben.

Im Folgenden finden Sie eine Liste der wichtigsten Änderungen:

  • Behebung von Problemen, die in der Version von 2004 gefunden wurden.
  • Erhebliche Erhöhung der Anzahl der entscheidbaren Regeln. Eine Regel ist entscheidbar, wenn ein Analysewerkzeug dabei helfen kann, die Konformität mit ihr festzustellen.
  • Regeln werden als "erforderlich", "beratend" oder "verbindlich" eingestuft. Obligatorische Regeln dürfen unter keinen Umständen gebrochen werden. Erforderliche und beratende Regeln können in besonderen Fällen verletzt werden, sofern die Verletzung gerechtfertigt ist.
  • Es wurde eine Anleitung hinzugefügt, wie Regeln auf automatisch generierten Code anzuwenden sind. Dies ist sehr wichtig, da für von Menschen geschriebenen Code nicht immer dieselben Richtlinien gelten wie für den von einem Tool generierten Code.
  • Beseitigung der übermäßig verallgemeinerten Regeln, die ein vernünftiges Benutzerverhalten verbieten. Früher wurde z.B. empfohlen, überhaupt keine Makros zu verwenden, da sie zu verschiedenen Schwierigkeiten und Verwirrungen führen können (Makros können nicht debuggt werden, Makros haben keine Namespaces usw.). Dies verhinderte die Verwendung von Makros, selbst in Situationen, in denen sie eine elegante, sichere und bequeme Lösung darstellen könnten. In MISRA C: 2012 wurden neue Regeln für Makros eingeführt, die es ermöglichen, sie vorsichtig zu verwenden, wann immer dies möglich ist. Der folgende Auszug aus einem MISRA C-Dokument empfiehlt die Verwendung eines Makros anstelle einer Funktion.

MISRA C-Regeln in Aktion

Genug geredet, jetzt ist es an der Zeit, einige MISRA C-Regeln in die Praxis umzusetzen, mit Beispielen, wie sie angewendet werden.

Verwendung kompatibler Typen als Zeigerargumente für memcpy, memmove und memcmp

Die Standardbibliotheksfunktionen memcpy, memmove und memcmp führen byteweise Verschiebungen oder Vergleiche der angegebenen Anzahl von Bytes durch. Die Regel 21.15 des MISRA C 2012-Standards schreibt vor, dass die beiden Funktionsparameter Zeiger desselben Typs sein müssen. Ein Funktionsaufruf mit inkompatiblen Zeigertypen könnte auf einen Fehler hindeuten. 

Betrachten Sie die folgende Abbildung aus dem offiziellen MISRA-Konformitätsdokument. Die Regel ist erforderlich, entscheidbar und gilt sowohl für C90 als auch für C99.

Screenshot der MISRA C-Regel 21.15

Ein Beispiel folgt der Regelbeschreibung.

Screenshot einer nicht konformen Lösung.

Da die Objekte von unterschiedlichem Typ sind (uint8_t und uint16_t), ist dies eine nicht konforme Lösung, wie Sie sehen können.

Funktionen zur Behandlung von Zeichenketten, die keine Länge als Eingabe benötigen, dürfen nicht zu einem Out-of-Bound-Zugriff führen

String handling functions from <string.h> that don’t take the length as an input, shouldn’t result in out-of-bound access. The relevant functions are: strcat, strchr, strcmp, strcoll, strcpy, strcspn, strlen, strpbrk, strrchr, strspn, strrstr, and strtok. The rule is mandatory, meaning it can never be breached, under any circumstances. It applies to both C90 and C99, and is undecidable.

Screenshot von MISRA C Regel 21.17.

Das entsprechende Beispiel lautet:

Screenshot eines korrekten Beispiels von Funktionen zur Behandlung von Zeichenketten

Wie Sie sehen können, kopiert strcpy in der Funktion f1 über die Länge der Zeichenkette hinaus, die nur 5 Zeichen enthalten kann. Wir haben auch eine konforme und sichere Verwendung von strcpy, bei der die Zeichenkette nur kopiert wird, wenn der Inhalt von "str" passt.

Extern empfangene Daten validieren

Dir 4.14 empfiehlt, die Gültigkeit der von "externen" Quellen empfangenen Daten zu überprüfen. Externer Input kann sein:

  • Lesen aus einer Datei.
  • Lesen aus einer Umgebungsvariablen.
  • Jede Benutzereingabe.
  • Alles, was über einen Kommunikationskanal empfangen wird. Z. B. über eine TCP-Verbindung oder HTTP-API usw.

Diese Richtlinie fällt in die Kategorie " erforderlich" und gilt sowohl für C90 als auch für C99. Der Grund dafür ist, dass ein Programm keine Kontrolle über die von externen Quellen empfangenen Daten hat, was bedeutet, dass diese Daten ungültig oder bösartig sein können. Ein Programm erwartet z. B., dass der Benutzer eine Zahl eingibt, aber der Benutzer gibt eine Zeichenkette ein. Bevor das Programm die Eingabe verarbeitet, muss es überprüfen, ob es sich tatsächlich um eine Zahl handelt.

Die Gültigkeit der aus externen Quellen erhaltenen Werte ist zu überprüfen

Wie man zu MISRA C 2012 wechselt

Die Umstellung auf MISRA C 2012 erfordert eine Aktualisierung Ihres Kodierrichtlinien-Dokuments. Wenn Sie kein solches Dokument verwenden und sich stattdessen auf ein statisches Analysetool verlassen (was die empfohlene Wahl ist), müssen Sie sich möglicherweise eine neuere Version des Tools besorgen. Hier sind drei Tools, die die Einhaltung von MISRA C 2012 überprüfen:

  1. Cppcheck ist ein Open-Source-Tool, das auf MISRA-Regeln prüfen und auch verschiedene Arten von Fehlern aufspüren kann.
  2. PC-lint Plus ist ein kostenpflichtiges Tool, das eine 30-tägige Testphase beinhaltet. Es prüft nicht nur die Einhaltung von MISRA C, sondern kann auch dabei helfen, potenzielle Bugs und Schwachstellen zu erkennen.
  3. CodeSonar ist ein weiteres Tool, das sowohl die MISRA C- als auch die C++-Konformität überprüft.

Es gibt auch einige Compiler, die auf die Einhaltung von MISRA testen können. Falls eine Regelverletzung festgestellt wird, werden entsprechende Warnungen oder Ausnahmen ausgegeben. Green Hills Software bietet z. B. Compiler mit Unterstützung für alle MISRA-Standards, sowohl für 32-Bit- als auch für 64-Bit-Architekturen.

Verwendung von Secure Code Warrior für die Weiterbildung von Entwicklern in MISRA C

Das Vorzeigeprodukt vonSecure Code Warrior- learning platform - bietet zahlreiche interaktive Herausforderungen, courses, und Bewertungen, die Entwicklern helfen können, sicheren C/C++-Code zu schreiben. Der Inhalt der Plattform ist rahmenspezifisch und sehr ansprechend. Unsere C/C++:Embed-Codieraufgaben wurden sowohl von MISRA C, AUTOSAR C++ (MISRA C++) als auch von IEC inspiriert.

Entwickler können sich auf eine persönliche Lernreise begeben, auf der sie C/C++-spezifische Schwachstellen erkennen und - was noch wichtiger ist - lernen, diese Fehler zu beheben. In diesem Prozess können die Entwickler ihre Fortschritte verfolgen, um ihre Schwachstellen zu erkennen, und sogar einen freundschaftlichen Programmierwettbewerb mit Gleichgesinnten austragen. Erfahren Sie mehr darüber, wie wir die Automobil- und Transportbranche mit unseren Lösungen unterstützen.

Möchten Sie herausfinden, wie interaktiv und einbettungsorientiert unsere Challenges sind? Probieren Sie noch heute einige C/C++:Embed-Herausforderungen auf learning platform aus!

Ressource anzeigen
Ressource anzeigen

Füllen Sie das folgende Formular aus, um den Bericht herunterzuladen

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Senden
Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.

Auf Secure Code Warrior sind wir stets bestrebt, unser Schulungsangebot zu erweitern. Um Entwicklern und Sicherheitsverantwortlichen die Möglichkeit zu geben, sichere eingebettete Systeme zu entwickeln, befassen wir uns mit der Welt der Sicherheit eingebetteter Systeme. In diesem Beitrag werden wir über den MISRA C 2012-Standard sprechen und darüber, warum seine Einhaltung für die Entwicklung sicherer eingebetteter Systeme notwendig ist.

Beim Schreiben von Code in C ist es sehr einfach, Dinge zu implementieren, die scheinbar richtig aussehen, aber von Grund auf falsch sind. Ihr Code lässt sich vielleicht gut kompilieren und läuft sogar eine gewisse Zeit lang gut. Aber derselbe Code kann abstürzen oder ein undefiniertes Verhalten zeigen, wenn die Eingabegröße und/oder der Speicher wächst. So kann beispielsweise eine bestimmte Eingabezahl einen Überlauf einer Ganzzahl verursachen oder eine bestimmte Zeichenfolge ein Array aus dem Rahmen fallen lassen.

Hier kann der MISRA C-Codierungsstandard helfen. Die Regeln, Richtlinien und Best Practices des Standards ermöglichen es Entwicklern, sicheren und zuverlässigen C-Code für die Embedded-Entwicklung zu schreiben. 

MISRA C 2012, die neueste Version des Standards, fügt neue Regeln hinzu, verbessert die bestehenden und beseitigt einige Unstimmigkeiten. Wenn Sie noch eine ältere Version verwenden, wäre jetzt ein guter Zeitpunkt für einen Wechsel. 

Was ist der MISRA C-Codierungsstandard?

Der MISRA C-Standard enthält Richtlinien für Codesicherheit, Portabilität und Zuverlässigkeit für die Programmiersprache C. Der erste Satz von Richtlinien wurde 1998 veröffentlicht, der sich speziell auf die Sprache C bezog. 

Seitdem entwickelt das MISRA-Konsortium jedoch auch Codierungsstandards für C++. Jedes MISRA-C-Dokument enthält eine Reihe von Regeln, nicht konforme Beispiele und ausführliche Abschnitte über die Hintergrundinformationen, die zur Entwicklung dieser Regeln beigetragen haben.

C und C++ sind die am häufigsten verwendeten Sprachen für die Entwicklung eingebetteter Software. Einer der Hauptgründe dafür ist, dass sie schnell sind, da sie nur 1 oder 2 Abstraktionsebenen über der Maschinensprache haben. Das bedeutet aber auch, dass das Schreiben von sicherem Code, insbesondere in C, schwierig und fehleranfällig ist. In den meisten Hochsprachen wie Java und C# muss man sich zum Beispiel keine Gedanken über triviale Dinge wie Garbage Collection oder dynamische Typisierung machen. 

In C gibt es jedoch keine vordefinierte Möglichkeit, Speicherplatz zu sammeln, d. h. wenn Sie einen Speicherbereich für eine Datenstruktur zuweisen, müssen Sie ihn manuell freigeben, sobald Sie ihn nicht mehr benötigen. Wenn Sie das nicht tun, gibt C im Gegensatz zu anderen Sprachen den Speicher nicht frei, was zu einem Speicherleck führen würde.

MISRA C 2004 (C2) vs. MISRA C 2012 (C3) - Was hat sich geändert?

MISRA C: 2012, auch bekannt als C3, wurde erstmals im April 2013 veröffentlicht. Mit dem Wissen aus der Arbeit von Tausenden von Menschen und Organisationen fügt C3 neue Regeln hinzu, verbessert die Erläuterungen und Hintergründe einiger bestehender Regeln und schließt einige Schlupflöcher.

C3 unterstützt die C99-Version der Sprache, behält aber auch Regeln für die ältere ISO C90 bei. Das Hauptaugenmerk von C3 lag darauf, die üblichen Kosten für die Durchsetzung von Regeln zu senken und gleichzeitig die Verwendung der Sprache C in kritischen Systemen sicherer zu machen. Daher ist es ratsam, auf die neue Norm umzusteigen, falls Sie dies noch nicht getan haben.

Im Folgenden finden Sie eine Liste der wichtigsten Änderungen:

  • Behebung von Problemen, die in der Version von 2004 gefunden wurden.
  • Erhebliche Erhöhung der Anzahl der entscheidbaren Regeln. Eine Regel ist entscheidbar, wenn ein Analysewerkzeug dabei helfen kann, die Konformität mit ihr festzustellen.
  • Regeln werden als "erforderlich", "beratend" oder "verbindlich" eingestuft. Obligatorische Regeln dürfen unter keinen Umständen gebrochen werden. Erforderliche und beratende Regeln können in besonderen Fällen verletzt werden, sofern die Verletzung gerechtfertigt ist.
  • Es wurde eine Anleitung hinzugefügt, wie Regeln auf automatisch generierten Code anzuwenden sind. Dies ist sehr wichtig, da für von Menschen geschriebenen Code nicht immer dieselben Richtlinien gelten wie für den von einem Tool generierten Code.
  • Beseitigung der übermäßig verallgemeinerten Regeln, die ein vernünftiges Benutzerverhalten verbieten. Früher wurde z.B. empfohlen, überhaupt keine Makros zu verwenden, da sie zu verschiedenen Schwierigkeiten und Verwirrungen führen können (Makros können nicht debuggt werden, Makros haben keine Namespaces usw.). Dies verhinderte die Verwendung von Makros, selbst in Situationen, in denen sie eine elegante, sichere und bequeme Lösung darstellen könnten. In MISRA C: 2012 wurden neue Regeln für Makros eingeführt, die es ermöglichen, sie vorsichtig zu verwenden, wann immer dies möglich ist. Der folgende Auszug aus einem MISRA C-Dokument empfiehlt die Verwendung eines Makros anstelle einer Funktion.

MISRA C-Regeln in Aktion

Genug geredet, jetzt ist es an der Zeit, einige MISRA C-Regeln in die Praxis umzusetzen, mit Beispielen, wie sie angewendet werden.

Verwendung kompatibler Typen als Zeigerargumente für memcpy, memmove und memcmp

Die Standardbibliotheksfunktionen memcpy, memmove und memcmp führen byteweise Verschiebungen oder Vergleiche der angegebenen Anzahl von Bytes durch. Die Regel 21.15 des MISRA C 2012-Standards schreibt vor, dass die beiden Funktionsparameter Zeiger desselben Typs sein müssen. Ein Funktionsaufruf mit inkompatiblen Zeigertypen könnte auf einen Fehler hindeuten. 

Betrachten Sie die folgende Abbildung aus dem offiziellen MISRA-Konformitätsdokument. Die Regel ist erforderlich, entscheidbar und gilt sowohl für C90 als auch für C99.

Screenshot der MISRA C-Regel 21.15

Ein Beispiel folgt der Regelbeschreibung.

Screenshot einer nicht konformen Lösung.

Da die Objekte von unterschiedlichem Typ sind (uint8_t und uint16_t), ist dies eine nicht konforme Lösung, wie Sie sehen können.

Funktionen zur Behandlung von Zeichenketten, die keine Länge als Eingabe benötigen, dürfen nicht zu einem Out-of-Bound-Zugriff führen

String handling functions from <string.h> that don’t take the length as an input, shouldn’t result in out-of-bound access. The relevant functions are: strcat, strchr, strcmp, strcoll, strcpy, strcspn, strlen, strpbrk, strrchr, strspn, strrstr, and strtok. The rule is mandatory, meaning it can never be breached, under any circumstances. It applies to both C90 and C99, and is undecidable.

Screenshot von MISRA C Regel 21.17.

Das entsprechende Beispiel lautet:

Screenshot eines korrekten Beispiels von Funktionen zur Behandlung von Zeichenketten

Wie Sie sehen können, kopiert strcpy in der Funktion f1 über die Länge der Zeichenkette hinaus, die nur 5 Zeichen enthalten kann. Wir haben auch eine konforme und sichere Verwendung von strcpy, bei der die Zeichenkette nur kopiert wird, wenn der Inhalt von "str" passt.

Extern empfangene Daten validieren

Dir 4.14 empfiehlt, die Gültigkeit der von "externen" Quellen empfangenen Daten zu überprüfen. Externer Input kann sein:

  • Lesen aus einer Datei.
  • Lesen aus einer Umgebungsvariablen.
  • Jede Benutzereingabe.
  • Alles, was über einen Kommunikationskanal empfangen wird. Z. B. über eine TCP-Verbindung oder HTTP-API usw.

Diese Richtlinie fällt in die Kategorie " erforderlich" und gilt sowohl für C90 als auch für C99. Der Grund dafür ist, dass ein Programm keine Kontrolle über die von externen Quellen empfangenen Daten hat, was bedeutet, dass diese Daten ungültig oder bösartig sein können. Ein Programm erwartet z. B., dass der Benutzer eine Zahl eingibt, aber der Benutzer gibt eine Zeichenkette ein. Bevor das Programm die Eingabe verarbeitet, muss es überprüfen, ob es sich tatsächlich um eine Zahl handelt.

Die Gültigkeit der aus externen Quellen erhaltenen Werte ist zu überprüfen

Wie man zu MISRA C 2012 wechselt

Die Umstellung auf MISRA C 2012 erfordert eine Aktualisierung Ihres Kodierrichtlinien-Dokuments. Wenn Sie kein solches Dokument verwenden und sich stattdessen auf ein statisches Analysetool verlassen (was die empfohlene Wahl ist), müssen Sie sich möglicherweise eine neuere Version des Tools besorgen. Hier sind drei Tools, die die Einhaltung von MISRA C 2012 überprüfen:

  1. Cppcheck ist ein Open-Source-Tool, das auf MISRA-Regeln prüfen und auch verschiedene Arten von Fehlern aufspüren kann.
  2. PC-lint Plus ist ein kostenpflichtiges Tool, das eine 30-tägige Testphase beinhaltet. Es prüft nicht nur die Einhaltung von MISRA C, sondern kann auch dabei helfen, potenzielle Bugs und Schwachstellen zu erkennen.
  3. CodeSonar ist ein weiteres Tool, das sowohl die MISRA C- als auch die C++-Konformität überprüft.

Es gibt auch einige Compiler, die auf die Einhaltung von MISRA testen können. Falls eine Regelverletzung festgestellt wird, werden entsprechende Warnungen oder Ausnahmen ausgegeben. Green Hills Software bietet z. B. Compiler mit Unterstützung für alle MISRA-Standards, sowohl für 32-Bit- als auch für 64-Bit-Architekturen.

Verwendung von Secure Code Warrior für die Weiterbildung von Entwicklern in MISRA C

Das Vorzeigeprodukt vonSecure Code Warrior- learning platform - bietet zahlreiche interaktive Herausforderungen, courses, und Bewertungen, die Entwicklern helfen können, sicheren C/C++-Code zu schreiben. Der Inhalt der Plattform ist rahmenspezifisch und sehr ansprechend. Unsere C/C++:Embed-Codieraufgaben wurden sowohl von MISRA C, AUTOSAR C++ (MISRA C++) als auch von IEC inspiriert.

Entwickler können sich auf eine persönliche Lernreise begeben, auf der sie C/C++-spezifische Schwachstellen erkennen und - was noch wichtiger ist - lernen, diese Fehler zu beheben. In diesem Prozess können die Entwickler ihre Fortschritte verfolgen, um ihre Schwachstellen zu erkennen, und sogar einen freundschaftlichen Programmierwettbewerb mit Gleichgesinnten austragen. Erfahren Sie mehr darüber, wie wir die Automobil- und Transportbranche mit unseren Lösungen unterstützen.

Möchten Sie herausfinden, wie interaktiv und einbettungsorientiert unsere Challenges sind? Probieren Sie noch heute einige C/C++:Embed-Herausforderungen auf learning platform aus!

Auf Ressource zugreifen

Klicken Sie auf den unten stehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.

Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Bericht ansehenDemo buchen
PDF herunterladen
Ressource anzeigen
Weitergeben:
Interessiert an mehr?

Weitergeben:
Autor
Secure Code Warrior
Veröffentlicht Aug 17, 2021

Secure Code Warrior macht sicheres Programmieren zu einer positiven und fesselnden Erfahrung für Entwickler, die ihre Fähigkeiten ausbauen. Wir leiten jeden Programmierer auf seinem bevorzugten Lernpfad an, damit sicherheitskompetente Entwickler zu den täglichen Superhelden unserer vernetzten Welt werden.

Secure Code Warrior baut eine Kultur von sicherheitsorientierten Entwicklern auf, indem es ihnen die Fähigkeiten vermittelt, sicher zu programmieren. Unser Flaggschiff Agile Learning Platform bietet relevante fähigkeitsbasierte Pfade, praktische Übungen missions und kontextbezogene Tools, mit denen Entwickler ihre Fähigkeiten zum Schreiben von sicherem Code schnell erlernen, aufbauen und anwenden können.

Weitergeben:

Auf Secure Code Warrior sind wir stets bestrebt, unser Schulungsangebot zu erweitern. Um Entwicklern und Sicherheitsverantwortlichen die Möglichkeit zu geben, sichere eingebettete Systeme zu entwickeln, befassen wir uns mit der Welt der Sicherheit eingebetteter Systeme. In diesem Beitrag werden wir über den MISRA C 2012-Standard sprechen und darüber, warum seine Einhaltung für die Entwicklung sicherer eingebetteter Systeme notwendig ist.

Beim Schreiben von Code in C ist es sehr einfach, Dinge zu implementieren, die scheinbar richtig aussehen, aber von Grund auf falsch sind. Ihr Code lässt sich vielleicht gut kompilieren und läuft sogar eine gewisse Zeit lang gut. Aber derselbe Code kann abstürzen oder ein undefiniertes Verhalten zeigen, wenn die Eingabegröße und/oder der Speicher wächst. So kann beispielsweise eine bestimmte Eingabezahl einen Überlauf einer Ganzzahl verursachen oder eine bestimmte Zeichenfolge ein Array aus dem Rahmen fallen lassen.

Hier kann der MISRA C-Codierungsstandard helfen. Die Regeln, Richtlinien und Best Practices des Standards ermöglichen es Entwicklern, sicheren und zuverlässigen C-Code für die Embedded-Entwicklung zu schreiben. 

MISRA C 2012, die neueste Version des Standards, fügt neue Regeln hinzu, verbessert die bestehenden und beseitigt einige Unstimmigkeiten. Wenn Sie noch eine ältere Version verwenden, wäre jetzt ein guter Zeitpunkt für einen Wechsel. 

Was ist der MISRA C-Codierungsstandard?

Der MISRA C-Standard enthält Richtlinien für Codesicherheit, Portabilität und Zuverlässigkeit für die Programmiersprache C. Der erste Satz von Richtlinien wurde 1998 veröffentlicht, der sich speziell auf die Sprache C bezog. 

Seitdem entwickelt das MISRA-Konsortium jedoch auch Codierungsstandards für C++. Jedes MISRA-C-Dokument enthält eine Reihe von Regeln, nicht konforme Beispiele und ausführliche Abschnitte über die Hintergrundinformationen, die zur Entwicklung dieser Regeln beigetragen haben.

C und C++ sind die am häufigsten verwendeten Sprachen für die Entwicklung eingebetteter Software. Einer der Hauptgründe dafür ist, dass sie schnell sind, da sie nur 1 oder 2 Abstraktionsebenen über der Maschinensprache haben. Das bedeutet aber auch, dass das Schreiben von sicherem Code, insbesondere in C, schwierig und fehleranfällig ist. In den meisten Hochsprachen wie Java und C# muss man sich zum Beispiel keine Gedanken über triviale Dinge wie Garbage Collection oder dynamische Typisierung machen. 

In C gibt es jedoch keine vordefinierte Möglichkeit, Speicherplatz zu sammeln, d. h. wenn Sie einen Speicherbereich für eine Datenstruktur zuweisen, müssen Sie ihn manuell freigeben, sobald Sie ihn nicht mehr benötigen. Wenn Sie das nicht tun, gibt C im Gegensatz zu anderen Sprachen den Speicher nicht frei, was zu einem Speicherleck führen würde.

MISRA C 2004 (C2) vs. MISRA C 2012 (C3) - Was hat sich geändert?

MISRA C: 2012, auch bekannt als C3, wurde erstmals im April 2013 veröffentlicht. Mit dem Wissen aus der Arbeit von Tausenden von Menschen und Organisationen fügt C3 neue Regeln hinzu, verbessert die Erläuterungen und Hintergründe einiger bestehender Regeln und schließt einige Schlupflöcher.

C3 unterstützt die C99-Version der Sprache, behält aber auch Regeln für die ältere ISO C90 bei. Das Hauptaugenmerk von C3 lag darauf, die üblichen Kosten für die Durchsetzung von Regeln zu senken und gleichzeitig die Verwendung der Sprache C in kritischen Systemen sicherer zu machen. Daher ist es ratsam, auf die neue Norm umzusteigen, falls Sie dies noch nicht getan haben.

Im Folgenden finden Sie eine Liste der wichtigsten Änderungen:

  • Behebung von Problemen, die in der Version von 2004 gefunden wurden.
  • Erhebliche Erhöhung der Anzahl der entscheidbaren Regeln. Eine Regel ist entscheidbar, wenn ein Analysewerkzeug dabei helfen kann, die Konformität mit ihr festzustellen.
  • Regeln werden als "erforderlich", "beratend" oder "verbindlich" eingestuft. Obligatorische Regeln dürfen unter keinen Umständen gebrochen werden. Erforderliche und beratende Regeln können in besonderen Fällen verletzt werden, sofern die Verletzung gerechtfertigt ist.
  • Es wurde eine Anleitung hinzugefügt, wie Regeln auf automatisch generierten Code anzuwenden sind. Dies ist sehr wichtig, da für von Menschen geschriebenen Code nicht immer dieselben Richtlinien gelten wie für den von einem Tool generierten Code.
  • Beseitigung der übermäßig verallgemeinerten Regeln, die ein vernünftiges Benutzerverhalten verbieten. Früher wurde z.B. empfohlen, überhaupt keine Makros zu verwenden, da sie zu verschiedenen Schwierigkeiten und Verwirrungen führen können (Makros können nicht debuggt werden, Makros haben keine Namespaces usw.). Dies verhinderte die Verwendung von Makros, selbst in Situationen, in denen sie eine elegante, sichere und bequeme Lösung darstellen könnten. In MISRA C: 2012 wurden neue Regeln für Makros eingeführt, die es ermöglichen, sie vorsichtig zu verwenden, wann immer dies möglich ist. Der folgende Auszug aus einem MISRA C-Dokument empfiehlt die Verwendung eines Makros anstelle einer Funktion.

MISRA C-Regeln in Aktion

Genug geredet, jetzt ist es an der Zeit, einige MISRA C-Regeln in die Praxis umzusetzen, mit Beispielen, wie sie angewendet werden.

Verwendung kompatibler Typen als Zeigerargumente für memcpy, memmove und memcmp

Die Standardbibliotheksfunktionen memcpy, memmove und memcmp führen byteweise Verschiebungen oder Vergleiche der angegebenen Anzahl von Bytes durch. Die Regel 21.15 des MISRA C 2012-Standards schreibt vor, dass die beiden Funktionsparameter Zeiger desselben Typs sein müssen. Ein Funktionsaufruf mit inkompatiblen Zeigertypen könnte auf einen Fehler hindeuten. 

Betrachten Sie die folgende Abbildung aus dem offiziellen MISRA-Konformitätsdokument. Die Regel ist erforderlich, entscheidbar und gilt sowohl für C90 als auch für C99.

Screenshot der MISRA C-Regel 21.15

Ein Beispiel folgt der Regelbeschreibung.

Screenshot einer nicht konformen Lösung.

Da die Objekte von unterschiedlichem Typ sind (uint8_t und uint16_t), ist dies eine nicht konforme Lösung, wie Sie sehen können.

Funktionen zur Behandlung von Zeichenketten, die keine Länge als Eingabe benötigen, dürfen nicht zu einem Out-of-Bound-Zugriff führen

String handling functions from <string.h> that don’t take the length as an input, shouldn’t result in out-of-bound access. The relevant functions are: strcat, strchr, strcmp, strcoll, strcpy, strcspn, strlen, strpbrk, strrchr, strspn, strrstr, and strtok. The rule is mandatory, meaning it can never be breached, under any circumstances. It applies to both C90 and C99, and is undecidable.

Screenshot von MISRA C Regel 21.17.

Das entsprechende Beispiel lautet:

Screenshot eines korrekten Beispiels von Funktionen zur Behandlung von Zeichenketten

Wie Sie sehen können, kopiert strcpy in der Funktion f1 über die Länge der Zeichenkette hinaus, die nur 5 Zeichen enthalten kann. Wir haben auch eine konforme und sichere Verwendung von strcpy, bei der die Zeichenkette nur kopiert wird, wenn der Inhalt von "str" passt.

Extern empfangene Daten validieren

Dir 4.14 empfiehlt, die Gültigkeit der von "externen" Quellen empfangenen Daten zu überprüfen. Externer Input kann sein:

  • Lesen aus einer Datei.
  • Lesen aus einer Umgebungsvariablen.
  • Jede Benutzereingabe.
  • Alles, was über einen Kommunikationskanal empfangen wird. Z. B. über eine TCP-Verbindung oder HTTP-API usw.

Diese Richtlinie fällt in die Kategorie " erforderlich" und gilt sowohl für C90 als auch für C99. Der Grund dafür ist, dass ein Programm keine Kontrolle über die von externen Quellen empfangenen Daten hat, was bedeutet, dass diese Daten ungültig oder bösartig sein können. Ein Programm erwartet z. B., dass der Benutzer eine Zahl eingibt, aber der Benutzer gibt eine Zeichenkette ein. Bevor das Programm die Eingabe verarbeitet, muss es überprüfen, ob es sich tatsächlich um eine Zahl handelt.

Die Gültigkeit der aus externen Quellen erhaltenen Werte ist zu überprüfen

Wie man zu MISRA C 2012 wechselt

Die Umstellung auf MISRA C 2012 erfordert eine Aktualisierung Ihres Kodierrichtlinien-Dokuments. Wenn Sie kein solches Dokument verwenden und sich stattdessen auf ein statisches Analysetool verlassen (was die empfohlene Wahl ist), müssen Sie sich möglicherweise eine neuere Version des Tools besorgen. Hier sind drei Tools, die die Einhaltung von MISRA C 2012 überprüfen:

  1. Cppcheck ist ein Open-Source-Tool, das auf MISRA-Regeln prüfen und auch verschiedene Arten von Fehlern aufspüren kann.
  2. PC-lint Plus ist ein kostenpflichtiges Tool, das eine 30-tägige Testphase beinhaltet. Es prüft nicht nur die Einhaltung von MISRA C, sondern kann auch dabei helfen, potenzielle Bugs und Schwachstellen zu erkennen.
  3. CodeSonar ist ein weiteres Tool, das sowohl die MISRA C- als auch die C++-Konformität überprüft.

Es gibt auch einige Compiler, die auf die Einhaltung von MISRA testen können. Falls eine Regelverletzung festgestellt wird, werden entsprechende Warnungen oder Ausnahmen ausgegeben. Green Hills Software bietet z. B. Compiler mit Unterstützung für alle MISRA-Standards, sowohl für 32-Bit- als auch für 64-Bit-Architekturen.

Verwendung von Secure Code Warrior für die Weiterbildung von Entwicklern in MISRA C

Das Vorzeigeprodukt vonSecure Code Warrior- learning platform - bietet zahlreiche interaktive Herausforderungen, courses, und Bewertungen, die Entwicklern helfen können, sicheren C/C++-Code zu schreiben. Der Inhalt der Plattform ist rahmenspezifisch und sehr ansprechend. Unsere C/C++:Embed-Codieraufgaben wurden sowohl von MISRA C, AUTOSAR C++ (MISRA C++) als auch von IEC inspiriert.

Entwickler können sich auf eine persönliche Lernreise begeben, auf der sie C/C++-spezifische Schwachstellen erkennen und - was noch wichtiger ist - lernen, diese Fehler zu beheben. In diesem Prozess können die Entwickler ihre Fortschritte verfolgen, um ihre Schwachstellen zu erkennen, und sogar einen freundschaftlichen Programmierwettbewerb mit Gleichgesinnten austragen. Erfahren Sie mehr darüber, wie wir die Automobil- und Transportbranche mit unseren Lösungen unterstützen.

Möchten Sie herausfinden, wie interaktiv und einbettungsorientiert unsere Challenges sind? Probieren Sie noch heute einige C/C++:Embed-Herausforderungen auf learning platform aus!

Inhaltsübersicht

PDF herunterladen
Ressource anzeigen
Interessiert an mehr?

Secure Code Warrior macht sicheres Programmieren zu einer positiven und fesselnden Erfahrung für Entwickler, die ihre Fähigkeiten ausbauen. Wir leiten jeden Programmierer auf seinem bevorzugten Lernpfad an, damit sicherheitskompetente Entwickler zu den täglichen Superhelden unserer vernetzten Welt werden.

Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Demo buchenHerunterladen
Weitergeben:
Ressourcendrehscheibe

Ressourcen für den Einstieg

Mehr Beiträge
Ressourcendrehscheibe

Ressourcen für den Einstieg

Mehr Beiträge