Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>

Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>
Zum Abschnitt springen
Untersuchen Sie den IEC 62443-Standard für die Implementierung und Wartung sicherer industrieller Automatisierungs- und Steuerungssysteme (IACS). Lesen Sie weiter, um mehr über die wichtigsten Praktiken und die entscheidende Rolle der Softwaretestautomatisierung zu erfahren.
Zum Abschnitt springen
Zum Abschnitt springen
IEC 62443 ist ein internationaler Standard, der Anforderungen und Prozesse für die Implementierung und Aufrechterhaltung von Sicherheit definiert Industrieautomation und Kontrollsysteme (IACS). Diese Standards legen Best Practices für die Sicherheit fest und bieten eine Möglichkeit, das Sicherheitsniveau zu bewerten.
Der Standard beschreibt einen sicheren Entwicklungslebenszyklus (SDL), der Aspekte wie sichere Codierung, Tests, Bereitstellung, Wartung und Entsorgung abdeckt. Der Schlüssel dazu ist die Definition einer Sicherheitsanforderungsspezifikation, die die Sicherheitsrisiken identifiziert und priorisiert sowie Abhilfestrategien angibt, die im Produkt oder in der Anwendung während ihres gesamten Lebenszyklus angewendet werden sollen.
Ein Schlüsselkonzept des Standards ist die Verwendung von Bedrohungsmodellen zur Identifizierung und Analyse potenzieller Bedrohungen für ein Produkt oder System auf der Grundlage seiner Architektur, Komponenten, Schnittstellen, Datenflüsse und Funktionen. Mithilfe der Bedrohungsmodellierung können Sie die Auswirkungen und die Wahrscheinlichkeit jeder Bedrohung bewerten und sie entsprechend ihrer Schwere priorisieren. Dies ist eine fortlaufende Aktivität, da sich die Bedrohungslandschaft im Laufe der Zeit ändert, insbesondere für IACS-Produkte mit einer Lebensdauer von Jahrzehnten.
Nicht alle IACS-Produkte erfordern das gleiche Sicherheitsniveau, das definiert, wie das System auf verschiedene Angriffsklassen reagiert. Diese reichen von fehlenden Anforderungen und unbeabsichtigtem Missbrauch bis hin zu raffinierten Angreifern mit unbegrenzten Ressourcen. Es wird erwartet, dass Produkte in Sicherheitszonen unterteilt werden, wenn die Sicherheitsstufen zwischen Komponenten oder Subsystemen unterschiedlich sind.
IEC 62443 Außerdem erhalten Sie Anleitungen zum Erstellen sichererer Geräte und Anwendungen, z. B. durch die Verwendung von „Secure by Design“, die Reduzierung der Angriffsfläche, eine tiefgreifende Verteidigung usw.
Hier finden Sie eine Zusammenfassung der wichtigsten Praktiken, die von identifiziert wurden ISA/IEC 62443-Standardreihe.
Ein robustes Sicherheitsprogramm erfordert die Einrichtung und Aufrechterhaltung eines Sicherheitsprogramms, das die Rollen, Verantwortlichkeiten, Richtlinien, Verfahren und Ressourcen zur Gewährleistung der Cybersicherheit von IACS-Produkten und -Lösungen definiert. Diese Praxis umfasst praktisch alle der folgenden Praktiken als übergreifende Schlüsselpraxis.
Die Risikobewertung ist ein entscheidender Bestandteil der Entwicklung von IACS-Systemen für Sicherheit und Schutz. Dies ist ein fortlaufender Prozess, der Folgendes umfasst:
Risiko ist ein Faktor, der die Wahrscheinlichkeit des Eintretens eines Ereignisses sowie die Folgen und Auswirkungen seines Eintretens bestimmt. Zu den Leistungen dieser Praxis gehören:
Um Sicherheit von Anfang an zu integrieren, müssen die Sicherheitsanforderungen für den gesamten Produktlebenszyklus definiert werden, vom Design über die Entwicklung, den Support, den Betrieb, die Wartung und die Entsorgung. Dazu gehört auch die Definition der Sicherheitsstufen, die den erforderlichen Schutzgrad für jede Funktion oder Komponente eines Produkts festlegen.
Ein sicheres Produkt muss von Anfang an sicher sein. Dies bedeutet, dass während des gesamten Produktentwicklungslebenszyklus Prinzipien des Sicherheitsdesigns, wie z. B. eine Tiefenverteidigung, angewendet werden, um die Angriffsfläche zu verringern und unbefugten Zugriff auf das Produkt oder die Anwendung oder unbefugte Änderungen am Produkt oder der Anwendung zu verhindern. Dazu gehört auch die Durchführung von Überprüfungen, Tests und Validierungen sicherer Codierungsstandards, um sicherzustellen, dass der Code die Sicherheitsanforderungen erfüllt.
„Secure by Design“ bedeutet die Implementierung sicherer Codierungsstandards in allen Phasen des Produktentwicklungslebenszyklus, um sicherzustellen, dass der Code die Sicherheitsanforderungen erfüllt. Dazu gehört auch die Durchführung von Verifizierungs- und Validierungstests, um zu überprüfen, ob der Code unter verschiedenen Szenarien und Bedingungen wie vorgesehen funktioniert.
Die Sicherheit muss getestet werden. Die Durchführung formeller oder informeller Tests zur Überprüfung der Einhaltung der Sicherheitsanforderungen ist von entscheidender Bedeutung. Dazu gehört auch die Durchführung von Fehlermanagementaktivitäten, um Fehler in einem IACS-Produkt oder einer IACS-Lösung zu identifizieren, zu melden, zu verfolgen, zu beheben und zu verhindern.
Sicherheitsprobleme sind unvermeidlich. Bei Vorfällen im Zusammenhang mit der Cybersicherheit, die während oder nach dem Lebenszyklus eines Produkts auftreten, ist ein ordnungsgemäßes Management von entscheidender Bedeutung. Dazu gehört auch die Durchführung von Patch-Management-Aktivitäten, um bei Bedarf Updates oder Fixes auf das Produkt anzuwenden. Darüber hinaus muss bei der Verwaltung der End-of-Life-Aktivitäten von Produkten sichergestellt werden, dass Produkte sicher außer Betrieb genommen werden, wenn sie nicht mehr benötigt werden.
Die Sicherheit eines Produkts oder einer Anwendung ist ständig im Wandel. Die Verwaltung aller Updates oder Fixes für bereitgestellte Produkte ist erforderlich. Obwohl es traditionell nur wenige Aktualisierungen für IACS-Produkte gibt, muss sich dies ändern. Moderne, sichere Produkte benötigen ein Patch-Management, um eine kontinuierliche Compliance sicherzustellen. Darüber hinaus muss die Software-Lieferkette auf neue Schwachstellen überwacht werden, sodass Abhängigkeiten, die Ihr Produkt verwendet, ebenfalls aktualisiert und gepatcht werden müssen, beispielsweise OpenSSL- oder Log4J-Schwachstellen.
Die Bereiche, in denen die Testautomatisierung die wichtigste Rolle spielt, sind sichere Implementierung sowie Sicherheitsüberprüfungs- und Validierungspraktiken. Daher konzentriert sich dieser Beitrag auf diese Schlüsselpraktiken.
In den Abschnitten 8.3.1 und 8.4.1 des Standards wird ausdrücklich auf die Notwendigkeit einer statischen Codeanalyse, Codeüberprüfungen und der Implementierung sicherer Codierungsstandards hingewiesen. Ein weiterer wichtiger Aspekt der Anforderungen ist die Rückverfolgbarkeit der Sicherheitsanforderungen bis hin zur Implementierung und den Tests.
Abschnitt 8.3.1 beschreibt die Anforderungen für Sicherheitsüberprüfungen bei der Produktimplementierung. Darin wird insbesondere die Notwendigkeit von Codierungsstandards, statischer Codeanalyse und Rückverfolgbarkeit erwähnt.
Abschnitt 8.3.1:
Es muss ein Prozess eingesetzt werden, um sicherzustellen, dass Implementierungsüberprüfungen durchgeführt werden, um sicherheitsbezogene Probleme im Zusammenhang mit der Implementierung des sicheren Designs zu identifizieren, zu charakterisieren und bis zum Abschluss zu verfolgen, einschließlich …
b) Identifizierung sicherer Codierungsstandards (siehe 8.4), die nicht befolgt wurden (z. B. Verwendung verbotener Funktionen oder Nichtanwendung des Prinzips der geringsten Rechte);
c) Statische Codeanalyse (SCA) für Quellcode zur Ermittlung von Sicherheitscodierungsfehlern wie Pufferüberläufen, Nullzeiger-Dereferenzierung usw. unter Verwendung des sicheren Codierungsstandards für die unterstützte Programmiersprache. Die SCA muss mithilfe eines Tools durchgeführt werden, sofern eines für die verwendete Sprache verfügbar ist. Darüber hinaus muss eine statische Codeanalyse aller Quellcodeänderungen, einschließlich des neuen Quellcodes, durchgeführt werden.
d) Überprüfung der Implementierung und ihrer Rückverfolgbarkeit auf die zur Unterstützung des Sicherheitsdesigns definierten Sicherheitsfunktionen …
Abschnitt 8.4.1 Einzelheiten zu Sicherheitscodierungsstandards und der Empfehlung zur Automatisierung über statische Analysetools:
Abschnitt 8.4.1:
Die Implementierungsprozesse müssen Sicherheitskodierungsstandards beinhalten, die regelmäßig überprüft und aktualisiert werden und mindestens Folgendes umfassen:
a) Vermeidung potenziell ausnutzbarer Implementierungskonstrukte – Implementierungsentwurfsmuster, die bekanntermaßen Sicherheitslücken aufweisen;
b) Vermeidung verbotener Funktionen und Codierungskonstrukte/Designmuster – Softwarefunktionen und Designmuster, die nicht verwendet werden sollten, weil sie bekannte Sicherheitslücken aufweisen;
c) automatisierte Tool-Nutzung und -Einstellungen (z. B. für statische Analysetools);
d) sichere Codierungspraktiken;
e) Validierung aller Eingaben, die die Vertrauensgrenze überschreiten.
f) Fehlerbehandlung.
Statische Analyse Tools eignen sich hervorragend zum Erkennen von Fehlern, Bugs, Schwachstellen oder anderen Problemen, die die Sicherheit oder Funktionalität von Software beeinträchtigen könnten. Die statische Analyse kann auch verwendet werden, um die Konformität des Systems mit bestimmten Codierungsstandards oder -anforderungen zu überprüfen.
Insbesondere statische Analysetools sind besonders nützlich, um Entwicklern zu helfen entsprechen der IEC 62433 indem potenzielle Sicherheitsmängel oder Schwachstellen im Code identifiziert werden, bevor Angreifer sie ausnutzen. Darüber hinaus helfen statische Analysetools dabei, die Einhaltung relevanter Standards oder Vorschriften zu erreichen, die sichere Codierungspraktiken erfordern, einschließlich sicherer Codierungsstandards.
Hier sind einige der Möglichkeiten und Vorteile der Verwendung fortschrittlicher statischer Analysetools wie Parasoft C/C++test zur Sicherung von IACS-Software.
Statische Analysetools, auch SAST-Tools (Static Application Security Testing) genannt, verwenden Codedetails und -strukturen, um die Einhaltung sicherer Codierungsstandards und -richtlinien durchzusetzen. Die integrierten Prüfer dienen dazu, Code zu erkennen, der nicht den bekannten Standards wie dem entspricht SEI-ZERT C- und C++-Standards. Diese Richtlinien verhindern, dass C- und C++-Programmierer Sprachkonstrukte verwenden, die bekanntermaßen Softwareschwächen verursachen, die zu Schwachstellen führen. Sie vermitteln auch gute Programmierpraktiken, die verhindern, dass diese Schwachstellen in die Codebasis eindringen, wenn eine regelmäßige Compliance-Prüfung durchgeführt wird.
Der IEC 62443-Standard geht explizit auf die Verwendung statischer Analysetools und sichere Codierungsstandards ein. Daher ist es unerlässlich, dass diese Tools mit etablierten Prozessen, Entwicklungs- und Build-/Testumgebungen funktionieren.
Der Standard macht auch ziemlich deutliche Angaben zu den Arten und der Gründlichkeit der Tests, die zur Überprüfung und Validierung der Sicherheit erforderlich sind. Der beste praktische Weg, diese Anforderungen umzusetzen, ist die Automatisierung von Softwaretests.
Nachfolgend finden Sie die relevanten Abschnitte aus IEC-62443.
Abschnitt 9.2.1: Prüfung der Sicherheitsanforderungen
Es muss ein Prozess eingesetzt werden, um zu überprüfen, ob die Produktsicherheitsfunktionen die Sicherheitsanforderungen erfüllen und dass das Produkt Fehlerszenarien und ungültige Eingaben korrekt verarbeitet. Zu den Testarten gehören:
a) Funktionsprüfung der Sicherheitsanforderungen;
b) Leistungs- und Skalierbarkeitstests; Und
c) Grenz-/Randbedingungs-, Stress- und fehlerhafte oder unerwartete Eingabetests, die nicht speziell auf die Sicherheit ausgerichtet sind.
Abschnitt 9.4.1: Schwachstellentests
Zur Durchführung von Tests muss ein Prozess eingesetzt werden, der sich auf die Identifizierung und Charakterisierung potenzieller Sicherheitslücken im Produkt konzentriert. Die Prüfung bekannter Schwachstellen muss mindestens auf aktuellen Inhalten einer etablierten, branchenweit anerkannten öffentlichen Quelle für bekannte Schwachstellen basieren. Die Prüfung muss Folgendes umfassen:
a) Missbrauchsfall oder fehlerhafte oder unerwartete Eingabetests mit dem Schwerpunkt auf der Aufdeckung von Sicherheitsproblemen. Dazu gehören manuelle oder automatisierte Missbrauchsfalltests und spezielle Arten von Missbrauchsfalltests an allen externen Schnittstellen und Protokollen, für die Tools vorhanden sind
...
d) Tests zur dynamischen Laufzeitressourcenverwaltung, die Fehler erkennen, die bei der Analyse des statischen Codes nicht sichtbar sind, einschließlich, aber nicht beschränkt auf Denial-of-Service-Bedingungen aufgrund der nicht erfolgten Freigabe von Laufzeithandles, Speicherlecks und Zugriffen auf den gemeinsam genutzten Speicher ohne Authentifizierung. Diese Prüfung muss durchgeführt werden, wenn solche Werkzeuge verfügbar sind.
Um Produktfristen einzuhalten und ein akzeptables Sicherheitsniveau zu erreichen, ist es erforderlich, den Testprozess so weit wie möglich zu automatisieren. Moderne Software-Testautomatisierungstools beschleunigen diese Prozesse, indem sie so viele manuelle Aspekte wie möglich eliminieren, KI und maschinelles Lernen nutzen, wo möglich, sowie Berichte und Analysen, um das Testen dort zu konzentrieren, wo es am meisten benötigt wird. Im Folgenden geht es um die Anforderungen für Verifizierung und Validierung vom Standard abweicht und wie Testautomatisierung jeweils hilft.
Ein Vorteil automatisierter Funktionstests ist die Möglichkeit, Tests zu jeder Tages- und Nachtzeit durchzuführen, ohne dass ständig eine Person beteiligt sein muss. Automatisierte Tests laufen zudem schneller als manuelle Tests. Sie befolgen den Testplan genau und vermeiden mögliche menschliche Fehler wie die Verwendung falscher Testdaten oder das Auslassen von Teilen des Tests. Ein zusätzlicher Vorteil besteht darin, dass das QA-Team durch automatisierte Tests mehr Zeit hat, sich auf dringende Randfälle zu konzentrieren und Testszenarien für neue Module und Softwaresysteme zu schreiben.
Funktionstests treffen auch keine Annahmen über die Systemstruktur. Es testet nur, was das System ausmacht und was es zum Funktionieren bringt. Im Hinblick auf die Sicherheit stellen Funktionstests sicher, dass die Entwickler alle Sicherheitsanforderungen des Produkts erfüllt haben.
Leistungstests bewerten, wie sich eine Anwendung unter bestimmten Bedingungen verhält, und analysieren die Ergebnisse, damit Sie etwaige Engpässe oder Blockaden identifizieren und beheben können, die einen reibungslosen Betrieb verhindern. Dies ist aus Sicherheitsgründen wichtig, da Angriffe beispielsweise durch Denial-of-Service-Angriffe versuchen können, den ordnungsgemäßen Betrieb zu blockieren.
Mit einer Last- und Leistungsteststrategie können Ihre Anwendungen besser auf unerwartete Anforderungen vorbereitet werden. Tools für Last- und Leistungstests stellen sicher, dass Ihr System plötzliche Datenverkehrsspitzen bewältigt und ein erstklassiges Benutzererlebnis bietet. Diese Tests erzeugen extreme Belastungen, um etwaige Fehler zu finden und sicherzustellen, dass Ihre Anwendung der Hitze standhält. Die Testautomatisierung macht es einfacher und schneller, eine Kombination von Leistungstestschritten parallel auszuführen.
Grenz- oder Randtestbedingungen sind solche, die weit über die üblichen Eingabe- oder Umgebungsbedingungen hinausgehen, die ein IACS-Produkt erwarten würde. Diese Testfälle liegen jedoch immer noch innerhalb der theoretischen Grenzen der Systemeingaben. In Bezug auf Benutzereingaben sind Randfälle solche, bei denen die Eingaben sehr lang sind oder Sonderzeichen enthalten können. Auf diese Weise werden beispielsweise SQL-Injections auf Websites durchgeführt. Im Hinblick auf IACS-Systeme kann dies auch extreme Sensoreingaben, Netzwerk- und Schnittstelleneingaben sowie Benutzer-/HMI-Zugriff umfassen.
Software-Testautomatisierungstools wie Parasoft C / C ++ test kann so konfiguriert werden, dass Grenz- und Extremtestfälle, auch Missbrauchsfälle genannt, verwendet werden und sogar automatisch Testfälle generiert werden, beispielsweise basierend auf internem Wissen über Softwareeinheiten. Diese Tests können auch zu einer Regressionstestsuite hinzugefügt werden, die regelmäßig und automatisch ausgeführt werden kann.
Dynamische Anwendungssicherheitstests (DAST) sind eine andere Form von Sicherheitstests wie die statische Analyse (SAST), sie funktionieren jedoch, während eine Anwendung des Systems ausgeführt wird. Diese Tools erkennen Laufzeitschwachstellen bei der Ausführung von Code. Sie weisen ein hohes Maß an Präzision auf, da erkannte Schwachstellen real sind. Sie können jedoch nur Schwachstellen in ausgeführtem Code und unter Bedingungen erkennen, die während des Tests vorliegen. IEC 62443 macht deutlich, dass alle Arten von Anwendungssicherheitstests durchgeführt werden sollten.
Sicherheitsanforderungen in IACS-Systemen müssen überprüft und validiert werden. Dies erfordert eine Rückverfolgbarkeit zwischen der Anforderung, der Implementierung (normalerweise Quellcode) und den Tests, die sie validieren. Die manuelle Pflege dieser Links ist wahrscheinlich unmöglich, daher spielt die Automatisierung eine Schlüsselrolle, um die Rückverfolgbarkeit präzise und aktuell zu halten. Compliance-Aufzeichnungen und Dokumentation können bei Bedarf auch automatisiert werden.
Tools für das Anwendungslebenszyklusmanagement umfassen ausgereifte Anforderungsmanagementfunktionen und dienen in der Regel als Drehscheibe für die Rückverfolgbarkeit, einschließlich Sicherheitsanforderungen und Bedrohungsmodellierung. Integrierte Softwaretestlösungen, wie sie Parasoft anbietet, vervollständigen die Überprüfung und Validierung von Sicherheitsanforderungen durch Automatisierung. Bereitstellen automatisierte bidirektionale Rückverfolgbarkeit zum ausführbaren Testfall enthält das Pass- oder Fail-Ergebnis und führt bis zum Quellcode, der die Anforderung implementiert.
Parasoft bietet bidirektionale Rückverfolgbarkeit von Arbeitselementen bis hin zu Testfällen und Testergebnissen – beide zeigen Rückverfolgbarkeitsberichte an Parasoft DTP sowie die Rückmeldung der Ergebnisse an das Anforderungsmanagementsystem.
Parasoft lässt sich in marktführende Anforderungsmanagement- und agile Planungssysteme wie Intland Codebeamer, Polarion von Siemens, Atlassian Jira, CollabNet VersionOne und TeamForge integrieren. Die Testautomatisierungslösungen von Parasoft, C/C++test, Jtest, dotTEST, SOAtest und Selenic, unterstützen die Zuordnung von Tests zu Arbeitselementen, die in diesen Systemen definiert sind, wie Anforderungen, Storys, Fehler und Testfalldefinitionen. DTP, das zentrale Berichts- und Analyse-Dashboard von Parasoft, verwaltet die Rückverfolgbarkeit.
IEC 62443 legt Richtlinien und Prozesse zur Gewährleistung der Sicherheit von IACS-Produkten fest und deckt Aspekte wie sichere Codierung, Tests, Bereitstellung, Wartung und Entsorgung ab. Zu den wichtigsten Praktiken der IEC 62443 gehören die Einrichtung eines Cybersicherheitsmanagementsystems, die Durchführung von Sicherheitsrisikobewertungen, die Festlegung von Sicherheitsanforderungen, die Einführung eines „Secure-by-Design“-Ansatzes, die Implementierung sicherer Codierungsstandards und die Durchführung von Sicherheitsmaßnahmen Verifizierung und Validierung Testen.
Die Automatisierung von Softwaretests spielt bei diesen Schlüsselpraktiken eine entscheidende Rolle, insbesondere bei der sicheren Implementierung sowie der Sicherheitsüberprüfung und -validierung. Die statische Codeanalyse ist für die Unterstützung von Codeüberprüfungen und die Einhaltung sicherer Codierungsstandards von entscheidender Bedeutung. Darüber hinaus erkennt die statische Analyse Codierungsfehler, Schwachstellen und Schwachstellen schon früh im Entwicklungslebenszyklus.
Im Hinblick auf Sicherheitsüberprüfungs- und Validierungstests sind Tools zur Automatisierung von Softwaretests von entscheidender Bedeutung, um Tests in dem Zeitrahmen durchzuführen, der für die Markteinführung sicherer IACS-Produkte erforderlich ist. Dazu gehören die Beschleunigung von Testprozessen, die Sicherstellung der Einhaltung von Sicherheitsstandards und der Nachweis der Sorgfaltspflicht. Die automatisierte Rückverfolgbarkeit bei der Überprüfung und Validierung von Sicherheitsanforderungen ist von entscheidender Bedeutung, um sicherzustellen, dass Sicherheitsanforderungen erfüllt werden. Durch die Automatisierung bleibt auch die Dokumentation der Anforderungsvalidierung auf dem neuesten Stand, was letztendlich zu einer beschleunigten Compliance von IACS-Produkten beiträgt.