
Framework zur Schwachstellenerkennung vom REsearch-Team von Binarly
VulHunt ist ein Framework zur Schwachstellensuche, das vom Research-Team von Binarly entwickelt wurde. Es soll Sicherheitsforschern und -praktikern dabei helfen, Schwachstellen in Software-Binärdateien und UEFI-Firmware zu identifizieren. VulHunt basiert auf Binarlys Binary Analysis and Inspection System (BIAS), das eine leistungsstarke und flexible Umgebung zur Analyse und zum Verständnis von Binärdateien bietet. VulHunt integriert die Funktionen der Binarly Transparency Platform (BTP), um Schwachstellenmanagement, -suche und -triage in großem Maßstab zu ermöglichen.
VulHunt Community Edition ist eine freie Open-Source-Version der VulHunt-Engine innerhalb der BTP, die dazu dient, von der Community entwickelte Regelpakete und Integrationen zu ermöglichen.
cargo install cargo-make
cargo make --profile <development|release> build
Mit Unterstützung für Binary Ninja:
cargo make --profile <development|release> build --features=bndb
cargo make --profile <development|release> install
Mit Unterstützung für Binary Ninja:
cargo make --profile <development|release> install --features=bndb
git submodule update --init
LuaJIT mit den erforderlichen Patches installieren:
git clone https://github.com/LuaJIT/LuaJIT.git -b v2.1
cd LuaJIT
git apply /path/to/vulhunt-ce/patches/luajit-vulhunt.patch
Für macOS:
export MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion)
Für macOS und Linux:
make BUILDMODE='static'
export LUA_LIB=/path/to/LuaJIT/src/
export LUA_LIB_NAME=luajit
export LUA_LINK=static
Für Windows:
cd src
msvcbuild.bat BUILDMODE='static'
set LUA_LIB=C:\path\to\LuaJIT\src\
set LUA_LIB_NAME=lua51
set LUA_LINK=static
cargo build --release
Mit Unterstützung für Binary Ninja:
cargo build --release --features=bndb
Voraussetzungen:
cargo install cargo-make
Pakete für die aktuelle Plattform erstellen:
cargo make prepare-package --features=...
vulhunt-ce scan <INPUT> -o <OUTPUT> -d <BIAS_DATA> -r <RULES> [OPTIONS]
Optionen:
<INPUT>: Pfad zur Binärdatei, zum BA2-Archiv oder zur BNDB-Datei, die gescannt werden soll-o, --output <OUTPUT>: Pfad zum Schreiben der Ausgabe-JSON-d, --data <BIAS_DATA>: Verzeichnis mit Hilfsdaten (Prozessorspezifikationen usw.). Kann auch über die Umgebungsvariable BIAS_DATA gesetzt werden-r, --rules <RULES>: Verzeichnis mit VulHunt-Regeln. Kann auch über die Umgebungsvariable BIAS_VULHUNT_RULES gesetzt werden-m, --modules <MODULES>: Verzeichnis mit VulHunt-Modulen (optional). Kann auch über die Umgebungsvariable BIAS_VULHUNT_MODULES gesetzt werden--loader <LOADER>: Konfiguriert den zu verwendenden Lader (Standard: component). Verfügbare Lader:
component: Einzelne Binärdateien scannenba2: BA2-Archive (Binarly Archive 2) scannen, die mehrere Komponenten enthaltenBeispiel:
vulhunt-ce scan lib.so -o results.json -d /path/to/bias-data -r /path/to/rules --pretty
vulhunt-ce scan firmware.ba2 --loader ba2 -o results.json -d /path/to/bias-data -r /path/to/rules --pretty
vulhunt-ce scan project.bndb --loader bndb -o results.json -d /path/to/bias-data -r /path/to/rules --pretty
VulHunt kann als MCP-Server (Model Context Protocol) für die Integration mit KI-Assistenten ausgeführt werden. Standardmäßig startet es einen Streaming-HTTP-Server mit SSE-Transport (Server-Sent Events) unter http://127.0.0.1:8080:
vulhunt-ce mcp -d <BIAS_DATA> [OPTIONS]
Optionen:
-d, --data <BIAS_DATA>: Verzeichnis mit Hilfsdaten (erforderlich). Kann auch über die Umgebungsvariable BIAS_DATA gesetzt werden-m, --modules <MODULES>: Verzeichnis mit VulHunt-Modulen (optional). Kann auch über die Umgebungsvariable BIAS_VULHUNT_MODULES gesetzt werden--stdio: stdio-Transport anstelle von HTTP verwenden--host <HOST>: Host-Adresse, an die gebunden werden soll (Standard: 127.0.0.1)--port <PORT>: Port, auf dem gelauscht werden soll (Standard: 8080)Komponenten in einem BA2-Archiv auflisten:
vulhunt-ce ba2 list-components <INPUT>
Eine Komponente aus einem BA2-Archiv extrahieren:
vulhunt-ce ba2 extract-component <INPUT> -o <OUTPUT> --component-id <UUID>
Optionen:
<INPUT>: Pfad zum BA2-Archiv-o, --output <OUTPUT>: Ausgabepfad für die extrahierte Komponente--component-id <UUID>: UUID der zu extrahierenden KomponenteInteragieren Sie mit der Binarly Transparency Platform (BTP). Alle Befehle erfordern eine Authentifizierung:
Allgemeine Optionen:
-u, --username <USERNAME>: BTP-Benutzername (oder BTP_USERNAME-Umgebungsvariable)-p, --password <PASSWORD>: BTP-Passwort (oder BTP_PASSWORD-Umgebungsvariable)-s, --instance-slug <SLUG>: Instanz-Slug, z. B. your-org.prod (oder BTP_INSTANCE_SLUG-Umgebungsvariable)Verfügbare Befehle:
vulhunt-ce btp push-rules <INPUTS> -r <REPOSITORY> [-t <TAG>] [--name <NAME>] [--platform <posix|uefi>] [--modules <DIR>] [--deploy-to-product <ULID> | --deploy-to-org <ULID>]
vulhunt-ce btp list-products
vulhunt-ce btp create-product --name <NAME> [--description]
vulhunt-ce btp upload <FILE> --product-id <ULID> --name <NAME> --version <VERSION> [--scan]
vulhunt-ce btp list-images --product-id <ULID>
vulhunt-ce btp list-scans --product-id <ULID> --image-id <ULID>
vulhunt-ce btp create-scan --product-id <ULID> --image-id <ULID>
vulhunt-ce btp get-scan --product-id <ULID> --image-id <ULID> --scan-id <ULID>
vulhunt-ce btp get-findings --product-id <ULID> --image-id <ULID>
vulhunt-ce btp download-ba2 --product-id <ULID> --image-id <ULID> [--scan-id <ULID>] [-o <OUTPUT>]
Dieses Projekt ist unter der GNU General Public License v3.0 lizenziert – weitere Details finden Sie in der Datei LICENSE.
Copyright (c) 2026 Binarly Inc. und die VulHunt-Entwickler.
bndb: Binary-Ninja-Datenbanken scannen (erfordert --features=bndb beim Erstellen)--pretty: Formatiert die Ausgabe für Menschen und gibt Probleme auf stdout aus--stream: Formatiert die Ausgabe als Stream von JSONL-Nachrichten--compress: Komprimiert den JSONL-Ausgabestream mit Zstandard