E-mail senden E-Mail Adresse kopieren

2025-07-08
Annabelle Theobald

Fuzzing reloaded: Mit gezielter Manipulation zu mehr Sicherheit im Netz

Programme wie Webbrowser oder Webserver tauschen ständig Daten über das Internet aus. Dadurch sind sie besonders interessant für Angreifer:innen, weswegen wir diese Programme besonders gründlich auf Schwachstellen untersuchen müssen. Doch viele herkömmliche Testmethoden stoßen dabei an Grenzen: Sobald Nachrichten verschlüsselt sind oder die Kommunikation zu kompliziert wird, versagen sie. Genau hier setzt „Fuzztruction-Net“ an. Entwickelt von CISPA-Forscher Nils Bars und seinem Team, verfolgt das neue Verfahren einen cleveren Ansatz: Statt Nachrichten direkt zu verändern, wird einer der Gesprächspartner leicht aus dem Takt gebracht. So lassen sich selbst in weit verbreiteter und gut getesteter Software neue Fehler aufspüren. Sein Paper „No Peer, no Cry: Network Application Fuzzing via Fault Injection“ hat Bars auf der Conference on Computer and Communications Security 2024 vorgestellt.

Sogenannte Fuzzer kommen beim Testen von Software ständig zum Einsatz: Es handelt sich dabei um automatisierte Testwerkzeuge, die Programme mit zufälligen oder speziell erzeugten Eingaben füttern, um so unerwartetes Verhalten, Abstürze oder Sicherheitslücken zu finden. Sie sind vor allem auch bei der Suche nach Fehlern nützlich, die durch eher ungewöhnliche Eingaben entstehen – also Dinge, die bei normalen Tests oft übersehen werden. „Bei Programmen, die sehr klar strukturiert Eingaben verarbeiten oder Dateien einlesen, funktioniert das auch schon ganz gut. Aber Netzwerkprogramme mit Fuzzern zu testen, ist viel komplizierter“, sagt Bars.

Netzwerk-Fuzzing mit Fehlerinjektion: Ein neuer Testansatz

Woran liegt das? „Klassische Fuzzer versuchen einen der Gesprächspartner im Netzwerk zu ersetzen, stellen sich dabei aber sehr ungeschickt an: Sie haben kein echtes Verständnis davon, wie sie vorgehen müssen. Sie verstehen weder, wann sie welche Nachrichten senden müssen, noch welche Schlüssel oder Sitzungsdaten gebraucht werden und sie können sich auch nicht an frühere Nachrichten erinnern. Das Gegenüber, also entweder Client oder Server, merkt das früher oder später und bricht die Kommunikation ab, bevor die Nachrichten einen Fehler oder eine Sicherheitslücke aufdecken können“, so der Forscher.

Sein Ansatz ist daher nicht wie bei klassischen Fuzzern einen der Gesprächspartner zu ersetzen, sondern ihn stattdessen so geschickt zu manipulieren, dass er sinnvolle, richtig verschlüsselte, aber eben unerwartete Nachrichten produziert. Dieser Trick nennt sich „fault injection“, dabei werden gezielt Fehler in den Programmablauf des Gespächspartners eingebaut. „Das Beste ist, dass wir damit sowohl Server als auch Clients testen können. Fuzzstruction-Net ist damit der erste Netzwerk-Fuzzer, der das kann. Bisher gibt es solche Fuzzer im Prinzip nur für Server“, sagt Bars.

Mehr Testtiefe und neue Sicherheitslücken

In Tests zeigte der Prototyp von Fuzztruction-Net beeindruckende Ergebnisse: Im Vergleich zu bisherigen Methoden deckte das neue Verfahren im Schnitt 16 Prozent mehr Programmcode ab – ein wichtiges Maß für Testtiefe – und entdeckte dabei dreimal so viele Fehler wie der bisher beste Netzwerk-Fuzzer. Fuzztruction-Net fand dabei auch Schwachstellen in gut getesteten Programmen wie Nginx, dem OpenSSH-Client und cURL. „Wir haben eine bestimmte Art von Fehlern in den Fokus genommen, sogenannte „Memory Corruption“. Das sind Programmfehler, bei dem ein Programm Daten in einem Speicherbereich verändert, auf den es gar nicht zugreifen sollte. Das kann zu Abstürzen, Datenverlusten und kritischen Sicherheitslücken führen“, so Bars. Insgesamt entdeckte das Forschungsteam 23 neue, auch über das Netzwerk ausnutzbare Sicherheitslücken in verbreiteter Netzwerkinfrastruktur – ein starkes Signal für die Relevanz des neuen Ansatzes.

Hilfreiche Hinweise für Entwickler:innen: Fuzzstruction-Net macht Sicherheitslücken nachvollziehbar

Selbst beheben können die Fuzzer die Fehler leider noch nicht. Es braucht also weiterhin die Arbeit von Entwickler:innen, die diesen Fehlern dann nachspüren müssen. „Das Wesentliche ist aber, dass die Fehler reproduzierbar sind. Damit haben Entwickler:innen einen klaren Anhaltspunkt, wo das Problem entsteht und können es dann beheben“, erklärt Bars. Nginx hat bereits Interesse an der Verwendung von Fuzzstruction-Net gezeigt. „Unser Prototyp funktioniert gut. Für den dauerhaften Einsatz lässt er sich aber sicher noch optimieren“, so Bars. Der Prototyp steht jetzt schon allen Interessierten open source zur Verfügung.