Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
efcf-framework — EF/CF - Extrem schnelles Smart-Contract-Fuzzing | Kitploit
Tools/GitHubGitHub/uni-due-syssec/efcf-framework
SchwachstellenanalyseExploitationFuzzingBinäranalyse
GitHubuni-due-syssec/efcf-framework

efcf-framework

EF/CF - Extrem schnelles Smart-Contract-Fuzzing

Repository anzeigen
701311vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

EF/CF - der extrem schnelle (Ethereum-Smart-Contract-)Fuzzer

EF/CF ist ein neuer Ansatz zum Fuzzing von Smart Contracts: Anstatt einen neuen eigens entwickelten Fuzzer zu verwenden, wird die bestehende Fuzzing-Infrastruktur für C/C++-Code auf Smart Contracts übertragen. Derzeit ist AFL++ der primär unterstützte Fuzzer, obwohl es auch eine sehr rudimentäre Unterstützung für libfuzzer und honggfuzz gibt.

Warum bestehende Fuzzing-Infrastruktur verwenden?

  • Geschwindigkeit. Wir können schneller fuzzen. Wir erreichen regelmäßig etwa 20.000 Ausführungen/Sekunde/Kern.
  • Native Code-Fuzzer sind gut entwickelt und optimiert.
  • Richtige Coverage-Guidance, Warteschlangenverwaltung, deterministische Testfall-Wiedergabe, usw.

Welche Probleme treten dabei auf?

  • Wir müssen dem Fuzzer die Struktur beibringen: nämlich was eine Transaktion ist und was die ABI des Smart Contracts ist. Dafür verwenden wir einen eigenen Mutator: ./src/ethmutator/
  • Um die Geschwindigkeit zu erhöhen und nützliches Coverage-Feedback zu erhalten, übersetzen wir EVM-Bytecode mit einem eigenen Transpiler in C++ ./src/evm2cpp/

Dieses Repository ist der primäre Einstiegspunkt für das EF/CF-Projekt. Es enthält den gesamten relevanten Code als Unterprojekte in ./src/ sowie mehrere praktische Skripte für die Installation, Skripte zum Starten von Fuzzing-Kampagnen und verschiedene Datensätze zum Testen des Fuzzers (und zum Vergleich mit anderen Werkzeugen).

  • ./src/ - enthält den gesamten Quellcode, der zum Erstellen und Ausführen von EF/CF erforderlich ist; zur Reproduzierbarkeit sind alle direkten Abhängigkeiten als Git-Submodule hinzugefügt.
  • ./data/ - enthält die Datensätze, die bei der Evaluierung verwendet wurden
  • ./scripts - enthält Skripte zum Ausführen von Experimenten, zur Installation usw.
  • ./docker - Dockerfile für einen containerbasierten Workflow
    • Standard ist Ubuntu, aber Sie können auch einen Fedora- oder Arch-Linux- basierten Container verwenden, wenn Sie möchten.
    • ./docker/tools/ enthält Dockerfiles für Werkzeuge, mit denen wir EF/CF verglichen haben. Wir haben unser Bestes getan, um die Versionen zu fixen, die wir in unserer Arbeit evaluiert haben, in den Dockerfiles.
  • ./EXPERIMENTS.md - enthält eine Anleitung zur Reproduktion der Experimente aus unserer Arbeit.
  • ./examples - enthält Beispielausgaben, die von EF/CF erzeugt wurden

Das EF/CF-Papier

Wir beschreiben die Architektur und Implementierung von EF/CF und fassen unsere Evaluierungsergebnisse in unserem Papier zusammen: arxiv.org-Preprint

Zitierung in wissenschaftlichen Arbeiten

Wenn Sie sich in wissenschaftlichen Arbeiten auf EF/CF beziehen, verwenden Sie bitte den folgenden BibTeX-Eintrag für die Zitierung:```bibtex @InProceedings{efcf2023, author = "Michael Rodler and David Paaßen and Wenting Li and Lukas Bernhard and Thorsten Holz and Ghassan Karame and Lucas Davi", title = "EF/CF: High Performance Smart Contract Fuzzing for Exploit Generation", booktitle = "{IEEE} European Symposium on Security and Privacy ({EuroS&P})", publisher = "{IEEE}", year = "2023", }

## Quickstart

Die empfohlene Methode ist, EF/CF als interaktiven Docker-Container auszuführen.

1. Betreten Sie den Container mit einer Shell   ```
   docker run --rm -it ghcr.io/uni-due-syssec/efcf-framework

oder baue den Container aus dem geklonten Repository ``` make gitmodules # to fetch the git submodules make container-enter

1. Kompiliere und fuzze dann einen Solidity-Vertrag, bis der erste Absturz/Fehler
entdeckt wird:   ```
efcfuzz --until-crash --out ./baby_bank_results/ --source ./data/examples/baby_bank.sol
  1. Untersuchen Sie den identifizierten Absturz ``` cd /tmp/baby_bank_results/ ./r.sh crashes_min/default_id:000000*

Installation / Einrichtung

Git-Submodule

Kein Git? Wenn du ein Tarball-/Docker-Release verwendest, ignoriere das.

Führe git submodule update --init aus, um die neuesten Submodule-Commits in bereits geklonten Repositorys abzurufen. Stelle sicher, dass du dies auch in ./src/eEVM ausführst.``` git submodule update --init; cd src/eEVM/; git submodule update --init; cd ../../

*Warnung:* Die Ausführung von `git clone --recursive $repo` oder die Übergabe des Arguments `--recursive` an `git sumbodule (update|init)` veranlasst git, rekursiv in Submodule des AFL++-Repositorys einzudringen, die für dieses Projekt nicht benötigt werden. Um Speicherplatz zu sparen, ist es daher besser, die rekursiven Submodule-Checkouts zu vermeiden.


### Container

Wir bieten die folgenden praktischen Make-Targets für containerbasierte Workflows an:```sh
make container-build  # build default efcf container
make container-enter  # enter default efcf container in current working dir

Wenn Sie einen sauberen Build sicherstellen möchten, können Sie den folgenden Befehl verwenden```sh make container-build CLEAN_CHECKOUT=1

Alternativ kann der Container mit folgendem Docker-Befehl erstellt werden:```sh
docker build \
    -f docker/ubuntu.Dockerfile \
    -t efcf:latest \
    .

Beachte, dass es auch ein Archlinux- und Fedora-basiertes Dockerfile gibt. Sie sollten ebenfalls funktionieren, sind aber nicht so gut getestet.

Zur manuellen Verteilung eines Docker-Images (z. B. wenn lokale Änderungen enthalten sein sollen), verwende:``` make container-release docker load -i ./efcf*.tar

Wir empfehlen die folgenden Docker-Optionen zum Start:

* `--security-opt seccomp=unconfined` – bessere Fuzzing-Leistung
* `--net=host` – für einfachen Zugriff auf einen lokalen Ethereum-Knoten
* `--tmpfs "/tmp/efcf/":exec,size=6g` – legt die temporären Dateien von EF/CF wenn möglich auf eine RAM-Disk (weniger Verschleiß der Festplatte)
* `--privileged` – zum Ausführen von `afl-system-config` oder `efcfuzz --configure-system`
* `-v` – zum Speichern der Ausgabedaten von EF/CF


### VM / Bare-Metal

Für Workflows auf VM- oder Bare-Metal-Basis:```sh
make system-install   # install efcf to current system (requires root or sudo rights)

Beachte, dass viele der Skripte ohnehin mit dem relativen Verzeichnislayout funktionieren, daher installiert dies hauptsächlich Abhängigkeiten und einige Werkzeuge, die nützlich in deinem PATH zu haben sind. Wir haben EF/CF auf den folgenden Linux-Distributionen getestet:

  • Ubuntu Jammy (oder neuer)
  • Fedora ($ > 35 $)
  • Archlinux

(Die Distribution spielt keine so große Rolle, wir haben LLVM 13 und 14 getestet, wobei 14 die bevorzugte Wahl ist. LLVM 11 oder 12 könnte ebenfalls noch funktionieren, aber wie immer – je neuer, desto besser. Wichtig ist, dass es ein LLVM gibt, das mit unserem Fork von AFL++ kompatibel ist.)

Auf Mac OS / M1

Tool herunterladen