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.04a

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 ein Fuzzing-Harness kompiliert wird, ist und bleibt unter Apache 2.0 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 verwenden können (erhältlich durch eine Spende an einen guten Zweck – das Projekt und seine Maintainer erhalten kein Geld). Siehe LICENSING.md für eine allgemein verständliche Übersicht und den Lizenzabschnitt unten für Details.

Erste Schritte

Hier sind einige Informationen, um Ihnen den Einstieg zu erleichtern:

  • Für einen Überblick über die AFL++-Dokumentation und einen sehr hilfreichen grafischen Leitfaden besuchen Sie bitte docs/README.md.
  • Um mit den Tutorials zu beginnen, gehen Sie zu docs/tutorials.md.
  • Für Releases siehe den Releases-Tab und Branches. Die besten Branches, die Sie verwenden sollten, 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 Features.
  • Wenn Sie AFL++ für Ihre akademische Arbeit verwenden möchten, sehen Sie sich die Papers-Seite auf der Website an.
  • Um unsere Arbeit zu zitieren, sehen Sie sich den Abschnitt Zitieren an.
  • Für Vergleiche verwenden Sie das aflplusplus-Setup von fuzzbench oder verwenden Sie afl-clang-fast mit AFL_LLVM_CMPLOG=1. Die Standardkonfiguration von aflplusplus finden Sie auf Googles fuzzbench.

AFL++ bauen und installieren

Um AFL++ einfach mit allem kompiliert verfügbar zu haben, ziehen Sie das Image direkt von 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 in den Stable-Branch erfolgt (siehe Branches). Wenn Sie den obigen Befehl verwenden, finden Sie Ihren Zielquellcode in /src im Container.

Hinweis: Sie können auch aflplusplus/aflplusplus:dev pullen, was dem aktuellsten Entwicklungsstand von AFL++ entspricht.

Um AFL++ selbst zu bauen – was wir empfehlen – fahren Sie fort mit docs/INSTALL.md.

Schnellstart: Fuzzing mit AFL++

HINWEIS: Bevor Sie beginnen, lesen Sie bitte über die allgemeinen Risiken des Fuzzings.

Dies ist ein Schnellstart für das Fuzzing von Zielen, deren Quellcode verfügbar ist. Um den Prozess im Detail zu erfahren, 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 Programm oder die Bibliothek, die gefuzzt werden soll, mit afl-cc. Eine übliche Vorgehensweise wäre:

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

  3. Wenn das Programm von stdin liest, führe 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 Kommandozeile des Programms einfügen; AFL++ setzt dort einen automatisch generierten Dateinamen für Sie ein.

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

  5. Gefundene Abstürze und Hänger finden Sie in den Unterverzeichnissen crashes/ und hangs/ im Verzeichnis -o output_dir. Sie können die Abstürze erneut ausführen, 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 generieren oder gdb direkt verwenden, um die Abstürze weiter zu verfolgen.

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

  7. Wir können das nicht oft genug betonen – wenn Sie effektiv fuzzen wollen, lesen Sie das Dokument docs/fuzzing_in_depth.md!

Kontakt

Fragen? Bedenken? Fehlerberichte?

Branches

Die folgenden Branches existieren:

Kategorien