Nehmen Sie am 19. September an unserem Webinar teil: KI-gestütztes API-Testing: Ein No-Code-Ansatz zum Testen | Registrierung

Wie das Scheitern von CrowdStrike die Leistungsfähigkeit von Shift-Left-Tests unterstreicht

Kopfbild von Ricardo Camacho, Director of Safety & Security Compliance
15. August 2024
5 min lesen

Unternehmen können das Risiko von Vorfällen wie dem Ausfall von CrowdStrike erheblich reduzieren, indem sie Softwaretests automatisieren und nach links verschieben. Lesen Sie weiter, um die Vorteile eines Shift-Left-Ansatzes für Tests zu entdecken.

Die Risiken von Abstrichen bei der Testdurchführung

Der Fehler beim CrowdStrike-Softwareupdate ist eine wichtige Lektion in Bezug auf die Bedeutung frühzeitiger, automatisierter und umfassender Softwaretests. Wie mein Kollege Miroslaw Zielinski, betont in Erkenntnisse zum Softwaretest aus dem CrowdStrike-Vorfall, wenn man beim Testen Abstriche macht, um Zeit und Geld zu sparen, kann das zu katastrophalen Ergebnissen führen. Beim Testen geht es nicht nur darum, ein Häkchen zu setzen. Es ist ein wichtiger Teil, um sicherzustellen, dass die von Ihnen gelieferte Software zuverlässig und sicher ist und in der realen Welt die erwartete Leistung erbringt.

Obwohl es mehrere Faktoren für diesen Ausfall gibt, ist eine häufige Herausforderung, von der ich von Organisationen immer wieder höre, der unerbittliche Druck, häufige Updates zu veröffentlichen. Dieser Druck macht die Optimierung der Kosten und Zeit für Tests oft zu einem attraktiven Ziel. Der Schlüssel zur Vermeidung von Vorfällen wie dem CrowdStrike-Ausfall liegt jedoch in der Einführung eines umfassenden, Shift-Left-Ansatz zum Testen.

Parasofts Softwaretests, insbesondere statische Analyse, wurde entwickelt, um diesen Shift-Left-Ansatz zu ermöglichen. Doch bevor wir uns mit dieser Lösung befassen, wollen wir zunächst die Leistungsfähigkeit von Shift-Left-Tests verstehen.

Die Macht des Shift-Left-Tests

Shift-Left-Tests sind eines der leistungsstärksten Konzepte in der modernen Softwareentwicklung. Sie ermöglichen eine frühzeitige Fehlererkennung und verbessern die allgemeine Codequalität. Traditionell wurden Tests und Debugging gegen Ende des Entwicklungszyklus durchgeführt – nachdem der Code geschrieben und integriert war – und oft nach den ersten Testphasen. Dieser Ansatz führte normalerweise dazu, dass kritische Fehler und Probleme erst spät im Prozess entdeckt wurden, wenn ihre Behebung viel schwieriger und zeitaufwändiger war.

Durch die Implementierung einer statischen Analyse während des Implementierungsprozesses können Ingenieure Codierungsprobleme oder Compliance-Verstöße bereits beim Schreiben des Codes beheben. Dieses unmittelbare Feedback ermöglicht es Entwicklern, Probleme sofort zu beheben, wodurch die Codequalität von Anfang an deutlich verbessert wird. Das Ergebnis ist eine erhebliche Reduzierung von Mängeln, die sonst erst später im Entwicklungslebenszyklus entdeckt würden, wo ihre Behebung zunehmend komplexer und kostspieliger wird.

Wenn beispielsweise ein Defekt frühzeitig durch eine statische Analyse erkannt wird, kann er schnell und effizient behoben werden. Wird derselbe Defekt jedoch erst später durch Qualitätssicherungstests erkannt, wird der Lösungsprozess komplizierter. Es sind mehr Teammitglieder involviert und die Schritte zum Protokollieren, Melden, Reproduzieren und Beheben des Problems dauern länger, was zu erhöhtem Aufwand und Verzögerungen führt.

Noch mehr auf dem Spiel steht, wenn der Defekt die Produktion erreicht. Die Behebung eines Defekts im Feld ist besonders schwierig, da er sich direkt auf die Kunden auswirkt und möglicherweise dringende Patches, Rückrufe oder sogar Schadensbegrenzung erfordert, um den Ruf des Produkts zu schützen. Das Entwicklungsteam muss schnell handeln, um den Fehler zu beheben, während das QA-Team die Lösung erneut testen muss, was den Prozess noch komplexer macht.

Bei der Betrachtung des CrowdStrike-Vorfalls wird deutlich, wie wichtig die statische Analyse bei der Erkennung und Behebung von Mängeln in einem frühen Stadium des Entwicklungsprozesses ist, um zu verhindern, dass kostspielige und schädliche Probleme in die Produktion gelangen.

Statische Analyse ist mehr als nur Syntaxprüfung

Die statische Analyse ist eine erweiterte Technik zum Untersuchen von Quellcode, um potenzielle Fehler wie die Verwendung nicht initialisierter Variablen, Dereferenzierung von NULL-Zeigern, Pufferüberläufe und viele andere Codierungsfehler zu identifizieren, ohne den Code auszuführen.

So geht beispielsweise die statische Analyse-Engine von Parasoft über einfache Syntaxprüfungen hinaus. Sie führt nicht nur Kontrollfluss- und Datenflussanalysen durch, um eine Vielzahl von Fehlern und Codierungsproblemen aufzuspüren, sondern ist der Konkurrenz auch mit einer einzigartigen Anwendung von KI und maschinellem Lernen einen Schritt voraus. Unsere KI-gesteuerte Lösung überprüft neue Ergebnisse der statischen Analyse im Kontext historischer Interaktionen mit der Codebasis und vorheriger Ergebnisse der statischen Analyse, prognostiziert die Relevanz und priorisiert neue Ergebnisse, um Unternehmen dabei zu helfen, statische Analysen effektiver einzuführen.

Arten von Problemen, die durch die statische Analyse erkannt werden

Hier sind nur einige Arten von Fehlern oder Problemen, die durch die statische Analyse erkannt werden können.

  • Nullzeiger-Dereferenzierung. Automatische Erkennung von Versuchen, NULL-Zeiger zu dereferenzieren.
  • Speicherlecks. Identifizieren Sie Fälle, in denen Speicher zugewiesen, aber nicht ordnungsgemäß freigegeben wird.
  • Pufferüberläufe. Kritisch für die Sicherheit: Erkennen Sie, wenn mehr Daten in einen Puffer geschrieben werden, als dieser aufnehmen kann.
  • Nicht initialisierte Variablen. Flag-Variablen, die vor der Initialisierung verwendet werden.
  • Endlosschleifen. Erkennen Sie Schleifen, die möglicherweise nie beendet werden und dadurch das Programm hängen lassen.
  • Toter Code. Suchen Sie nach Code, der nie ausgeführt wird und sicher entfernt werden kann.
  • Durch Null dividieren. Identifizieren Sie Divisionen, bei denen der Nenner Null sein könnte, was zu Laufzeitfehlern führt.
  • Syntax- und Typfehler. Markieren Sie Fehler im Code, die eine Kompilierung verhindern.
  • Logische Fehler. Fangen Sie Fehler in der Logik des Codes ab, die zu falschem Verhalten führen könnten.
  • Sicherheitslücken. Erkennen Sie die Verwendung bekanntermaßen anfälliger Bibliotheken und anderer Sicherheitsprobleme.
  • Verstöße gegen Kodierungsstandard. Stellen Sie die Einhaltung der Codierungsstandards sicher, die für die Erlangung von Zertifizierungen in sicherheitskritischen Umgebungen von entscheidender Bedeutung sind.

Diese Arten von Programmierfehlern werden bei sicherheitskritischen Entwicklungen aggressiv gesucht und behoben, da bei Systemabstürzen oder -ausfällen Menschenleben verloren gehen können. Obwohl Sicherheitskonzepte für CrowdStrike keine Voraussetzung sind, ist die Softwarequalität eine Voraussetzung. Daher sollten sie die Einführung von Programmierstandards wie MISRA, CERT, CWE, oder andere.

Kodierungsstandards wie MISRA werden von Experten mit langjähriger Erfahrung entwickelt, und Parasoft, als beitragendes Mitglied der MISRA C und C++ 2023 Kodierungsstandards, bietet eine robuste statische Analyselösung, die auf diesem Fachwissen basiert.

Trotz dieser klaren Vorteile ist es überraschend, wie viele Entwicklungsteams immer noch keine statische Analyse verwenden. Die Einführung einer statischen Analyse ist unerlässlich, um die Kosten beim Softwaretest zu senken und gleichzeitig die Codequalität zu verbessern.

Durch die Einbindung statischer Analysen in die CI/CD-Pipeline (Continuous Integration/Continuous Deployment) hätte CrowdStrike automatisch Speicherzugriffsprobleme identifizieren können, die zum Fehlschlagen des Software-Updates führten.

Integrieren der statischen Analyse in die CI/CD-Pipeline

In einer modernen CI/CD-Umgebung schreiben und committen Entwickler Code und lösen damit einen automatisierten Build-Prozess aus. Wenn ein Build erfolgreich abgeschlossen ist, werden automatisierte Tests, einschließlich statischer Analyse, ausgeführt. Parasoft C- und C++-Testlösungen wie C/C++test lassen sich problemlos in CI/CD-Pipelines integrieren und funktionieren nahtlos mit Tools wie Jenkins, GitLab, Bamboo, VS Code, Eclipse und vielen anderen.

Diese Integration stellt sicher, dass die Codequalität kontinuierlich überwacht und verbessert wird, wobei Entwickler sofortiges Feedback zu allen Problemen erhalten, die durch die statische Analyse identifiziert werden. Durch die Automatisierung dieser Qualitätsprüfungen können Unternehmen:

  • Verhindern Sie, dass sich technische Schulden anhäufen.
  • Reduzieren Sie die Testkosten, indem Sie Probleme früher in der Entwicklung erkennen.
  • Erreichen Sie während des gesamten Entwicklungsprozesses hohe Standards der Codequalität.

Lehren aus dem CrowdStrike-Vorfall

Der CrowdStrike-Vorfall bietet Entwicklungsteams wertvolle Lehren.

  1. Widerstehen Sie der Versuchung, Abkürzungen zu nehmen. Der Druck, schnell liefern zu müssen, kann zu Qualitätseinbußen führen. Es ist wichtig, dieser Versuchung zu widerstehen und umfassende Tests zu priorisieren, um kostspielige Ausfälle zu vermeiden.
  2. Verstehen Sie die Kritikalität Ihrer Systeme. Selbst scheinbar unkritische Systeme können bei einem Ausfall erhebliche Auswirkungen haben. Um fundierte Entscheidungen hinsichtlich Tests und Qualitätssicherung treffen zu können, ist es wichtig, die tatsächlichen Risiken Ihrer Software zu kennen.
  3. Lernen Sie von sicherheitskritischen Branchen. Branchen wie die Automobil- und Luftfahrtindustrie, in denen Softwarefehler lebenswichtig sein können, haben strenge Teststandards entwickelt. Die Übernahme einiger dieser Best Practices kann dazu beitragen, die Zuverlässigkeit Ihrer Software zu verbessern, auch wenn sie nicht sicherheitskritisch ist.

Schlussfolgerung

Der Fehler beim CrowdStrike-Softwareupdate unterstreicht die Bedeutung umfassender, automatisierter Tests in der heutigen Softwareentwicklungsumgebung. Unternehmen können das Risiko solcher Vorfälle erheblich reduzieren, indem sie Parasofts Lösungen für statische Analysen zusammen mit Unit-Tests, Code Coverage und anderen Testmethoden nutzen. Unsere Tools helfen Teams dabei, hohe Standards für Softwarequalität einzuhalten und gleichzeitig Geschäftsrisiken zu managen. So wird sichergestellt, dass ihre Software zuverlässig, sicher und einsatzbereit ist.

Der ultimative Leitfaden zu CI/CD für eingebettete Softwaresysteme

„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.

Verwandte Post + Ressourcen