Lesezeit ca. 6 Min.

Softwarecode sicherer machen – die 10 besten Fuzz-Testing-Tools


Logo von Computerwoche
Computerwoche - epaper ⋅ Ausgabe 18/2022 vom 06.05.2022
Artikelbild für den Artikel "Softwarecode sicherer machen – die 10 besten Fuzz-Testing-Tools" aus der Ausgabe 18/2022 von Computerwoche. Dieses epaper sofort kaufen oder online lesen mit der Zeitschriften-Flatrate United Kiosk NEWS.

Wenn Programmierer eine Applikation erstellen, verbringen sie eine Menge Zeit damit, vorherzusehen, wie die Nutzerbedürfnisse aussehen und wie ihre Anwendung bei bestimmtem User-Verhalten reagieren soll. Gute Softwareentwickler behalten mit einem „straffen“ Code die Kontrolle und planen parallel für alle Eventualitäten.

Dennoch ist es in aller Regel nicht möglich, jede erdenkliche Benutzeraktion in die Entwicklungsüberlegungen einzubeziehen. An dieser Stelle kommen Fuzzing-Tools ins Spiel.

Was ist Fuzz-Testing?

Fuzz-Testing beschreibt einen automatisierten Prozess, bei dem ein Software-Tool eine Vielzahl unerwarteter, fehlerhafter oder einfach nur zufälliger Eingaben an eine Applikation sendet.

So können die Entwickler überprüfen, wie die Anwendung darauf reagiert, und geeignete

Antworten programmieren. Das verbessert die Integrität und Sicherheit der Applikation – und zwar, bevor diese ausgeliefert ...

Weiterlesen
epaper-Einzelheft 10,99€
NEWS Jetzt gratis testen
Bereits gekauft?Anmelden & Lesen
Leseprobe: Abdruck mit freundlicher Genehmigung von Computerwoche. Alle Rechte vorbehalten.
Lesen Sie jetzt diesen Artikel und viele weitere spannende Reportagen, Interviews, Hintergrundberichte, Kommentare und mehr aus über 1000 Magazinen und Zeitungen. Mit der Zeitschriften-Flatrate NEWS von United Kiosk können Sie nicht nur in den aktuellen Ausgaben, sondern auch in Sonderheften und im umfassenden Archiv der Titel stöbern und nach Ihren Themen und Interessensgebieten suchen. Neben der großen Auswahl und dem einfachen Zugriff auf das aktuelle Wissen der Welt profitieren Sie unter anderem von diesen fünf Vorteilen:

  • Schwerpunkt auf deutschsprachige Magazine
  • Papier sparen & Umwelt schonen
  • Nur bei uns: Leselisten (wie Playlists)
  • Zertifizierte Sicherheit
  • Freundlicher Service
Erfahren Sie hier mehr über United Kiosk NEWS.

Mehr aus dieser Ausgabe

Titelbild der Ausgabe 18/2022 von Folgt auf Gaia-X schon bald Tellus-Y?. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Folgt auf Gaia-X schon bald Tellus-Y?
Titelbild der Ausgabe 18/2022 von Deutschland digital – der Frust in der Bevölkerung nimmt zu. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Deutschland digital – der Frust in der Bevölkerung nimmt zu
Titelbild der Ausgabe 18/2022 von IBM-Chef Arvind Krishna: KI braucht noch zehn Jahre. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
IBM-Chef Arvind Krishna: KI braucht noch zehn Jahre
Titelbild der Ausgabe 18/2022 von Ransomware -Attacken: Erpresser zu bezahlen ist keine Lösung. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Ransomware -Attacken: Erpresser zu bezahlen ist keine Lösung
Mehr Lesetipps
Blättern im Magazin
Seefracht schippert rechtssicher ohne Papiere
Vorheriger Artikel
Seefracht schippert rechtssicher ohne Papiere
Employee Experience: Oracle ME soll Beschäftigte zu Fans machen
Nächster Artikel
Employee Experience: Oracle ME soll Beschäftigte zu Fans machen
Mehr Lesetipps

... wird.

Fuzzing-Tools sind wertvoll, weil sie in relativ kurzer Zeit Tausende von „Was-wäre-wenn“-Fragen zum Anwendungsverhalten beantworten können. Zum Beispiel:

Was wäre, wenn ein Benutzer einer E-Commerce-Webseite 20 Milliarden Jacken bestellt? Stürzt die Seite ab? Bietet sie Rabatte an? Oder versucht sie einfach, die unmögliche Bestellung normal zu verarbeiten?

Und was, wenn ein Benutzer einen gültigen Gutscheincode in ein falsches Eingabefeld eingibt?

Wie reagiert die Anwendung, wenn ein böswilliger Nutzer Command-Line-Funktionen, verschlüsselte Inhalte, Betriebssystembefehle oder Code eingibt?

Eine gute Fuzzing-Engine kann all diese Fragen und noch viele weitere darüber hinaus beantworten.

Wie funktionieren Fuzzing-Tools?

Es gibt eine ganze Reihe kommerzieller Fuzzing-Engines und etliche weitere, die auf Plattformen wie GitHub kostenlos zur Verfügung stehen.

Einige Fuzzing-Engines senden Unmengen von Zufallsinformationen, während andere die Anwendung sorgfältig untersuchen, um dann kontextbezogene, aber unerwartete Inputs zu senden. Darüber hinaus geht es beim Fuzz-Testing nicht nur um Eingaben der User, sondern auch darum, programmierbare Interfaces wie beispielsweise REST-APIs zu testen.

Fuzzing-Tools arbeiten mit verschiedenen Programmiersprachen: Einige können mit allen gängigen Sprachen umgehen, andere funktionieren nur mit Anwendungen, die in einer bestimmten Programmiersprache geschrieben sind. Dabei ist Fuzz-Testing längst nicht mehr nur eine verrückte Option für fortgeschrittene Entwickler. Viele wichtige Normen von ISO und anderen prominenten Gremien empfehlen inzwischen den Einsatz solcher Tools. Unternehmen sollten daher Fuzzing-Tools in ihre Software-Testing-Prozesse integrieren.

Die besten Fuzzing-Tools: Kommerziell und Open Source

Im Folgenden haben wir die aus unserer Sicht zehn besten kommerziellen und kostenlosen Fuzzing-Tools zusammengestellt. Zunächst vier empfehlenswerte kommerzielle Werkzeuge für das Software-Fuzzing:

1. Beyond Security beStorm

Die Fuzzing-Lösung „beStorm“ von Beyond Security ist eine der vielseitigsten auf dem Markt. Sie wurde entwickelt, um sowohl Hardware als auch Software zu testen, und benötigt keinen direkten Zugriff auf den Quellcode, um zu funktionieren. Deshalb ist das Tool auch für so gut wie jede Anwendung, jedes Protokoll, jede Sprache und sogar jede Hardware geeignet. Es ist sogar mit spezialisierten Devices und Applikationen kompatibel, zum Beispiel IoT-Geräten, CANBus-Apps oder Bluetooth-LE-Devices.

Die Vielseitigkeit von beStorm bringt Vorteile für Programmierer, da sie sich nur mit einem

Interface beschäftigen müssen, um eine nahezu unbegrenzte Zahl von Devices oder Applikationen einem Fuzz-Testing zu unterziehen. Die Plattform von Beyond Security enthält dazu 250 vorgefertigte Testing-Module. Darüber hinaus können die User auch relativ einfach eigene neue hinzufügen – etwa für ungewöhnliche oder proprietäre Anwendungen. Diese Fuzzing-Tests können ebenfalls über das gleiche Interface gemanagt werden.

Ein weiterer Vorteil für größere Unternehmen:

Die beStorm-Plattform ist auch als Cloud-Service verfügbar. So können Organisationen mehreren (Remote-)Benutzern Zugang zu den Fuzzing-Tools ermöglichen.

2. Code Intelligenz Fuzz

Die „Code Intelligence Fuzz-Engine“ (CI Fuzz) wird als vorkonfigurierte Ubuntu-Virtual-Machine (VM) geliefert, um sie lokal oder in einer Cloud bereitzustellen. Sobald CI Fuzz in Ihre CI/CD-Pipeline integriert ist, kann das Tool automatisch mit jeder Pull-Anforderung ausgeführt werden. So stellt die Software sicher, dass Änderungen an einer Applikation nicht unbeabsichtigt neue Schwachstellen schaffen oder anderweitig für Probleme sorgen. Da das Tool in den CI/CD-Prozesses integriert ist, läuft dieser Erkennungsprozess relativ schnell ab, sodass sich einfach nachvollziehen lässt, wann und wo sich Programmfehler eingeschlichen haben.

Entdeckt CI Fuzz einen Fehler, sendet es verschiedene Permutationen dieser Eingabe, um den Umfang des Problems zu ermitteln. Auf dieser Grundlage entsteht ein detailliertes Reporting, um Fehlalarme auszuschließen und den Entwicklern die Möglichkeit zu geben, die gefundenen Fehler zu reproduzieren, während sie den Code manuell fixen.

Die CI-Fuzz-Engine greift direkt auf den Quellcode der zu testenden Anwendung zu und unterstützt daher nur bestimmte Sprachen und Frameworks (derzeit C, C++, Java und Go).

Andere Frameworks wie Net Core und Python sollen folgen.

3. Synopsys Fuzzing Test Suite

Das Angebot von Synopsys im Bereich Fuzzing verfolgt im Vergleich zur Konkurrenz einen eigenen Ansatz: Statt ein Fuzzing-Tool zu entwickeln, das mit mehreren Anwendungen arbeiten kann, bietet Synopsys eine ganze Suite, deren Tools jeweils für eine bestimmte Sprache, ein bestimmtes Protokoll oder einen bestimmten Anwendungsfall entwickelt wurden. Dieser „A-la-carte“-Ansatz ermöglicht es den Endanwendern, genau das Fuzzing-Tool zu kaufen, das sie benötigen – ohne dabei Geld für zusätzliche Kapazitäten oder Funktionen ausgeben zu müssen, die sie sehr wahrscheinlich niemals brauchen werden.

Jedes Tool der Synopsis Suite verfügt über eine Reihe von Standardfunktionen, zum Beispiel eine Sammlung vorgefertigter relevanter Test-Cases, eine Reporting-und Analytics-Komponente, eine grafische Benutzeroberfläche für die Konfiguration sowie eine umfassende Dokumentation. Dabei lässt sich jedes Tool auch mit bestimmten Support-Levels kombinieren. Die Synopsys Tools arbeiten mit allen gängigen Komponenten – von DNS-Servern bis hin zu weniger bekannten und spezialisierten Anwendungen wie CANBus oder IKEv2.

4. ForAllSecure Mayhem for Code

Das Fuzzing-Tool „Mayhem for Code“ bietet alle Vorteile moderner Fuzzing-Engines und kombiniert sie mit der Fähigkeit, im Laufe der Zeit effizienter zu werden. Dabei funktioniert die Plattform unabhängig und erfordert nur minimale manuelle Eingriffe.

Die Engine des Tools arbeitet kontinuierlich und nutzt detaillierte Systeminformationen, um ihre Umgebung „kennenzulernen“ und die Fuzzing-Aktivitäten mit zunehmender Erfahrung zu beschleunigen. Mayhem for Code ist sogar in der Lage, auf Grundlage der gewonnenen Erkenntnisse „On-the-fly“-Test-Cases zu generieren. Kurz gesagt: Je ausgiebiger Sie das Tool verwenden, desto besser wird es.

Die Plattform arbeitet derzeit mit einer Vielzahl von Programmiersprachen (beispielsweise Java, Python, Ada, OCaml, Fortran, Jovial, C, C++, Go und Rust). Um Fuzzing-Tests anzustoßen, ist kein direkter Zugriff auf den Applikations-Quellcode nötig.

Neben den Kommerziellen Tools gibt es eine Reihe kostenloser oder quelloffener Fuzzing-Werkzeuge – das sind die Top Sechs:

1. PeachTech Peach Fuzzer

Der „Peach Fuzzer“ von PeachTech war viele Jahre lang eine beliebte kommerzielle Fuzzing-Engine. So beliebt, dass der Hersteller Peach-Tech im Jahr 2020 von GitLab übernommen wurde. Die kostenlose Version der Fuzzing-Engine ist inzwischen zwar immer noch über GitLab erhältlich, wird aber nicht mehr unterstützt oder aktualisiert. Die Idee hinter dem PeachTech-Programm war, ein hochgradig konfigurierbares Tool zu entwickeln, das mit nahezu jeder Programmiersprache und jedem Betriebssystem arbeiten kann. Alle bisherigen Funktionen sind weiterhin in der kostenlosen Version von GitLab enthalten. Allerdings ist die Dokumentation relativ komplex, dafür ist das Tool kostenlos.

Benutzer sollten sich allerdings gut mit Fuzz-Testing auskennen, um echten Nutzen aus diesem Tool zu ziehen. Für Einsteiger eignet sich die PeachTech-Lösung weniger.

2. Google OSS-Fuzz

Auch Google setzt bei der Entwicklung neuer Komponenten für Chrome OS oder seinen Browser im Allgemeinen auf Fuzz-Testing.

Nachdem der Konzern damit große Erfolge erzielen konnte, wurde das Google Tool zu einem Open-Source-Projekt – „OSS-Fuzz“.

OSS-Fuzz greift auf mehrere andere Fuzzing-Engines zurück, darunter AFL++, libFuzzer und Honggfuzz. Das Tool unterstützt mehrere Programmiersprachen (darunter C, C++, Rust, Go, Python und Java/JVM-Code) und funktioniert sowohl mit x86-64-als auch mit i386-Builds.

OSS-Fuzz kann einige gute Bewertungen auf GitHub sowie eine große Community vorweisen.

3. FuzzDB

Bei „FuzzDB“ handelt es sich nicht um eine Fuzzing-Engine, sondern um eine komplexe Bibliothek von Angriffs-Payloads und bekannten Injection-Techniken. So können ungeschützte Programme und Applikationen angegriffen werden. Diese Angriffe lassen sich unterschiedlich kategorisieren, etwa nach Plattformtyp, Expositionspotenzial und anderen Faktoren.

FuzzDB sollte idealerweise in Kombination mit einer programmierbaren Fuzzing-Engine verwendet werden, über die diese Angriffsmuster geladen und an eine Applikation gesendet werden können. Die Kombination mit einer Fuzzing-Engine, die zufällige Eingaben generiert, trägt so dazu bei, ein möglichst breites Spektrum von bekannten Angriffen und Schwachstellen bis hin zu unbekannten, die für die zu testende Anwendung spezifisch sind, abzudecken.

4. Ffuf

„Ffuf“ (Fuzz Faster U Fool) ist eine Fuzzing-Engine, die in Go geschrieben ist. Das kostenlose Tool deckt die meisten gängigen Fuzzing-Funktionen ab und überprüft zum Beispiel, wie Anwendungen auf unbekannte GET-und POST-Anfragen reagieren. Auf ein User Interface müssen Sie bei Ffuf verzichten, hier ist Kommandozeile angesagt.

Die GitHub-Seite von Ffuf führt diverse Beispiele für den Einsatz des Tools an. Darüber hinaus werden regelmäßig neue Funktionen und Features veröffentlicht. Das Tool ist zwar kostenlos, setzt jedoch auf ein Sponsoring-Modell: Neue Funktionen werden für Sponsoren direkt freigegeben, alle anderen Nutzer müssen 30 Tage warten.

5. Google ClusterFuzz

Google verwendet die Engine „ClusterFuzz“, um Fehler in Chrome aufzuspüren. Das Tool ist ebenfalls Teil des Backends für das oben erwähnte OSS-Fuzz-Projekt. Allerdings funktioniert ClusterFuzz mit jedem Programm oder jeder Anwendung, nicht nur mit solchen aus dem Open-Source-Bereich.

Laut der GitHub-Seite hat ClusterFuzz durch seine Integration in OSS-Fuzz bereits über 29.000 Fehler in Google-Produkten und 26.000 in Open-Source-Projekten aufgedeckt. Das Tool ist darauf konzipiert, hochskalierbar zu sein und kann in jeder Umgebung zum Einsatz kommen.

6. go-fuzz

Die „go-fuzz“-Plattform wurde entwickelt, um Pakete zu testen, die in der Programmiersprache Go geschrieben sind. Das Tool wird hauptsächlich für Codes verwendet, die komplexe Text-und Binäreingaben parsen. Laut seinem Entwickler ist go-fuzz besonders gut dafür geeignet, Systeme abzusichern und Eingaben potenziell böswilliger Benutzer zu analysieren.

Die Dokumentation veranschaulicht gut, wie der Fuzzer zu nutzen ist. Ein begleitendes Repository enthält zudem zahlreiche Beispiele für Testfunktionen und Input Settings für verschiedene Anwendungen.

(fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation CSO Online.