text: #30 Fuzzing – Techtiefen
  Fuzz Testing (Fuzzing) ist eine dynamische Code-Analyse-Methodik, um absichtlich ungültige oder nicht erwartete Daten an ein lauffähiges Programm zu schicken mit der Hoffnung einen Fehlerfall oder Absturz zu produzieren. Das ist es damit hochwertigeren und fehlerfreien Software Code zu erzeugen. Anders als bei Unit-Tests werden beim Fuzz Testing Testfälle nicht manuell definiert, sondern von verschiedenen Mutationsalgorithmen zufällig und verhaltensbasiert erzeugt. Durch eine hohe Anzahl der so generierten Tests wird das Programm auch auf außergewöhnliche Eingabeparameter getestet, welche häufig Sicherheitsschwachstellen darstellen und daher Angreifern genutzt werden.
  Mit Sergej Dechand rede ich über fehlerfreien und somit sicheren Softwarecode und welche Arten von Code-Analyse dazu wie beitragen können. Er erzählt von der Entwicklung des Fuzz Testing, welche bereits bei zufällig gewählten Lochkarten ihren Ursprung hat, zwischenzeitlich an Bedeutung verlor, derzeit aber sehr große Erfolge vorweisen kann. Dies liegt zum einen an technischen Weiterentwicklungen hin zu intelligenterem Fuzzing wie etwa durch AFL, welches das rein zufällige Fuzzing mit Kombination aus Instrumentierung und genetischen Algorithmen intelligenter macht. Fuzzing-Initiativen der großen Tech-Player wie z.B. OSS-Fuzz sorgen für Aufsehen, da sie immense Mengen bisher unerkannter Sicherheitslücken in Open Source-Software automatisiert aufdeckt. Sergej erklärt darüber hinaus auch, wie Fuzzing am besten instrumentiert wird, wohin die aktuelle Forschung zielt und wo derzeit die größten Probleme in der Umsetzung liegen.
  Sergej ist Mitgründer von Code Intelligence, welches an einer Software Testing Plattform arbeitet mit der Vision Softwareentwicklern einen einfacheren Einstieg in moderne Testingmethoden u.A. modernes Fuzzing zu ermöglichen.
  Fuzzingbook: Thx to Christial Holler und Prof. Andreas Zeller das Buch für Studenten und interessierte
  Analysis-Tools Plattform: Auflistung und Bewertung zahlreicher Tools zur Code-Analyse.
  Code-Integlligence Blog Allgemeine Erklärung wie modernes Fuzzing funktioniert
  Publikationen von Sergej, Cornelius und Thorsten
  FuzzCon Hier gibt es nächste Woche viele Vorträge zu dem Thema
  AFL war der erste "moderne" Fuzzer, AFL++ wird gut weitergepflegt, hier haben wir einige Patches beigetragen und nutzen es gerne