Thema: Expanding Horizons

loading

loading

loading

Whats all the fuzz about - Automated Softwaretesting with Modern Fuzzing

Fuzzing ist eine dynamische Software-Testing-Methode, die ihren Ursprung in den 80er Jahren hat. Dabei wird durch randomisierte Eingaben das zu testende Programm auf Robustheit geprüft. In der Vergangenheit nur selten verwendet, hat Fuzzing mittlerweile eine deutlich höhere Bedeutung für das Software-Testing gewonnen. Mit modernen Methoden wie den Genetischen Algorithmen des „Coverage-based Fuzzing“ (AFL oder libFuzzer) und optimierten Solver-APIs bei der symbolischen Ausführung ist es heute deutlich einfacher, schnell und effizient Sicherheits- und Zuverlässigkeitsprobleme in der Software zu finden. Leider ist der Aufwand diese Technologien zu nutzen mit enormen Hürden wie z.B. durch die Anpassung der bestehenden Build-Prozessen, APIs und Interfaces.

Um das moderne Fuzzing dennoch auf allen Systemen zu ermöglichen, wurde ein Framework geschaffen, welches das verwenden der verschiedenen Fuzzing- (AFL, libFuzzer) sowie Symbolic-Code-Execution-Frameworks (Klee, QSym) deutlich vereinfacht. Damit ist es nicht mehr nötig, dass die bestehenden Build-Prozesse sowie die bestehenden Interfaces geändert werden müssen, was den einstieg in das moderne Fuzzing deutlich vereinfacht.

Ein weitere Schwierigkeit beim verwenden von Fuzzing sind Schnittstellen, die strukturierte Daten (wie z.B. JSON oder XML-Schnittstellen) erwarten. Denn hier landen die meisten randomisierten Eingaben der Fuzzing-Engine im Parser. Um das Projekt dennoch effektiv fuzzen zu können ist bis dato ein erheblicher manueller Aufwand nötig, um die Schnittstellen zu abstrahieren. Unser Framework dagegen bietet eine einfache Schnittstelle für strukturierte Daten, sodass der manuelle Integrationsaufwand deutlich reduziert wird.

Sergej Dechand

Sergej Dechand ist Co-Founder und COO bei der Code Intelligence GmbH in Bonn. Sergej Dechand hat ein abgeschlossenes Studium der Informatik (Master) an der TU-Braunschweig. Hiernach hat er 5 Jahre bei der Usable Security and Privacy Group an der Uni Bonn unter der Leitung von Matthew Smith geforscht. In dieser Zeit hat er zahlreiche Publikationen an wissenschaftlichen Top-Konferenzen (Usenix Security, S&P, CCS) in der IT-Security publiziert. Er verfügt über 10 Jahre Erfahrung in den Bereichen Softwareentwicklung, Software-Testing, IT-Sicherheit sowie wissenschaftlichem Publizieren. Seit 2017 hat er mit Henning Perl, Khaled Yakdan, Philipp Langnickel und Matthew Smith eine Ausgründung des Projekts “Code Intelligence” aus der Uni Bonn gestartet, was mittlerweile als ein erfolgreiches Unternehmen im Bereich Software-Testing agiert.

Seine besondere Expertise liegt im Bereich der Usable Security sowie automatisiertem Software-Testing. Vorträge u.A. auf der S&P 2015, USENIX Security 2017 runden sein/ihr Portfolio ab.

Seine Erfahrung als Referent: Dimva 2014, S&P 2015, USENIX Security 2017, Lecturer and Co-Creator: Systemnahe Programmierung an der Uni Bonn (in Kooperation mit Matthew Smith und Matthias Frank, 2014-2018) sowie Fuzzing-Bootcamp an der Uni Bonn.