Techtiefen: Fuzzing

Die Episode widmet sich dem Fuzzing, einer Methode, die neben statischer und dynamischer Codeanalyse, qualitativ hochwertigen, fehlerfreien Code liefern soll.

Techtiefen Nico Kreiling  –  0 Kommentare

Fuzzing ist neben statischer und dynamischer Codeanalyse eine Methodik, um qualitativ hochwertigen und fehlerfreien Softwarecode zu erzeugen. Anders als bei Unit-Tests werden beim Fuzzy Testing Testfälle nicht manuell definiert, sondern anhand statistischer Funktionen zufällig erzeugt. Durch eine hohe Anzahl der so generierten Tests wird die Software auch auf außergewöhnliche Eingabeparameter getestet, die häufig Sicherheitsschwachstellen darstellen – und daher Angreifern offenstehen.

Nico Kreiling spricht in dieser Techtiefen-Folge mit Sergej Dechand über fehlerfreien und somit sicheren Softwarecode und welche Arten von Code-Analyse dazu wie beitragen können. Sergej erzählt von der Entwicklung des Fuzzy Testing, die bereits bei zufällig gewählten Lochkarten ihren Ursprung hat, zwischenzeitig an Bedeutung verlor, derzeit aber wieder große Erfolge vorweisen kann. Das liegt zum einen an technischen Weiterentwicklungen hin zu intelligenterem Fuzzing wie etwa AFL (American Fuzzy Lop), das Brute-Force Fuzzing mit genetischen Algorithmen zur Auswahl vielversprechender Parameter kombiniert.

Des Weiteren sorgen Fuzzing-Initiativen der großen Tech-Player wie etwa OSS-Fuzz für Aufsehen, da sie immense Mengen bisher unerkannter Sicherheitslücken in Open-Source-Software aufdeckt. Sergej erklärt auch, wie sich Fuzzing am besten instrumentieren lässt, wohin die aktuelle Forschung zielt und wo derzeit die größten Probleme in der Umsetzung liegen.

Sergej ist Mitgründer von Code-Intelligence, einem Startup, das Firmen bei der Umsetzung von Fuzzy Testing in der Praxis unterstützt.