Parasoft

Ricardo Camacho,

Software-Entwicklungsprozess für sicherheitskritische Systeme

Sicherheitskritische Software muss höchste Standards erfüllen, da Fehler fatale Folgen haben können. Von der Industrie bis zur Luftfahrt erfordert die Entwicklung strenge Prozesse, klare Dokumentation und robuste Tests. Moderne Tools und Best Practices helfen, Risiken zu minimieren, Konformität zu gewährleisten und zuverlässige Systeme zu schaffen.

© Andy/iStockphoto.com

In Branchen, in denen Fehler zu katastrophalen Verlusten führen können, muss die Software sicher sein. Das gilt unter anderem für die Industrieautomatisierung, das Gesundheitswesen, das Transportwesen, die Kernenergie und die Verteidigung. Softwarefehler, die Menschenleben, Sach- oder Umweltschäden verursachen, sind inakzeptabel. Sicherheitskritische Systeme müssen strenge Sicherheitsstandards erfüllen, und Softwareentwickler müssen auf dem Laufenden bleiben und flexibel sein. Sie müssen so viele reale Fehler-szenarien wie möglich berücksichtigen. Robustes Testen, Validieren und Verifizieren ist erforderlich.

Die 1947 gegründete Internationale Organisation für Normung (ISO) legt Sicherheitsstandards fest und arbeitet mit anderen Organisationen zusammen. Zu diesen Standards gehören beispielsweise die IEC 61508 für industrielle Anwendungen und Programmierstandards wie MISRA, CERT, CWE und OWASP. Sie werden ständig aktualisiert, und die Entwickler müssen sie einhalten.

Best Practices

Die Anforderungen an die Entwicklung sicherheitskritischer Software stützen sich auf fünf wesentliche Säulen:

Anzeige
  • Eindeutigkeit: Sowohl in der Dokumentation als auch im Code selbst muss Einigkeit darüber herrschen, was die Anforderungen bedeuten – ohne Interpretationen oder Vermutungen.
  • Verständlichkeit: Programmierer und Manager sollten in der Lage sein, die Anforderungen während des Code-Reviews oder des Testprozesses zu verstehen.
  • Reproduzierbarkeit: Das Programm und die Software müssen die erwarteten Ergebnisse liefern. Sie sollten entsprechend den Anforderungen funktionieren und im Fehlerfall die erwarteten Daten und Ausgaben bereitstellen.
  • Konsistenz: Es sollten keine widersprüchlichen Anforderungen in Bezug auf Zeitplanung, Leistung, Priorisierung und so weiter bestehen. Auch die Terminologie in der Dokumentation sollte einheitlich und konsistent sein, um Verwirrung zu vermeiden.
  • Testbarkeit: Gut entwickelte, sicherheitskritische Programme erfüllen die Anforderungen bei allen Testarten.

Darüber hinaus gibt es fünf weitere Best Practices, die bei der Entwicklung von Software für sicherheitskritische Systeme beachtet werden sollten:

  • Genaue Aufzeichnungen führen und die Historie beziehungsweise Rückverfolgbarkeit dokumentieren.
  • Die Programmierer über Best Practices, Methodiken und die Bedeutung der Dokumentation informieren.
  • Die für das Projekt am besten geeigneten Programmierstandards verwenden.
  • Die Komplexität des Codes gering halten, da komplexer Code in komplexen Systemen schwer zu testen ist und zu mehr Fehlern führen kann.
  • Die Entwicklung der Software sollte mit Blick auf den Endbenutzer erfolgen.

Auswirkungen von Fehlern

Fehler in sicherheitskritischer Software sind schwerwiegender als andere Probleme, wie zum Beispiel eine kaputte Glühlampe. Defekte können von einer überhitzten Batterie bis hin zum Ausfall einer Wasserturbine reichen. Sie können zu Katastrophen führen, die Menschenleben kosten, Sachschäden verursachen, finanzielle Verluste nach sich ziehen oder sogar die Sicherheit des Landes gefährden. Daher müssen die oben genannten Best Practices eingehalten werden, um die behördliche Genehmigung zu erhalten.

Zu berücksichtigende Faktoren

Bei sicherheitskritischer Software geht es um Sicherheit, nicht um Geschwindigkeit oder Funktionalität. Sie ist der wich-tigste Faktor bei der Einhaltung von Sicherheitsstandards. Folgen von Fehlern bei der Entwicklung sicherheitskritischer Software können zum Beispiel der Ausfall der Steuerung einer Industrieanlage oder die Entgleisung eines Hochgeschwindigkeitszugs sein. Ein bekanntes Beispiel ist der NASA Mars Climate Orbiter, der zu schnell und zu tief in die Mars-Atmosphäre eintrat und zerstört wurde. Solche Probleme sind auf mehrere wichtige Faktoren zurückzuführen, die die Teams während des gesamten Entwicklungslebenszyklus im Auge behalten müssen.

Neben der Einhaltung der Sicherheitsanforderungen und der formalen Methoden sind folgende Punkte zu beachten:

  • Die Softwarearchitektur sollte berücksichtigt werden, da ein gutes Design Upgrades erleichtert.
  • Sicherheitsbedenken, Risikominderung und die Einhaltung von Vorschriften machen das Projekt komplexer.
  • Ein ausfallsicheres Design bedeutet, dass das Gerät und/oder die Software auf sichere oder erwartete und vorhersehbare Weise ausfallen können.
  • Nur ein bestimmtes Maß an Risiko und Ausfall ist zulässig.
  • Bei der Entwicklung von sicherheitskritischer Software können verschiedene Entwicklungsmethoden wie Spiral-, Wasserfall- und Agile-Entwicklung sowie Kombinationen dieser Methoden zum Einsatz kommen.
  • Die Software intensiver testen, als es für notwendig erachtet wird, und anschließend fortfahren.
  • Für die Verbesserung sicherheitskritischer Systemsoftware sind Daten aus der Praxis erforderlich.

Moderne Tools und Techniken

Bild 1. Erkennung und Behebung von Shift-Left-Defekten. © Parasoft

Die Zertifizierung ist für Entwickler von sicherheitsrelevanter Software ein entscheidender Faktor. Ein zertifiziertes Tool bietet Sicherheit und garantiert Konformität. Dies erfordert aber auch die richtigen Entwicklungsmethoden, um längere Entwicklungszeiten und -kosten zu vermeiden. Hier spielt die Shift-Left-Mentalität eine Rolle. Ein gutes Beispiel für agile Methoden ist die Koexistenz von DevOps, CI/CD und Scrum. Dadurch werden Silos abgebaut, die Kommunikation gefördert, die Produktivität gesteigert und die Verifikation und Validierung automatisiert.

Für viele Entwicklungsteams ist die Aufrechterhaltung von Qualität und Erschwinglichkeit eine Priorität und eine einzigartige Herausforderung. Ein Beispiel hierfür ist die Automatisierung von Softwaretests in CI/CD-DevOps. CI/CD-Pipelines bieten kontinuierliche Tests, die Projektkosten und -dauer reduzieren. Automatisierte Tests bieten selbst bei Einhaltung strenger Sicherheitsstandards wie ISO 26262 zusätzliche Codeabdeckung, Sicherheit und verwertbare Daten. Die Entwickler benötigen die besten Werkzeuge für ihre Arbeit. Dies kann zu besserer Dokumentation, Konsistenz und pünktlicher oder sogar früherer Lieferung des Produkts führen.

Für die Entwicklung sicherheitskritischer Software gibt es auf dem Markt hochentwickelte Lösungen. Diese komplexen Systeme erfordern eine eindeutige Dokumentation, verwertbare Testdaten und Tools zur Unterstützung der Entwickler.

Bild 2. Mit der Lösung ‚C/C++test‘ und ‚C/C++test CT‘ können Software-Entwickler Fehler frühzeitig erkennen, die Einhaltung von Industriestandards automatisieren und intelligente Tests durchführen. Das Dashboard zeigt die IEC62508-Compliance. © Parasoft

Alle Tests müssen Nachvollziehbarkeit und Wiederholbarkeit der Anforderungen beinhalten. Automatisierte und TÜV Süd-zertifizierte Lösungen wwie ‚C/C++test‘ und ‚C/C++test CT‘ reduzieren die Arbeitsbelastung und verbessern gleichzeitig die Codequalität, die Abdeckung und die allgemeine Produktqualität. Diese KI-basierten Softwaretestlösungen unterstützen viele Sicherheitsstandards, unter anderen ISO 26262, IEC 62304, DO-178C, IEC 61508, EN 50716, OWASP, MISRA, Autosar, CERT und CWE.

Mit C/C++test und C/C++test CT können Teams Fehler frühzeitig erkennen, die Einhaltung von Industriestandards automatisieren und intelligente Tests durchführen.

Der Trend bei sicherheitskritischer Software

Der Autor: Ricardo Camacho ist Director of Safety & Security Compliance bei Parasoft. © Parasoft

Sicherheitskritische Systeme zu entwickeln ist aufwändiger und teurer, denn Entwickler und Manager müssen ihre Teams bei Bedarf schulen und regelmäßig auf den neuesten Stand bringen. Es ist unklar, wie die Software selbst auf Branchentrends reagieren wird. Das Internet der Dinge, maschinelles Lernen und künstliche Intelligenz haben sowohl positive als auch negative Auswirkungen. Die Kommunikations- und Anpassungsfähigkeit der Geräte kann auch zu zusätzlichen Sicherheitslücken führen. Neue Bedrohungsvektoren machen die Softwareentwicklung noch komplexer. Die Testautomatisierung hat begonnen, in die Bereiche der künstlichen Intelligenz und des maschinellen Lernens vorzudringen, um diese Lücke zu schließen, bevor sie zu groß wird.

Den Schlüssel zur modernen Softwareentwicklung hat uns Edsger W. Dijkstra mit folgendem Zitat gegeben: „Wer wirklich zuverlässige Software will, wird feststellen, dass er Wege finden muss, die meisten Fehler von vornherein zu vermeiden...“. Schließlich ist es einfacher, Probleme von vornherein zu vermeiden, als Brände zu löschen, wenn sie ausgebrochen sind. Dieser Aspekt der agilen Methodik spielt eine entscheidende Rolle bei der Entwicklung von sicherheitskritischer Software. Mit den richtigen Werkzeugen lässt sich der Prozess noch effizienter gestalten. Durch eine gute Code-Architektur, eine konsistente und strukturierte Dokumentation sowie kontinuierliche und angemessene Tests können Teams die Einhaltung von Konformitäts-Anforderungen sicherstellen.

  • Xing Icon
  • LinkedIn Icon
Anzeige
Anzeige

Das könnte Sie auch interessieren

Anzeige

Bihl+Wiedemann

Zukunftssicher automatisieren

AS-Interface entwickelt sich mit ASi-5 zur leistungsstarken Plattform für moderne Automatisierung. Höhere Datenraten, integrierte Safety und umfassende Diagnosefunktionen ermöglichen effiziente, flexible und zukunftssichere Lösungen – von einfachen...

mehr...
Anzeige
Anzeige
Anzeige

Illumio

Warum IT/OT-Grenzen neu gedacht werden müssen

Smart Factories verbinden Produktionsanlagen, Steuerungen und IT-Systeme über gemeinsame Netzwerke – eine Entwicklung, die die Effizienz zwar steigert, aber auch zusätzliche Angriffsflächen schafft. Um diese Risiken zu beherrschen, müssen...

mehr...

Axians

Fünf unbequeme Wahrheiten über OT‑Security

Firewalls kaufen kann jeder. OT-Security machen die wenigsten wirklich. Timmi Hopf, Business Development Manager OT Cybersecurity bei Axians, benennt in seinem Kommentar fünf unbequeme Wahrheiten aus der Praxis und erklärt, warum der erste Schritt...

mehr...
Anzeige
Anzeige
Anzeige

Kaspersky

Einsparpotentiale erkennen

Mit dem 'Kaspersky OT Cybersecurity Savings Calculator' können Industrieunternehmen die potenziellen Kosten unzureichender OT-Sicherheit (Operational Technology) quantifizieren.

mehr...

Adlon

Sicherheitsportfolio erweitert

Die Firma Adlon entwickelt ihr Security Operations Center weiter und ergänzt das bestehende Managed SOC für Microsoft 365-Umgebungen (basierend auf Managed XDR) um ein weiteres Modul: 'Managed SOC Advanced'.

mehr...

Videc

Predictive Maintenance ohne Hype

Predictive Maintenance ist zu einem Hype-Thema geworden und gilt als maßgeblich in der digitalen Transformation der Industrie. Wann sie sich wirklich lohnt, erläutert Tim Brexendorf, Geschäftsführer von Videc Data Engineering, in einem Expertipp.

mehr...
Jetzt Newsletter abonnieren