beebright - stock.adobe.com
Fuzz-Testing: Dem Angreifer immer einen Schritt voraus
Mit automatisierten Testverfahren können Entwickler und Unternehmen Sicherheitslücken in Software effizienter aufspüren. Fuzz-Testing hilft dabei, Fehler systematisch zu entdecken.
Zunehmend setzen Cyberkriminelle auf automatisierte Testverfahren, um Schwachstellen in einer Software zu identifizieren und auszunutzen. Eins der effektivsten Testverfahren ist Fuzz-Testing, das sowohl Angreifern als auch Verteidigern ermöglicht, automatisiert und unkompliziert Schwachstellen aufzuspüren.
Automatisierte Testverfahren steigern die Effektivität und Effizienz bei der Aufdeckung von Sicherheitslücken enorm. Diese Verfahren unterstützt dabei, etwaige Schwachstellen der Software aufzuspüren, die sowohl für die Qualitätsverbesserung als auch für einen Angriff genutzt werden können.
Software aus Verteidiger- und Angreifersicht
Mit Fuzz-Testing, auch Fuzzing genannt, lassen sich mit geringem Aufwand Bugs und Sicherheitslücken in Software systematisch aufspüren. Das Prinzip von Fuzzing besteht darin, ein Programm mit möglichst unerwarteten Eingaben zum Absturz oder unerwünschtem Verhalten zu zwingen. Meistens geschieht dies durch den Einsatz von Zufallsdaten und dem Mutieren von bekannten Angriffsmustern.
Mit dem Trend, dass die Fuzz-Testing-Verfahren immer weiter optimiert werden, kann mit einer Zunahme der gefundenen Sicherheitslücken, sowohl öffentlich als auch auf dem Schwarzmarkt gerechnet werde. Softwarehersteller sind damit automatisch gezwungen, die Softwaresicherheit deutlich zu erhöhen. Sie müssen mindestens die gleichen Verfahren wie der Angreifer im Testing verwenden. Allerdings besteht hier noch immer die Gefahr, dass der Angreifer nur eine Kleinigkeit besser macht als man selbst oder der designierte Pentester und er damit wieder eine Lücke im System findet.
DevSecOps als integraler Bestandteil der Applikationssicherheit
Aus diesem Grund müssen die Verteidiger den Angreifern zuvorkommen und verstärkt in ihre Sicherheitssysteme investieren. Rein manuell sind die stetig wachsenden Sicherheitsrisiken gar nicht mehr in den Griff zu bekommen und selbst bei einfachen Pentests sind die Entwicklungsabteilungen häufig schon überfordert, schnell nachzubessern. Es muss eine größere Priorität eingeräumt werden, Sicherheit bereits im Entwicklungsprozess zu gewährleisten. Dies wird durch den Trend des automatisierten Application Security Testings sowie durch den sich immer weiter durchsetzenden DevSecOps-Ansatz bestätigt.
„Das Prinzip von Fuzz-Testing besteht darin ein Programm mit möglichst unerwarteten Eingaben zum Absturz oder unerwünschtem Verhalten zu zwingen.“
Sergej Dechand, Code Intelligence
In fast jedem Unternehmen sind bereits statische Codeanalyse und Pentesting bei der Softwareabnahme im Einsatz. Weitere Maßnahmen, um die Software abzusichern, sind allerdings erst im Kommen.
Effektive Testverfahren, um Sicherheitslücken zu schließen
Dabei gibt es deutlich effektivere Ansätze, Softwarefehler bereits in der Softwareentwicklung zu finden. Der effektivste Testansatz ist dabei Feedback-based Fuzz-Testing, ein automatisiertes Testverfahren, das vor allem von großen Technologieunternehmen wie Google gerne genutzt wird.
Im Vergleich zu dem Fuzz-Testing aus Angreifersicht kann durch den Besitz des Quelltextes und der Möglichkeit, die eigenen Server zu beobachten, deutlich effektiver und systematischer getestet werden: Der Fuzzer ist durch die Instrumentierung zur Kompilierzeit des Codes in der Lage, Feedback aus dem Verhalten des Programms zu verarbeiten und dadurch mit KI-Techniken mehr Eingaben vorherzusagen, die zu einer höheren Testabdeckung führen.
Seit 2016 konnte Google mit diesem Ansatz bereits über 50.000 Bugs in Google Chrome und zahlreichen Open-Source-Anwendungen aufdecken. Wie beim Fuzzing der Angreifer wird die Software automatisiert von einer künstlichen Intelligenz mit Eingaben gespeist, um Sicherheitslücken aufzuspüren. Millionen von Testfällen können so in relativ kurzer Zeit mit nur geringem Arbeitsaufwand umgesetzt werden. Dadurch kann Software deutlich effektiver als bislang auf mögliche Schwachstellen abgeklopft werden.
Mit modernem Fuzzing erhalten Entwicklungs- und Sicherheitsteams deshalb ein Verfahren an die Hand, bei dem sie sicher sein können, potenziellen Angreifern immer einen Schritt voraus sind.
Über den Autor:
Sergej Dechand ist und Mitgründer von Code Intelligence.
Die Autoren sind für den Inhalt und die Richtigkeit ihrer Beiträge selbst verantwortlich. Die dargelegten Meinungen geben die Ansichten der Autoren wieder.