Fuzzing ist eine automatisierte Softwaretesttechnik, bei der große Mengen zufälliger oder halbstrukturierter Daten (auch "Fuzz" genannt) in ein Programm oder System eingespeist werden, um unerwartetes Verhalten zu finden. Das Ziel ist es, Schwachstellen wie Sicherheitslücken, Abstürze oder Leistungsprobleme aufzudecken, indem das System mit Eingaben bombardiert wird, die möglicherweise nicht ordnungsgemäß verarbeitet werden können.
Der Fuzzing-Prozess kann auf verschiedene Arten durchgeführt werden, einschließlich der Verwendung von speziell entwickelten Fuzzing-Tools oder -Frameworks. Diese Tools erzeugen automatisch eine Vielzahl von Eingaben, die an die zu testende Software gesendet werden. Die Reaktion der Software auf diese Eingaben wird überwacht, und wenn unerwartetes Verhalten festgestellt wird (zum Beispiel ein Absturz oder eine unerwartete Ausgabe), wird dies als potenzielle Schwachstelle betrachtet und dokumentiert.
Fuzzing ist eine äußerst effektive Methode zur Identifizierung von Softwarefehlern und Schwachstellen, insbesondere in komplexen und fehleranfälligen Systemen wie Betriebssystemen, Netzwerkdiensten, Browsern und eingebetteten Systemen. Es wird sowohl von Sicherheitsforschern als auch von Softwareentwicklern eingesetzt, um die Robustheit und Zuverlässigkeit von Software zu verbessern.