
Die Rolle der statischen Analyse im Entwicklungsprozess sicherheitskritischer Produkte nach IEC 62443

IEC 62443 definiert einen Satz von Prozessstandards zur Entwicklung sicherheitskritischer Produkte im Bereich der industriellen Automatisierung.
Der Standard deckt viele sicherheitsrelevante Themengebiete ab. Abschnitt 4.1 "Secure product development life-cycle requirements" ist von spezifischem Interesse für die Softwareentwicklung. Dieser Abschnitt definiert einen Rahmen zur Entwicklung sichererer Automatisierungsprodukte durch "Security by design" und "Defense in depth". IEC 62443 nennt explizit die statische Codeanalyse als ein empfohlenes Werkzeug.
CodeSonar ist ein fortschrittliches Werkzeug für eine tiefere statische Codeanalyse und verbessert signifikant die Implementierungs- und Integrationsphase eines Softwareprojektes. Gegeben durch die kontinuierliche Sicherstellung der Quelltextqualität durch CodeSonar werden die Kosten und Risiken von Software für Entwicklung und Wartung wesentlich reduziert.
Die Vorteile von CodeSonar beinhalten:
- Kontinuierliche Sicherstellung der Qualität und Sicherheit von Quelltext: Den größten Effekt erzielen Werkzeuge, welche in möglichst frühen Projektphasen eingesetzt werden. CodeSonar detektiert Fehler, Schwächen und Verstöße an relevante Programmierrichtlinien während der Implementierung.
- Detektierung und Verfolgung unsicherer Daten: Netzwerkschnittstellen, Benutzereingaben und Dateien sind Quellen unsicherer, potenziell gefährlicher Daten. CodeSonar erkennt und verfolgt diese im Programm und warnt bei deren ungeprüften Verwendung.
- Bewertung von 3rd-Party-Code: Die Durchführung von dynamischen Tests auf großen Codebasen ist sehr ressourcenintensiv und kann vorgegebene Zeit- und Kostenlimitationen sprengen. Statische Codeanalyse ist besonders gut für große Projekte geeignet und erzeugt aussagekräftige Warnungen, mit welchen über die Qualität und Sicherheit der Projekte entschieden werden kann.
- Konsequente Einhaltung von Programmierrichtlinien: Die statische Analyse prüft den Syntax des Quelltextes und kann ebenfalls zur Sicherstellung von Programmierrichtlinien verwendet werden. Programmierrichtlinien sind ein bewährtes Mittel zur Verbesserung der Lesbarkeit des Quelltextes und erhöhen damit seine Wiederverwertbarkeit und Robustheit.
Die statische Analyse spielt eine entscheidende Rolle in den IEC 62443 Implementierungsrichtlinien für sicherheitsrelevante industrielle Automatisierungs- und Kontrollsystemen.
Die statische Analyse von CodeSonar unterstützt diese Anforderungen und bringt mit sich die zusätzlichen Vorteile der allgemein verbesserten Codequalität, der Detektion von Nebenläufigkeitsfehlern, der Binäranalyse und der Application-Livecycle-Management-Tool-Integrations.

Abbildung: Die Sicherheitsphilosophie in IEC 62443 (Quelle: CodeSecure).
Entwicklungswerkzeuge, Automatisierung und Werkzeuge für statische wie dynamische Analyse besetzen Schlüsselrollen in "Security Guidelines" und "Secure Implementation". Der Standard nennt den Bedarf an Sicherheitsexpertiese im Entwurf und in der Implementierung als auch den Bedarf an zeitgemäßen Werkzeugen und Techniken, wie jener der statischen Codeanalyse. Für sicherheitsrelevante Implementierungen definiert der Standard die Rolle von SCA (Static Code Analysis) sehr deutlich.
Im Folgenden werden die Abschnitte genannt, welche SCA betreffen.
Security Expertise (Sec 5.5)
Hier werden die Anforderungen an das in den Entwicklungsprozess involvierte Personal ausgeführt, welches sicherstellt, dass zugeordnete Aufgaben durchgeführt werden können. Für unterqualifiziertes Personal werden implizit Schulungen benötigt. Hier ein Auszug aus Abschnitt 5.5.2:Having this process means that personnel assigned to security-related processes have evidence that shows their relevant qualifications. This includes knowledge not only of security, but also for the use of any security-related standards (for example, coding standards), techniques (for example, best practices), and tools (for example, static analysis tools).
Third Party Embedded Component Security (sec 5.9.2)
Diese Section behandelt die Handhabung der Komponenten von Drittanbietern und den daraus resultierenden Sicherheitsauswirkungen. Von Interesse ist hierbei die Verifikation externer Komponenten durch statische Codeanalyse in Abschnitt 5.9.2:This process is required to ensure that supply chain security is addressed for equivalent security practices, latest security updates, security deployment guides and the supplier’s ability to respond if a vulnerability is discovered.
...
c) employing compensating mechanisms for known vulnerabilities on COTS or open source components (such as static code analysis).
Secure implementation review (Sec 8.2)
Reviews und Inspektionen sind essenziell um Fehler und Schwachstellen zu minimieren. IEC 62443 nennt SCA in Abschnitt 8.2:A process shall be employed to ensure that implementation reviews are performed for identifying, characterizing and tracking to closure security-related issues associated with the implementation of the secure design including:
...
c) Static Code Analysis (SCA) for source code to determine security coding errors such as buffer overflows, null pointer dereferencing, etc. using the commonly defined coding rules for the supported platform. SCA shall be done using a tool if one is available for the language used. In addition, static code analysis shall be done any time the software is changed.
Und anschließend in Abschnitt 8.2.2:
In addition, manual source code reviews may be used to examine source code for adherence to best practices (see 7.6, SD-5 – Addressing security-related issues, and 8.2, SI-1 – Security implementation review), and automated static source code analysis may be used to identify anomalies, including security vulnerabilities in the code as well as non-conformities with given programming rules.
IEC 62443 empfiehlt Reviews, welche zum Einen manuell und zum Anderen automatische via Analysewerkzeugen bewerkstelligt werden.
Secure Implementation recommended practices (Sec 8.5.1)
Die Implementierung ist so sicher wie möglich durchzuführen. Geeignete Programmier- und Entwurfsrichtlinien werden nach IEC 62443 hierzu benötigt. Im Detail werden die Implementierungspraktiken SCA und automatisches Testen im Abschnitt 8.5.1 genannt:The implementation processes shall incorporate commonly accepted security recommended practices and coding guidelines that are periodically reviewed and updated and include at a minimum:
...
c) automated tool use and settings (for example, for static analysis tools);
d) secure coding practices; and
e) validation of all inputs that cross trust boundary.
Automatisierung ist Schlüsselelement zur Einhaltung dieser Richtlinien. Die Automatisierung der dynamischen und statischen Analyse erhöht den Horizont der detektierbaren Fehler und vermindert den Gesamtaufwand.
Quelle: CodeSecure Inc., Maryland



CodeSonar 4 für Embedded Systeme
![[PDF]](icon-pdf-15x16.gif)
![[PDF]](icon-pdf-15x16.gif)
Development Testing
Defect Detection
Concurrency Checks
Security Checks
Software-Metriken
Automatisierung der Quellcodeverifikation
CodeSonar for Java
Erfüllung von Normen
DO-178
ISO 26262
FDA-Normen
MISRA
CWE- und BSI-Regeln
"Power of Ten" und JPL-Regeln
IEC 62443
Wie Statische Codeanalyse funktioniert
Workflow-Features
Binary-Analyse
Visual-Taint-Analyse
Whitepapers
Referenzen
Hochschulprogramm
Fallstudien
![[PDF]](icon-pdf-15x16.gif)