Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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
Binvariants — Ein auf Registerebene invarianzgeführtes Fuzzing-Framework für Closed-Source-Binärdateien, das wahrscheinliche Invariantenverletzungen nutzt, um Abstürze und Fehler in Binärausführungsdateien zu entdecken. | Kitploit
Tools/GitHubGitHub/futureslab/binvariants
SchwachstellenanalyseExploitationFuzzingBinäranalyse
GitHubfutureslab/binvariants

Binvariants

Ein auf Registerebene invarianzgeführtes Fuzzing-Framework für Closed-Source-Binärdateien, das wahrscheinliche Invariantenverletzungen nutzt, um Abstürze und Fehler in Binärausführungsdateien zu entdecken.

Repository anzeigen
51vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Binvariants: Register-Level-Invarianten-gesteuertes Fuzzing für Binärdateien

Binvariants logo

Dieses Repository enthält den Quellcode für Binvariants: ein prototypisches Fuzzing-Framework, das Verletzungen von wahrscheinlichen Invarianten auf Registerebene für das Fuzzing von Binärdateien nutzt.

Diese Arbeit wird in unserem Paper Binvariants: Enhancing Fuzzing of Closed-source Binary Executables via Register-level Likely Invariants vorgestellt, das auf der ACM International Conference on the Foundations of Software Engineering (FSE’26) 2026 erscheint.

  • Installing Binvariants
  • Using Binvariants
  • Additional Notes
  • Bug Trophy Case


Binvariants workflow
Binvariants workflow

Zitieren dieses Repository: @inproceedings{yang:binvariants, title = {Binvariants: Enhancing Fuzzing of Closed-source Binary Executables via Register-level Likely Invariants}, author = {Zao Yang and Stefan Nagy}, year = {2026}, issue_date = {July 2026}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {3}, number = {FSE}, journal = {Proc. ACM Softw. Eng.}}
Entwickler:Zao Yang ([email protected]) und Stefan Nagy ([email protected])
Lizenz:MIT-Lizenz
Haftungsausschluss:Diese Software wird ohne Gewährleistung bereitgestellt.

Installieren von Binvariants

Binvariants basiert auf AFL++ und QEMU-AFL. Installieren Sie die Abhängigkeiten, die von diesen Projekten benötigt werden, bevor Sie Binvariants einrichten:

root@kitploit:~
sudo apt-get update
sudo apt-get install -y build-essential python3-dev automake cmake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools cargo libgtk-3-dev
# try to install llvm-18 and install the distro default if that fails
sudo apt-get install -y lld-18 llvm-18 llvm-18-dev clang-18 || sudo apt-get install -y lld llvm llvm-dev clang
sudo apt-get install -y gcc-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-dev
sudo apt-get install -y meson ninja-build # for QEMU mode

Binvariants umfasst zwei Komponenten:

  • 1-Invariant_Learner/
  • 2-Fuzzer/

Um jede zu erstellen, navigieren Sie in das entsprechende Verzeichnis und führen Sie die folgenden Befehle aus:

root@kitploit:~
./1_patch.sh
./2_build.sh

Verwendung von Binvariants

Example/ enthält die Beispielskripte und Testfälle zur Verwendung von Binvariants zum Fuzzing der Binärdatei nconvert. Sie können die Skripte ändern, um andere Binärdateien zu fuzzen.

Setup

Vor der Verwendung von Binvariants deaktivieren Sie ASLR, da es konsistente Basisblockadressen zwischen Invariantenlernen und Fuzzing benötigt:

root@kitploit:~
sudo sysctl -w kernel.randomize_va_space=0

Lernen von Register-Level Likely Invariants (RLIs)

Um Invarianten zu lernen, führen Sie aus:

root@kitploit:~
./Example/1-learn_invs.sh [Binvariants_Root]

Die abgeleiteten RLIs werden in dem in 1-learn_invs.sh angegebenen Verzeichnis BINV_TRACES_DIR gespeichert, mit dem Namen: [PROGRAM]_trace_qemu_invs.

Fuzzing mit RLIs

Um das Fuzzing mit Binvariants zu starten, führen Sie aus:

root@kitploit:~
./Example/2-fuzz.sh [Binvariants_Root] [Fuzz_Time] [Trial_Number]

Führen Sie zum Beispiel den 1. Durchlauf einer 48-stündigen Fuzzing-Kampagne aus dem Stammverzeichnis von Binvariants aus:

root@kitploit:~
./Example/2-fuzz.sh $PWD 48h 1

Zusätzliche Hinweise

Im Folgenden finden Sie mögliche Verbesserungen von Binvariants.

Adaptives Lernen von Invarianten

Derzeit lernt Binvariants Invarianten vor dem Fuzzing und führt dann das Fuzzing getrennt durch. Eine mögliche Verbesserung besteht darin, Invarianten während des Fuzzings zu lernen und sie bei Verstößen zu aktualisieren, sodass sich das Feedback im Laufe der Zeit weiterentwickeln kann.

Mögliche Designüberlegungen:

  1. Wenn Invarianten während der Ausführung eines Testfalls aktualisiert werden, der später abstürzt oder eine Zeitüberschreitung verursacht, muss das Update möglicherweise rückgängig gemacht werden. Eine praktische Lösung besteht darin, Updates auf eine Kopie der Invarianten anzuwenden und sie nur dann zu übernehmen, wenn der Testfall normal abgeschlossen wird (d. h. FSRV_RUN_OK).
  2. Wenn das Fuzzing läuft und Invarianten aktualisiert werden, werden Verstöße naturgemäß seltener. Dies führt dazu, dass AFL++ wiederholt frühe Testfälle auswählt (die mehr Verstöße auslösen, aber weniger entwickelte Programmzustände darstellen). Eine Anpassung von weight/perf_score/top_rated auf AFL++-Seite könnte erforderlich sein, um sicherzustellen, dass spätere, repräsentativere Testfälle ausgewählt werden.

Blockübergreifende Invarianten

Binvariants konzentriert sich derzeit auf Invarianten innerhalb eines einzelnen Blocks. Eine mögliche Verbesserung ist die Unterstützung blockübergreifender Invarianten. Dies erfordert neue Datenstrukturen zur Verfolgung von Registerwerten über Blockgrenzen hinweg sowie zusätzliche Instrumentierung, um Verstöße zu überprüfen, wenn die Kontrolle zwischen Blöcken wechselt.

Fehler-Trophäen-Fälle

Wenn Sie mit Binvariants weitere Fehler finden, teilen Sie uns dies bitte mit!

Danksagung

Dieses Material basiert auf Arbeiten, die von der National Science Foundation (NSF) unter der Fördernummer 2419798 und von der Defense Advanced Research Projects Agency (DARPA) unter der Fördernummer FA8750-24-2-0002, Unterauftragsnummer GR105409-SUB00001384, unterstützt wurden.

Tool herunterladen
ProgrammeGemeldete Fehler
nconverthttps://newsgroup.xnview.com/viewtopic.php?t=49598
xls2csvhttps://github.com/vbwagner/catdoc/issues/6, https://github.com/vbwagner/catdoc/issues/7, https://github.com/vbwagner/catdoc/issues/8, https://github.com/vbwagner/catdoc/issues/9, https://github.com/vbwagner/catdoc/issues/10, https://github.com/vbwagner/catdoc/issues/11, https://github.com/vbwagner/catdoc/issues/12, https://github.com/vbwagner/catdoc/issues/13
gpmfhttps://github.com/gopro/gpmf-parser/issues/201, https://github.com/gopro/gpmf-parser/issues/202, https://github.com/gopro/gpmf-parser/issues/203
hdf5https://github.com/HDFGroup/hdf5/issues/5831, https://github.com/HDFGroup/hdf5/issues/5832, https://github.com/HDFGroup/hdf5/issues/5834
stormhttps://github.com/ladislav-zezula/StormLib/issues/397, https://github.com/ladislav-zezula/StormLib/issues/398
mp4splithttps://github.com/axiomatic-systems/Bento4/issues/1038, https://github.com/axiomatic-systems/Bento4/issues/1039
cpdfhttps://github.com/johnwhitington/camlpdf/issues/75
sfconverthttps://github.com/mpruett/audiofile/issues/73