Die Komplexität der digitalen Transformation erhöht die Herausforderungen für Software-Hersteller. Sie müssen zuverlässige aber auch sichere Lösungen entwickeln. Verstärkt wird das Problem durch den derzeitigen Fachkräftemangel. [...]
Die digitale Transformation hat mittlerweile eine ungeheure Eigendynamik entwickelt. Motor dieser Transformation sind hauptsächlich die Software-Hersteller. Auf sie erhöht sich der Druck, einerseits immer komplexer werdenden Aufgabenstellungen begegnen zu müssen, andererseits aber eben auch sichere und zuverlässige Lösungen auszuliefern. Dieser Druck wird durch den IT-Fachkräftemangel und den Wettstreit um kompetente, kreative und erfahrene Entwicklerinnen und Entwickler noch verstärkt. Welcher Weg führt aus diesem Dilemma heraus?
Im fatalen Dreieck der Herausforderungen
Software-Hersteller kämpfen vornehmlich mit drei Problemen: Ressourcenknappheit (Zeit, Geld, Personal), immer komplexere, sich ständig ändernde funktionale Anforderungen sowie harte Anforderungen an Stabilität und Sicherheit. Zudem müssen qualifizierte Entwickler momentan leider aufwendig gesucht und umworben werden. Um die unternehmenseigenen IT-Spezialisten dann auch bestmöglich einsetzen zu können, empfiehlt es sich, die Vorteile der Agilen Software-Entwicklung mit einem möglichst hohen Automatisierungsgrad im Bereich Testing und Fehlersuche zu kombinieren. Denn unentdeckte Bugs gehören zu den immer noch sträflich unterschätzten und im schlimmsten Fall existenzgefährdenden Risiken in der IT-Branche – und der gesamten Wirtschaft.
„Rule of Ten“
Die 10er-Regel der Fehlerkosten – die „Rule of Ten“ – besagt, dass sich der Such- und Beseitigungsaufwand um den Faktor 10 erhöht, je später ein (Software-)Fehler entdeckt und behoben wird. Als „Zehner-Potenz-Grenzen“ fungieren dabei üblicherweise die Übergänge zwischen den Phasen „Planung“, „Entwicklung“, „Produktion“ und „Kunde“. Angesichts der sich stetig erhöhenden Komplexität der Applikationen lässt sich eine einigermaßen zufriedenstellende Testing-Strategie insofern nur mit modernen, hochautomatisierbaren Lösungen bewerkstelligen. Ziel ist, die wertvollen IT-Experten nicht unnötig zu binden, damit sie weiterhin für den eigentlichen Entwicklungsprozess zur Verfügung stehen. Hierfür hat sich in den letzten Jahren modernes Fuzzing als eine sehr effiziente Testing-Methode etabliert. In Kombination mit modernen Bug-Erkennungsmechanismen hat es den Vorteil, fast keine False Positives (vermeintliche Fehler, die gar keine Probleme sind) zu produzieren.
Modern Fuzzing
Fuzzing funktioniert grundsätzlich wie folgt: Eine lauffähige Programmversion wird automatisiert mit Eingaben versorgt – und die Reaktionen der Software genau analysiert. Hierbei übernimmt das Fuzzing den Feedback-Part und verbessert mit jeder Input/Output-Runde die Qualität der nachfolgenden Eingaben. Auf diese Weise lässt sich auch bei fehlendem Quellcode (Black-Box-Modus) eine tiefe und umfassende Abdeckung der zu prüfenden Programmstruktur erreichen. Noch tiefer kann das Fuzzing allerdings ins Programm einsteigen, wenn auch der Quellcode vorliegt (Grey-Box oder White-Box-Modus). Ein großer Vorteil von Fuzzing gegenüber anderen Testing-Methoden ist die Nachvollziehbarkeit der Fehler. Wenn das Programm bei einer Eingabe abstürzt, kann dieser Fehler untersucht werden, indem der Entwickler das Programm in einem Debugger mit genau der gleichen Eingabe ein zweites Mal ausführt.
Agile Entwicklung und Fuzzing
Fuzzing und die Grundsätze der agilen Software-Entwicklung ergänzen sich perfekt. Im Zentrum der agilen Entwicklung steht die Kundenzufriedenheit, die durch die Planung, Entwicklung, Produktion und Auslieferung funktionsfähiger, zuverlässiger und extrem fehlerarmer Applikationen erreicht und aufrechterhalten wird. Wer immer noch den Kunden als finale Tester und „Fehlerfinder“ ansieht und einplant, hat in Zeiten stetig zunehmender digitaler Bedrohungen nichts mehr auf dem professionellen Software-Markt verloren. Die Vielfalt an IoT-fähigen Geräten vergrößert enorm die mögliche Angriffsfläche von Computersystemen, sei es nun moderne Autos oder Firmennetze. Auf der Seite der „Guten“ bietet sich daher die Auswahl und Qualifizierung von „Security Champions“ an. Ein Security Champion ist Teil des Entwicklungsteams und ist Ansprechpartner und Multiplikator für den Einsatz moderner Testing-Techniken wie Fuzzing.
Die Vorzüge von Fuzzing – schnelle Rückmeldung für die Entwickler, enge Integration in den Entwicklungsablauf, sehr zuverlässige Ergebnisse – sind ideale Unterstützungen für die agile Software-Entwicklung. Durch eine kontinuierliche und automatische Überprüfung der Software während der Entwicklung werden schnelle Release-Zyklen und sichere und stabile Produkte erreicht.
*Khaled Yakdan, Code Intelligence
Be the first to comment