#30 Fuzzing
Techtiefen - En podcast af Nico Kreiling
Kategorier:
Fuzzing ist neben statischer und dynamischer Code-Analyse 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 von statistischen Funktionen zufällig 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 erzhält von der Entwicklung des Fuzzy Testing, welche bereits bei zufälllig gewählten Lochkarten ihren Ursprung hat, zwischenzeitig an Bedeutung verlor, derzeit aber große Erfolge vorweisen kann. Dies liegt zum einen an technischen Weiterentwicklungen hin zu intelligenterem Fuzzing wie etwa AFL, welches brute-force Fuzzing mit genetische Algorithmen zur Auswahl vielversprechender Parameter kombiniert. Desweiteren 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 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, einem Startup welches Firmen bei der Umsetzung von Fuzzy Testing in der Praxis unterstützt.