
Ein Fuzzer für Full-VM-Kernel-/Treiber-Targets
kAFL/Nyx ist ein schneller, geführter Fuzzer für die x86-VM. Er eignet sich hervorragend für alles, was als QEMU/KVM-Gast ausgeführt wird, insbesondere x86-Firmware, Kernel und vollwertige Betriebssysteme.
Hinweis: Alle Komponenten werden ausschließlich zu Forschungs- und Validierungszwecken bereitgestellt. Verwendung auf eigene Gefahr.
kAFL ist der Haupt-Fuzzer, der die Initiative Linux Security Hardening for Confidential Compute vorantreibt, Schwachstellen in einer komplexen Umgebung identifiziert und die Sicherheit des Linux-Kernels für alle CC-Lösungen verbessert.
Weitere erfolgreiche Zielobjekte für kAFL/Nyx sind:
Darüber hinaus wurde kAFL bei Intel intern zur Validierung von x86-Firmware und Treibern sowie zum Fuzzing von SMM-Handlern eingesetzt.
kAFL/Nyx nutzt Intel VT, Intel PML und Intel PT, um eine effiziente Ausführung, Snapshot-Reset und Coverage-Feedback für Greybox- oder Whitebox-Fuzzing-Szenarien zu erreichen. Es ermöglicht, viele x86-FW- und OS-Kernel mit einer beliebigen Toolchain und minimalen Änderungen am Code auszuführen.
kAFL verwendet einen eigenen kAFL-Fuzzer, der in Python geschrieben ist. Der kAFL-Fuzzer folgt einem AFL-ähnlichen Design und ist optimiert für die parallele Arbeit mit vielen Qemu-Instanzen, mit flexibler VM-Konfiguration, Protokollierung und Debug-Optionen.
kAFL integriert den Radamsa-Fuzzer sowie die Redqueen- und Grimoire-Erweiterungen. Redqueen nutzt VM-Introspection, um Laufzeit-Eingaben für bedingte Instruktionen zu extrahieren und so typische Magic-Byte- und andere Eingabeprüfungen zu überwinden. Grimoire versucht, Schlüsselwörter und Syntax aus Fuzz-Eingaben zu identifizieren, um intelligentere Mutationen im großen Maßstab zu erzeugen.
Weitere Einzelheiten zu Redqueen, Grimoire, IJON und Nyx finden Sie auf nyx-fuzz.com.
Intel Skylake oder neuer: Das Setup erfordert eine Intel-CPU der 6. Generation oder neuer (für Intel PT) und ausreichend Systemspeicher (~2 GB RAM pro CPU)
Gepatchter Host-Kernel: Im Rahmen des Setups wird ein modifizierter Linux-Host-Kernel installiert. Die Ausführung von kAFL in einer VM funktioniert möglicherweise ab IceLake oder neueren CPUs.
Aktuelles Debian/Ubuntu: Die Installation und die Tutorials sind für aktuelle Ubuntu-LTS-Versionen (>=20.04) und Debian (>=bullseye) getestet.
Sobald Sie python3-venv und make installiert haben, können Sie kAFL mit make deploy installieren:
sudo apt install python3-venv make git
git clone https://github.com/IntelLabs/kAFL.git
cd kAFl
make deploy
Die Installation kann einige Zeit in Anspruch nehmen und erfordert einen Neustart, um Ihren Kernel zu aktualisieren.
Bei Problemen werfen Sie einen Blick in die ausführliche Installationsanleitung oder in die Bereitstellungsanleitung für detaillierte Informationen und die Anpassung des kAFL-Setups an Ihr Projekt.
Als erstes Fuzzing-Beispiel empfehlen wir Fuzzing des Linux-Kernels.
Weitere Zielobjekte sind verfügbar, z. B.:
Eine verbesserte Dokumentation für diese Zielobjekte ist in Arbeit.