Zurück zu den Updates
New releaseSep 4, 2026

AFLplusplus v5.03c

AFL++ ist ein hochmoderner Fuzzer und die Nummer 1 in Benchmarks. Ursprünglich basierte er auf AFL. Heute kommt er mit qemu 5.1, kollisionsfreier Coverage, verbessertem laf-intel & redqueen, AFLfast++ Power Schedules, MOpt-Mutatoren, unicorn_mode und vielem mehr!

Teilen

American Fuzzy Lop plus plus (AFL++)

AFL++ logo

Release-Version: 5.03c

GitHub-Version: 5.03c

Repository: https://github.com/AFLplusplus/AFLplusplus

AFL++ wird gepflegt von:

Ursprünglich entwickelt von Michal "lcamtuf" Zalewski.

AFL++ ist ein überlegener Fork von Googles AFL - mehr Geschwindigkeit, mehr und bessere Mutationen, mehr und bessere Instrumentierung, Unterstützung für benutzerdefinierte Module usw.

AFL++ ist unter der AGPL-3.0-or-later lizenziert und enthält außerdem Dateien unter der Apache-2.0-Lizenz. Alles, was in eine Fuzzing-Harness kompiliert wird, ist und bleibt unter der Apache-2.0-Lizenz lizenziert. Jede Datei gibt ihre eigene Lizenz in ihrem SPDX-License-Identifier-Header an

  • das ist die Lizenz, die Sie für diese Datei befolgen müssen. Eine optionale kommerzielle Lizenz ist für Organisationen verfügbar, die die AGPL nicht nutzen können (erhältlich durch eine Spende für einen guten Zweck - das Projekt und seine Betreuer erhalten kein Geld). Siehe LICENSING.md für einen Überblick in einfacher Sprache und den Abschnitt Lizenz unten für Details.

Erste Schritte

Hier sind einige Informationen für den Einstieg:

  • Für einen Überblick über die AFL++-Dokumentation und eine sehr hilfreiche grafische Anleitung besuchen Sie bitte docs/README.md.
  • Für den Einstieg mit Tutorials gehen Sie zu docs/tutorials.md.
  • Für Releases siehe den Releases-Tab und Branches. Die besten Branches sind jedoch stable oder dev - je nach Ihrer Risikobereitschaft. Werfen Sie auch einen Blick auf die Liste der wichtigen Änderungen in AFL++ und die Liste der Funktionen.
  • Wenn Sie AFL++ für Ihre akademische Arbeit verwenden möchten, schauen Sie auf die Papers-Seite auf der Website.
  • Um unsere Arbeit zu zitieren, sehen Sie sich den Abschnitt Zitieren an.
  • Für Vergleiche verwenden Sie das fuzzbench-aflplusplus-Setup oder afl-clang-fast mit AFL_LLVM_CMPLOG=1. Sie finden die aflplusplus-Standardkonfiguration auf Googles fuzzbench.

AFL++ erstellen und installieren

Um AFL++ einfach mit allem kompiliert verfügbar zu haben, ziehen Sie das Image direkt vom Docker Hub (verfügbar für x86_64 und arm64):

docker pull aflplusplus/aflplusplus
docker run -ti -v /location/of/your/target:/src aflplusplus/aflplusplus

Dieses Image wird automatisch veröffentlicht, wenn ein Push auf den stable-Branch erfolgt (siehe Branches). Wenn Sie den obigen Befehl verwenden, finden Sie Ihren Ziel-Quellcode im Container unter /src.

Hinweis: Sie können auch aflplusplus/aflplusplus:dev ziehen, das den aktuellsten Entwicklungsstand von AFL++ darstellt.

Um AFL++ selbst zu erstellen - was wir empfehlen - fahren Sie fort bei docs/INSTALL.md.

Schnellstart: Fuzzing mit AFL++

HINWEIS: Bevor Sie beginnen, lesen Sie bitte über die Risiken des gesunden Menschenverstands beim Fuzzing.

Dies ist ein Schnellstart zum Fuzzing von Zielen, deren Quellcode verfügbar ist. Um den Prozess im Detail zu lesen, siehe docs/fuzzing_in_depth.md.

Um mehr über das Fuzzing anderer Ziele zu erfahren, siehe:

Schritt-für-Schritt-Schnellstart:

  1. Kompilieren Sie das zu fuzzingende Programm oder die Bibliothek mit afl-cc. Ein üblicher Weg wäre:

    CC=/path/to/afl-cc CXX=/path/to/afl-c++ ./configure --disable-shared
    make clean all
    
  2. Besorgen Sie sich eine kleine, aber gültige Eingabedatei, die für das Programm sinnvoll ist. Beim Fuzzing von ausführlicher Syntax (SQL, HTTP usw.) erstellen Sie zusätzlich ein Wörterbuch, wie in dictionaries/README.md beschrieben.

  3. Wenn das Programm von stdin liest, führen Sie afl-fuzz wie folgt aus:

    ./afl-fuzz -i seeds_dir -o output_dir -- \
    /path/to/tested/program [...program's cmdline...]
    

    Um ein Wörterbuch hinzuzufügen, fügen Sie -x /path/to/dictionary.txt zu afl-fuzz hinzu.

    Wenn das Programm Eingaben aus einer Datei liest, können Sie @@ in die Befehlszeile des Programms setzen; AFL++ fügt dort einen automatisch generierten Dateinamen für Sie ein.

  4. Untersuchen Sie alles, was in der Fuzzer-Oberfläche rot angezeigt wird, indem Sie umgehend docs/afl-fuzz_approach.md#understanding-the-status-screen konsultieren.

  5. Sie finden gefundene Abstürze und Hänger in den Unterverzeichnissen crashes/ und hangs/ im -o output_dir-Verzeichnis. Sie können die Abstürze wiedergeben, indem Sie sie dem Ziel zuführen, z. B. wenn Ihr Ziel stdin verwendet:

    cat output_dir/crashes/id:000000,* | /path/to/tested/program [...program's cmdline...]
    

    Sie können Cores erzeugen oder gdb direkt verwenden, um die Abstürze zu verfolgen.

  6. Für die Coverage-Analyse Ihres Fuzzings empfehlen wir unsere Partner-Tools cov-analysis (quellbasierte Coverage-Berichte aus einem Fuzzing-Korpus) und fuzz-reachability (statische Analyse, welche Funktionen eine Harness erreichen kann, um umsetzbare Coverage-Lücken von totem Code zu unterscheiden und Instrumentierungs-Allowlists zu generieren)

  7. Wir können es nicht genug betonen - wenn Sie effektiv fuzzen möchten, lesen Sie das Dokument docs/fuzzing_in_depth.md!

Kontakt

Fragen? Bedenken? Fehlerberichte?

Branches

Die folgenden Branches existieren:

Kategorien