Zufall als Werkzeug – Wie Fuzzing die IT-Sicherheit verändert
Software ist heute das Rückgrat nahezu aller Geschäftsprozesse – und damit auch ein potenzielles Einfallstor für Angreifer. Gleichzeitig nimmt die Zahl an Cyberangriffen massiv zu und trifft Großindustrie ebenso wie öffentliche Einrichtungen sowie kleine und mittelständische Unternehmen. Die Anforderungen an sichere Software steigen daher und werden durch regulatorische Vorgaben wie NIS2 oder den Cyber Resilience Act verstärkt. Eine Methode, um gezielt Schwachstellen aufzuspüren – auch dort, wo andere Verfahren versagen – ist Fuzzing. Fraunhofer-Forscher Martin Schneider über den Stand der Technik, aktuelle Entwicklungen und praktische Empfehlungen.
Herr Schneider, was passiert, wenn Software nicht ausreichend getestet wird – und warum ist das Risiko heute besonders hoch?
Unzureichende Tests führen dazu, dass Schwachstellen unentdeckt bleiben – oft über Jahre. Das kann im schlimmsten Fall zu Datenverlust, Systemausfällen oder sogar zur Kompromittierung kritischer Infrastrukturen führen. Die Angriffsflächen sind heute vielfältiger denn je. Besonders gefährlich sind sogenannte Zero-Day-Schwachstellen – also Sicherheitslücken, die noch unbekannt sind und für die noch keine Sicherheitspatches existieren. Fuzzing ist eine der wenigen Methoden, mit denen man solche Lücken automatisiert und proaktiv finden kann, bevor sie ausgenutzt werden.
Fuzzing ist schon ein älteres Konzept. Warum ist es heute so relevant?
Tatsächlich ist Fuzzing kein neues Konzept. Erste Ansätze gab es schon zu Beginn der 1990er Jahre. Damals war es eher ein experimentelles Verfahren – man hat Programme mit Zufallsdaten »gefüttert« und geschaut, ob sie abstürzen. Der Unterschied heute liegt in der Systematik. Moderne Fuzzer arbeiten intelligent, nutzen Rückmeldungen aus dem zu testenden System und können gezielt Eingaben erzeugen, die wahrscheinlicher zu Fehlern führen. Das macht Fuzzing heute hoch relevant – gerade in Zeiten von DevSecOps, Supply-Chain-Security-Herausforderungen und neuen regulatorischen Anforderungen.
Fuzzing gilt als besonders effektiv, wenn es darum geht, schwer auffindbare Schwachstellen zu identifizieren. Was macht diese Methode so leistungsfähig?
Fuzzing arbeitet nicht mit festen Testfällen, sondern generiert Eingaben dynamisch – oft millionenfach. Dadurch werden auch Randfälle und unerwartete Zustände getestet, die in klassischen Tests nicht berücksichtigt werden. Das ist besonders effizient bei komplexen Schnittstellen oder Protokollen. Moderne Fuzzer nutzen zudem Rückmeldungen aus dem zu testenden System – etwa Codeüberdeckung oder Crash-Logs – um ihre Eingaben gezielt zu verbessern. Das macht sie deutlich effizienter als frühere Ansätze, die rein zufallsbasiert arbeiteten.
In der Praxis stellt sich allerdings die Frage: Wie lässt sich Fuzzing sinnvoll in bestehende Teststrategien integrieren – gerade in sicherheitskritischen Bereichen?
Fuzzing sollte nicht nur isoliert betrachtet, sondern auch als Ergänzung zu statischer Analyse und klassischen Unit-Tests genutzt werden. Besonders in frühen Entwicklungsphasen kann es helfen, Schwächen in der Robustheit von Schnittstellen zu identifizieren und diese somit zu härten. Wichtig ist, dass die Ergebnisse ernst genommen werden. Fuzzing findet Fehler, die nicht immer offensichtlich sind und schwer zu analysieren sein können. Diese sind jedoch genauso sicherheitsrelevant wie andere Sicherheitslücken.
Was sollten also Organisationen beachten, die Fuzzing (erstmals) einsetzen möchten?
Der Einstieg ist einfacher als viele denken. Wichtig ist, mit einem klar abgegrenzten Testgegenstand anzufangen – etwa einer API oder einem Parser. Für größere Projekte gibt es leistungsfähige Open-Source-Tools wie AFL, libFuzzer oder auch OSS-Fuzz. Und: Die Infrastruktur muss stimmen. Fuzzing erzeugt viele Tests und benötigt entsprechende Rechenleistung und Monitoring. Wer das berücksichtigt, kann schnell und mit geringem personellem Einsatz erste Erfolge erzielen.
Welche technischen Entwicklungen haben das Fuzzing in den letzten Jahren vorangebracht?
Ein großer Schritt war die Einführung von »Coverage-guided Fuzzing«. Hier wird analysiert, welche Teile des Codes bereits getestet wurden – und welche noch nicht. So lassen sich gezielt neue Pfade ansteuern. Auch die Integration von Machine Learning ist spannend. Einige Fuzzer lernen aus früheren Tests und können Eingaben generieren, die besonders wahrscheinlich zu Fehlern führen. Das ist ein aktives Forschungsfeld. Am Ende zählt aber: Wer sieht, dass ein automatisierter Test echte Schwachstellen findet, versteht den Wert – und liefert sicherere Software aus.
Letzte Änderung: