Codeanalyse: ClusterFuzzLite automatisiert Fuzzing im Softwareentwicklungszyklus

Mit Googles Open-Source-Tool lässt sich Fuzz-Testing in den CI/CD-Workflow integrieren, um Software während der Entwicklung auf Schwachstellen zu untersuchen.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 2 Min.
Von
  • Rainald Menge-Sonnentag

Google hat mit ClusterFuzzLite ein Open-Source-Werkzeug veröffentlicht, das Fuzz-Testing in den CI/CD-Prozess (Continuous Integration/Continuous Delivery) integriert. Das Tool basiert auf dem kommerziellen ClusterFuzz-Angebot des Internetriesen und ist modular aufgebaut. Es soll Schwachstellen in unterschiedlichen Bereichen des Softwareentwicklungszyklus mit automatisierten Tests aufspüren.

ClusterFuzzLite greift an unterschiedlichen Stellen des Softwareentwicklungszyklus.

(Bild: Google)

Beim Fuzzing blicken Werkzeuge anders als bei der statischen Codeanalyse nicht auf den Sourcecode, sondern füttern die zu testende Software mit Eingabedaten, die zufällig oder bewusst fehlerhaft beziehungsweise unvollständig sind. Auf die Weise findet das Fuzz-Testing Fehler wie Pufferüberläufe, die durchrutschen können, wenn menschliche Tester nur plausible Daten nutzen.

Google hatte 2016 mit OSS Fuzz ein Projekt zum Testen von Open-Source-Software mit Fuzzing vorgestellt. Es hat laut dem Blogbeitrag zur Veröffentlichung von ClusterFuzzLite in den vergangen fünf Jahren insgesamt 6.500 Schwachstellen und 21.000 funktionale Bugs in 500 kritischen Open-Source-Projekten aufgespürt.

ClusterFuzzLite kann Fuzzing bei jedem Pull Request anstoßen, um Fehler aufzuspüren, bevor sie ins Projekt einfließen. Standardmäßig laufen die Tests jeweils zehn Minuten oder bis sie auf einen Crash stoßen. Entwicklerinnen und Entwickler können sowohl Crashing-Testcases als auch Berichte über die Testabdeckung herunterladen.

Das Tool gibt Einblick in die Testabdeckung nach Codezeilen, Funktionen und Regionen.

(Bild: Google)

Mit Batch-Fuzzing kann das Tool längere und asynchron zum Softwareentwicklungsprozess laufende Tests durchführen. Sie sollen Bugs aufspüren, die beim zeitlich limitierten Fuzzing der Codeänderungen durchgerutscht sind.

Hinsichtlich der CI-Systeme bietet ClusterFuzzLite zum Start eine Anbindung an GitHub Actions, Google Cloud Build und das Kubernetes-basierte CI/CD-System Prow. Die Anbindung an weitere CI-Systeme soll ohne große Umstände möglich sein.

Bei den Programmiersprachen analysiert das Werkzeug Code, der in C, C++, Go, Python, Rust oder Swift geschrieben ist. Daneben deckt es JVM-basierte (Java Virtual Machine) Sprachen wie Java, Kotlin, Clojure oder Scala ab. Google hatte im März zusammen mit Code Intelligence das JVM-Fuzzing-Tool Jazzer in OSS Fuzz integriert.

Weitere Details zu ClusterFuzzLite lassen sich dem Security-Blog bei Google entnehmen. Demnach haben größere Projekte wie systemd und curl ClusterFuzzLite bereits vor der offiziellen Ankündigung getestet. Einen tieferen Einblick gibt die Dokumentation des Werkzeugs. Der Sourcecode findet sich im GitHub-Repository.

(rme)