CyberGlossary

Anwendungssicherheit

Fuzz-Testing

Auch bekannt als: Fuzzing

Definition

Automatisierte Testtechnik, die ein Programm mit großen Mengen fehlerhafter, zufälliger oder unerwarteter Eingaben füttert, um Crashes, Speicherkorruption und Sicherheitslücken aufzudecken.

Fuzz-Testing (Fuzzing) beschießt ein Ziel – Funktion, Parser, Protokoll oder ganze Anwendung – mit mutierten oder generierten Eingaben und beobachtet dabei Crashes, Hangs, Assertion-Fehler oder Sanitizer-Reports. Ziel ist es, Eingaben zu finden, die Sicherheitseigenschaften verletzen: Out-of-Bounds, Use-After-Free, Endlosschleifen, unbehandelte Exceptions oder Logikfehler. Moderne Fuzzer wie AFL++, libFuzzer, Jazzer und Atheris nutzen Coverage-Feedback, um Eingaben gezielt in neue Codepfade zu treiben – besonders wirksam bei Parsern, Decodern und Kryptocode. Fuzzing ist heute fester Bestandteil der SSDLCs von Google (OSS-Fuzz) und Microsoft und hat viele hochwirksame CVEs ans Licht gebracht.

Beispiele

  • OSS-Fuzz lässt libFuzzer kontinuierlich gegen den OpenSSL-Parser laufen, um Speicherkorruptionen zu finden.
  • Jazzer fuzzt einen Java-JSON-Parser und findet DoS durch tief verschachtelte Eingaben.

Verwandte Begriffe