ISO 21434 -Konformität für Softwareentwicklung in der Automobilindustrie

ISO 21434 -Konformität für Softwareentwicklung in der Automobilindustrie

Der vollständige Titel lautet ISO/SAE 21434: 2021 „Road vehicles – Cybersecurity engineering“ und wurde im August 2021 veröffentlicht.

ISO 21434 enthält eine Reihe von Leitlinien und Anforderungen für die Entwicklung von „sicheren“ Straßenfahrzeugen.

Die Bewertung von Sicherheitsrisiken, die Implementierung von Sicherheitskontrollen und des Managements von Sicherheitsvorfällen wurde dabei miteingeschlossen.

Dies soll den Herstellern dabei helfen, ihre Fahrzeuge gegen Cyberangriffe und andere Formen böswilliger Aktivitäten zu schützen sowie das Vertrauen in die Sicherheit von Straßenfahrzeugen fördern.

Sicherheit ist seit langem eines der wichtigsten Kriterien in der Softwareentwicklung der Automobilindustrie.

Ein unkontrollierbares Fahrzeug hätte gefährliche Auswirkungen auf Verkehrsteilnehmer (und andere Beteiligte).

Die bekannte Norm für funktionale Sicherheit (FuSa) für Kraftfahrzeuge – ISO 26262 – wurde seit ihrer ursprünglichen Veröffentlichung im Jahr 2011 weitgehend übernommen.

Ein sicheres Automobilsystem, das sich wie vorgesehen und dokumentiert verhält, ist Grundvoraussetzung.

Wir müssen jedoch auch den Fall in Betracht ziehen, dass ein System, das sich wie beabsichtigt verhält, von einem externen schädlichen Dritten angesprochen und gesteuert werden könnte.

Dies stellt ein Sicherheitsproblem dar. Und genau hier soll die ISO 21434 helfen.

Was verlangt ISO 21434?

Wie die ISO-Norm 26262, ist auch die ISO 21434 eine sehr breit angelegte Norm.

Sie deckt den gesamten Sicherheitslebenszyklus von Kfz-Bordsystemen ab: vom Entwurf über die Entwicklung und Konstruktion bis hin zur Produktion, Wartung und sogar zur Außerbetriebnahme der Systeme.

Für jede dieser Phasen gibt es eine Reihe von Grundanforderungen.

Die Abschnitte sind in der folgenden Tabelle aus der Norm zusammengefasst:

Figure 1: ISO 21434 Structure (Copyright International Standards Organisation (ISO))

Für Softwareentwickler ist vor allem der Abschnitt 10: Produktentwicklung innerhalb der Entwicklungsphase von Bedeutung.

Dieser Punkt umfasst das Design und die Entwicklung der Software (Unterabschnitt 10.4.1) sowie die Integration und Verifizierung der Software (Unterabschnitt 10.4.2).

Jeder dieser Unterpunkte enthält Anforderungen in Bezug auf die Softwareentwicklung und die zu erwartenden Ergebnisse.

Abschnitt 11: Cybersicherheitsvalidierung innerhalb der Entwicklungsphase.

Dieser Punkt enthält Anforderungen zur Überprüfung der Ergebnisse aus Abschnitt 10.

Hier soll sichergestellt werden, dass die Cybersicherheitsziele für das fertige Produkt erreicht wurden.  

Auswirkungen der Anforderungen auf die Softwareentwicklung

Ein wesentlicher Teil der Anforderungen von ISO 21434 Abs.10 in Bezug auf die Softwaresicherheit, konzentriert sich auf die Überprüfung des zu erstellenden Codes sowie das Vorhandensein von Sicherheitsschwachstellen.

Die Grundannahme ist, je komplexer der Code, desto wahrscheinlicher ist das Vorhandensein von Code Sicherheitslücken.

Eine gängige Lösung ist hier die Verwendung von Codierungsstandards. In diesem Fall sicherheitsorientierte Codierungsrichtlinien.

Im Wesentlichen kapseln diese die Erfahrungen der Entwickler in Regeln, die dann auf jeden Code angewendet werden können.

So werden Fälle von komplexem oder unsicherem Code erkannt.

Es gibt eine Reihe von sicherheitsorientierten Codierungsrichtlinien, die international bekannt und anerkannt sind, darunter: OWASP, CWE Top25 und CERT.

Für Embedded Software, wie sie in On-Board-Automobilsystemen zu finden ist, werden jedoch CERT C, CERT C++ und MISRA C 2012 allgemein als besser geeignet angesehen.

Neben der Qualität decken diese auch die Sicherheit der Version Amendment 1 ab.

Die ISO 21434-Anforderung [RQ-10-05] aus Abs.10 benennen Kriterien (siehe [RQ-10-04]) für geeignete Entwurfs-, Modellierungs- oder Programmiersprachen in der Cybersicherheit.

Kriterien, die nicht durch die Sprache selbst abgedeckt werden können, müssen durch Entwurfs-, Modellierungs- und Codierungsrichtlinien oder durch die Entwicklungsumgebung abgedeckt werden.

Anschließend wird ein Beispiel für solche Codierungsrichtlinien angeführt (Beispiel 5): Verwendung von MISRA C:2012 oder CERT C für sichere Codierung in der Programmiersprache „C“.

Codierungsrichtlinien wie CERT C und MISRA C 2012 umfassen viele Regeln: etwa 100 im Fall von CERT C und fast 200 im Fall von MISRA C 2012.

Auf diese Art kann sichergestellt werden, dass der Code auf potenzielle Sicherheitslücken geprüft wird.

Schwierig wird es für die Person, die für die Überprüfung des Codes verantwortlich ist.

Sich mehr als 100 Regeln zu merken und zu versuchen, diese auf Hunderte von Zeilen neuen Codes oder gar auf das gesamte Projekt, das aus Tausenden oder gar Millionen von Codezeilen besteht anzuwenden, ist eine Meisterleistung. Hier kann ein Code-Checker für die statische Analyse oder ein Tool für den statischen Anwendungstest helfen.

Die Codeprüfung wird automatisiert und der Prüfer bekommt eine Liste von Verstößen zur Verfügung gestellt, auf die er seine Aufmerksamkeit richten muss.

Eine geführte Codeprüfung, bei der ein Großteil der mühsamen Sucharbeit für Sie erledigt wird.

Ein weiterer wichtiger Aspekt von ISO 21434 Abs. 10 – wie die Anforderungen [RQ-10-02], [RQ-10-03] und [RQ-10-07] – ist die Notwendigkeit, die Architektur des Systems im Hinblick auf anfällige Komponenten und Schnittstellen zu verstehen bzw. zu bewerten.

In fast jeder modernen Codebasis, in der die Entwicklung oft parallel und mit vielen Schnittstellen zu anderen verwandten Komponenten oder der Außenwelt erfolgt – ist dies eine nicht-triviale Aufgabe.

Wie Emenda helfen kann

Statische Analysetools oder SAST-Tools spielen eine wichtige Rolle, wenn es darum geht, von Anfang an einen qualitativ hochwertigen, lesbaren und sicheren Code zu erstellen.

Im Vergleich zu dynamischen Anwendungstests (Dynamic Application Security Test, DAST) sind sie relativ kostengünstig.

In der Anwendung liefern sie den Entwicklern direkt umsetzbares Feedback.

Darüber hinaus sind statische Analysetools wie SciTools Understand Codecheck, Klocwork und Helix QAC in der Lage, viele der sicherheitsorientierten Codierungsrichtlinien – wie CERT C und C++ und MISRA C 2012 – durchzusetzen.

Hier finden Sie eine Liste zur Abdeckung der Normen durch SciTools.

Neben der Überprüfung des Codes und der Einhaltung der Codierungsstandards, ist das SciTools Understand-Toolset auch in der Lage, Architekturvisualisierungen von Codebasen zu erstellen.

Die Sicherheitsbewertungen und die Abhängigkeitsanalyse der Komponenten werden innerhalb des Systems unterstützt, wie es die ISO 21434 vorschreibt.

Figure 2: Screenshot: Understand Architectural Visualization (Copyright SciTools)

Schließlich bietet die Secure Code Warrior Entwickler-Lernplattform kontextabhängige Echtzeit-Schulungen.

Entwicklern wird eine sicherheitsorientierte Denkweise vermittelt, welche sie benötigen, um ihren Code zu schreiben und so letztendlich ihr Unternehmen zu schützen.

Wenn es um Sicherheit geht, sind Entwickler die „First Line of Defence“.

Wie geht’s weiter?

Setzen Sie sich noch heute mit uns in Verbindung, um eine kostenlose Testversion zu erhalten.

Gerne stellen wir Ihnen weitere Informationen über unsere Produkte und Dienstleistungen zur Verfügung.

Wir beraten Sie gerne, wie Emenda Sie bei der Einhaltung der ISO 21434 unterstützen kann.

Referenzen & nützliche Links

  1. ISO/SAE 21434:2021: https://www.iso.org/obp/ui/#iso:std:iso-sae:21434:ed-1:v1:en
  2. SciTools Code Check for MISRA C: https://support.scitools.com/support/solutions/articles/70000583267-misra-c-and-misra-c-
  3. SciTools Codecheck: https://support.scitools.com/support/solutions/articles/70000583282-codecheck-overview
  4. Secure Code Warrior for compliance: https://www.securecodewarrior.com/solutions/achieve-compliance