Das Transkript demonstriert den Einsatz des statischen Analysewerkzeugs CodeSonar (entwickelt von AdaCore/GrammaTech) zur Identifizierung kritischer Softwarefehler in sicherheitskritischen Systemen. Anhand eines simulierten Null-Zeiger-Fehlers (Null Pointer Dereference) in C/C++-Code zeigt das Video, wie CodeSonar Programmierfehler, Ressourcenlecks und Schwachstellen über Prozedurgrenzen hinweg aufdeckt. Zudem werden Mechanismen zur Normenkonformität (z. B. MISRA, CWE, DISA), zur Warnungsannotation und zur Datenflussanalyse (Taint Analysis) vorgestellt, die in Branchen wie der Luft- und Raumfahrt, Medizintechnik und Automobilindustrie eingesetzt werden.
Wichtigste Punkte & Zeitstempel
0:00 Kritischer Softwarefehler: Eine simulierte Flugsteuerung fällt während eines Fluges durch einen Softwarefehler aus, womit die Relevanz frühzeitiger Fehlersuche verdeutlicht wird.
0:38 Statische Code-Analyse: Das Tool CodeSonar untersucht den Quellcode von C- und C++-Anwendungen, um schwerwiegende Mängel vor der Systembereitstellung zu isolieren.
0:56 Ursachenanalyse: Die Detailansicht zeigt die Kausalität eines Fehlers: Eine Variable wird auf null gesetzt und anschliessend in einer String-Kopie (strcpy) verwendet.
1:21 Normenkonformität: Warnungen werden direkt mit Standards wie CWE, MISRA und DISA verknüpft, um regulatorische Anforderungen zu überprüfen.
1:36 Annotation und Maskierung: Entwickler können Warnungen kommentieren, als echten Treffer (true positive) kennzeichnen und in zukünftigen Analysen maskieren, ohne den Quellcode ändern zu müssen.
2:32 Umfassender Analysebericht: Ein beispielhafter vollständiger Analysedurchlauf identifiziert insgesamt 3.364 Warnungen im Codebestand.
2:44 Interprozedurale Analyse: CodeSonar verfolgt Ausführungspfade über Funktionsgrenzen hinweg, um komplexe Fehler wie Ressourcenlecks (resource leaks) zu erkennen.
3:29 Variablenverfolgung: Das Tool visualisiert Definitionen, Lese- und Schreibzugriffe von Variablen und erkennt ungesicherte externe Eingaben (tainted data).
4:21 Branchenübergreifende Relevanz: Die Technologie wird in sicherheitskritischen Sektoren wie Automobilbau, Medizintechnik, Industrieautomation, Verteidigung und Halbleiterfertigung eingesetzt.
Glossar
Statische Code-Analyse: Eine Methode zur automatisierten Überprüfung von Quellcode auf Fehler, Sicherheitslücken und Regelverstöße ohne Ausführung des Programms.
Null-Zeiger-Dereferenzierung (Null Pointer Dereference): Ein Laufzeitfehler, der auftritt, wenn ein Programm versucht, auf einen Speicherbereich zuzugreifen, dessen Zeiger den Wert null hat.
C / C++: Weit verbreitete, leistungsorientierte Programmiersprachen, die eine direkte Speicherverwaltung erlauben, jedoch anfällig für Speicher- und Zeigerfehler sind.
CWE (Common Weakness Enumeration): Ein standardisiertes Klassifizierungssystem für Softwareschwachstellen und Programmierfehler.
MISRA: Ein international anerkannter Standard für Programmierrichtlinien zur Entwicklung sicherer Software in C und C++.
DISA STIG: Sicherheitsrichtlinien der US-amerikanischen Agentur für Verteidigungsinformationssysteme zur Absicherung von IT-Infrastrukturen und Software.
True Positive: Eine korrekt erkannte und gemeldete Warnung eines Analysesystems, die tatsächlich einen echten Fehler im Code darstellt.
Interprozedurale Analyse: Eine tiefgehende Programmanalyse, die den Daten- und Kontrollfluss über mehrere Prozedur- und Funktionsgrenzen hinweg verfolgt.
Ressourcenleck (Resource Leak): Ein Softwarefehler, bei dem ein Programm Betriebssystemressourcen (z. B. Arbeitsspeicher oder Dateihandles) beansprucht, diese aber nach der Nutzung nicht wieder freigibt.
Taint Analysis (Tainted Data): Ein Analyseverfahren zur Verfolgung von ungeprüften, externen Daten, um sicherzustellen, dass diese vor der Verwendung in sicherheitskritischen Bereichen validiert werden.