Parasoft-Logo Suche

Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »

Parasoft-Blog

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

By Richard Camacho August 15, 2024 5 min gelesen
August 15, 2024 | 5 min gelesen
By Richard Camacho
Text links: Wie CrowdStrike

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 verdeutlicht eindrücklich die Wichtigkeit frühzeitiger, automatisierter und umfassender Softwaretests. Wie mein Kollege Miroslaw Zielinski in „Software Testing Insights From the CrowdStrike Incident“ betont , kann das Sparen an der Testqualität aus Zeit- und Kostengründen katastrophale Folgen haben. Tests sind keine bloße Pflichterfüllung, sondern unerlässlich, um sicherzustellen, dass die gelieferte Software zuverlässig, sicher und im realen Einsatz wie erwartet funktioniert.

Obwohl mehrere Faktoren zu diesem Fehler beigetragen haben, ist eine häufige Herausforderung, von der ich immer wieder höre, der ständige Druck, regelmäßig Updates zu veröffentlichen. Dieser Druck macht die Optimierung von Kosten und Zeitaufwand für Tests oft zu einem verlockenden Ziel. Der Schlüssel zur Vermeidung von Vorfällen wie dem CrowdStrike-Fehler liegt jedoch in einem umfassenden, frühzeitigen Testansatz.

Die Softwaretests von Parasoft, insbesondere die statische Analyse , sind darauf ausgelegt, diesen Shift-Left-Ansatz zu unterstützen. Bevor wir uns jedoch mit dieser Lösung befassen, wollen wir zunächst die Vorteile des Shift-Left-Testings 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.

Die statische Analyse-Engine von Parasoft geht beispielsweise weit über einfache Syntaxprüfungen hinaus. Sie analysiert nicht nur Kontroll- und Datenflüsse , um eine Vielzahl von Fehlern und Codierungsproblemen aufzudecken, sondern setzt sich dank einer einzigartigen Anwendung von KI und maschinellem Lernen auch deutlich von der Konkurrenz ab. Unsere KI-gestützte Lösung bewertet neue Ergebnisse der statischen Analyse im Kontext der bisherigen Interaktionen mit der Codebasis und früherer statischer Analysen. So werden Relevanz vorhergesagt und neue Ergebnisse priorisiert, um Unternehmen bei der effektiveren Implementierung statischer Analysen zu unterstützen.

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.

Solche Programmierfehler werden in sicherheitskritischen Entwicklungsumgebungen, in denen ein Systemabsturz oder -ausfall Menschenleben kosten kann, gezielt gesucht und behoben. Obwohl Sicherheitskonzepte für CrowdStrike keine Voraussetzung sind, ist Softwarequalität unerlässlich. Daher sollten sie die Anwendung von Codierungsstandards wie MISRA , CERT , CWE oder ähnlichen in Betracht ziehen.

Codierungsstandards wie MISRA werden von Experten mit jahrelanger Erfahrung entwickelt, und Parasoft bietet als Mitwirkender der MISRA C- und C++ 2023 -Codierungsstandards eine robuste Lösung zur statischen Analyse, die auf diesem Fachwissen aufbaut.

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, wodurch ein automatisierter Build-Prozess ausgelöst wird. Nach erfolgreichem Build 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 arbeiten nahtlos mit Tools wie Jenkins, GitLab, Bamboo, VS Code, Eclipse und vielen anderen zusammen.

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.

Fazit

Der Fehler beim CrowdStrike-Softwareupdate unterstreicht die Bedeutung umfassender, automatisierter Tests in der heutigen Softwareentwicklung. Unternehmen können das Risiko solcher Vorfälle deutlich reduzieren, indem sie die Lösungen von Parasoft für statische Analysen in Kombination mit Unit-Tests, Codeabdeckung und anderen Testmethoden nutzen. Unsere Tools unterstützen Teams dabei, hohe Standards für Softwarequalität zu gewährleisten und gleichzeitig Geschäftsrisiken zu managen. So stellen wir sicher, dass ihre Software zuverlässig, sicher und einsatzbereit ist.

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

Holen Sie sich den Leitfaden

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