Zuverlässige Embedded-Systeme-Software

Statische Analysen für funktionale Sicherheit

18. Februar 2019, 14:09 Uhr | Manne Kreuzer
CodeSonar von Grammatech kann sowohl Quellcode als auch binär vorliegenden Code analysieren.
© Bilder: Grammatech

Systeme, die Sicherheitsfunktionen erfüllen, müssen besonders streng auf Zuverlässigkeit und Fehlerfreiheit überprüft werden. Zahlreiche Normen machen hierzu strikte Vorgaben. Hier kann die statische Code-Analyse den Entwicklern einiges an Arbeit abnehmen.

Diesen Artikel anhören

Joachim Ringelnatz dachte bei »sicher ist, dass nichts sicher ist, selbst das nicht« zwar nicht an Software-Entwicklung, ist aber uneingeschränkt darauf anwendbar. Denn es ist eine Binsenweisheit, dass es in absehbarer Zeit keine komplexe, fehlerfreie Software geben kann. »Vor allem in Hinblick auf sicherheitsrelevante Systeme bedeutet dies, dass Fehlfunktionen nie völlig ausgeschlossen werden können«, betont Mark Hermeling, Senior Director Product Marketing von Grammatech. »Entsprechend hoch sind die Anforderungen, die die einschlägigen Normen an die funktionale Sicherheit stellen.«

Die Norm IEC 61508 zur funktionalen Sicherheit für elektrische, elektronische und programmierbare elektronische Systeme (E/E/PE-Systeme) und die daraus abgeleiteten Normen für spezifische Branchen legen großen Wert auf Qualitätssicherung und Risikomanagement über den gesamten Lebenszyklus der Systeme hinweg. Das Maß dabei ist die sogenannte Sicherheitsintegrität. Diese ist definiert als die „Wahrscheinlichkeit, dass ein sicherheitsbezogenes System die geforderten Sicherheitsfunktionen unter allen festgelegten Bedingungen innerhalb eines festgelegten Zeitraums anforderungsgemäß ausführt“. Für die Berechnung der entsprechenden Risikoklassen ist neben der Sicherheitsintegrität auch das damit verbundene Risiko relevant: Der Ausfall eines Bremssystems beim Auto stellt ein deutlich größeres Risiko dar als der Ausfall der Hupe. Entsprechend höher muss der Aufwand bei der Entwicklung sein, um Fehler zu vermeiden. Zudem steigt das Ausfallrisiko mit Alter und Anzahl der Produkte auf dem Markt.

Generell geht die Norm davon aus, dass es nicht möglich ist, Produkte aus der Serienfertigung mit einem wirtschaftlich vertretbaren Aufwand über die gesamte Betriebsdauer hinweg fehlerfrei zu halten. IEC 61508 hebt vielmehr darauf ab, wie sich Fehler, soweit möglich, vermeiden oder aufspüren lassen und wie die fast zwangsläufig auftretenden Fehler beherrscht werden können. Dazu definieren die Normen Methoden, Maßnahmen und Prozesse, die mit zunehmendem Gefährdungsgrad strenger und komplexer werden. Im Falle der Software-Entwicklung betrifft dies vor allem die Qualitätssicherung innerhalb des Software-Development-Lifecycle (SDLC), das Testen und regelmäßige Reviews während der Nutzungsdauer der Software.

»Ein grundsätzliches Problem dabei: Für sicherheitsrelevante Systeme ist die im Embedded-Bereich meistverbreitete Programmiersprache C eigentlich nicht die erste Wahl«, erklärt Hermeling. Als C in den 1970er-Jahren erstmals definiert wurde, lag der Fokus auf Geschwindigkeit und Flexibilität. Das Internet gab es nicht, Cyber-Sicherheit war kein Thema. »Mit C++ wurden die beiden größten daraus resultierenden Probleme zwar entschärft, aber nicht aus der Welt geschaffen: Type-Sicherheit und ungeprüfte Pointer-Arithmetik«, so Hermeling. »Besonders die Pointer-Arithmetik ist für viele Sicherheitsprobleme verantwortlich – die Wurzel der weit verbreiteten Buffer-Overruns.«

passend zum Thema


  1. Statische Analysen für funktionale Sicherheit
  2. Was ist ein korrektes C-Programm?
  3. Funktionale Sicherheit
  4. Abgeleitete Normen

Lesen Sie mehr zum Thema


Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu GrammaTEch