
Framework di rilevamento delle vulnerabilità del team REsearch di Binarly.
VulHunt è un framework per la caccia alle vulnerabilità sviluppato dal team di ricerca di Binarly. È progettato per aiutare ricercatori e professionisti della sicurezza a identificare vulnerabilità in binari software e firmware UEFI. VulHunt è costruito sul Binarly's Binary Analysis and Inspection System (BIAS), che fornisce un ambiente potente e flessibile per analizzare e comprendere i binari. VulHunt si integra con le funzionalità della Binarly Transparency Platform (BTP) per abilitare capacità di gestione, caccia e triage delle vulnerabilità su larga scala.
VulHunt Community Edition è una versione gratuita e open source del motore VulHunt all'interno della BTP, progettata per facilitare rulepack e integrazioni sviluppati dalla community.
cargo install cargo-make
cargo make --profile <development|release> build
Con supporto per Binary Ninja:
cargo make --profile <development|release> build --features=bndb
cargo make --profile <development|release> install
Con supporto per Binary Ninja:
cargo make --profile <development|release> install --features=bndb
git submodule update --init
Installare LuaJIT con le patch richieste:
git clone https://github.com/LuaJIT/LuaJIT.git -b v2.1
cd LuaJIT
git apply /path/to/vulhunt-ce/patches/luajit-vulhunt.patch
Per macOS:
export MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion)
Per macOS e Linux:
make BUILDMODE='static'
export LUA_LIB=/path/to/LuaJIT/src/
export LUA_LIB_NAME=luajit
export LUA_LINK=static
Per 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
Con supporto per Binary Ninja:
cargo build --release --features=bndb
Prerequisiti:
cargo install cargo-make
Creare i pacchetti per la piattaforma corrente:
cargo make prepare-package --features=...
vulhunt-ce scan <INPUT> -o <OUTPUT> -d <BIAS_DATA> -r <RULES> [OPTIONS]
Opzioni:
<INPUT>: Percorso del binario, dell'archivio BA2 o del file BNDB da analizzare-o, --output <OUTPUT>: Percorso in cui scrivere il JSON di output-d, --data <BIAS_DATA>: Directory contenente i dati ausiliari (specifiche dei processori, ecc.). Può essere impostata anche tramite la variabile d'ambiente BIAS_DATA-r, --rules <RULES>: Directory contenente le regole VulHunt. Può essere impostata anche tramite la variabile d'ambiente BIAS_VULHUNT_RULES-m, --modules <MODULES>: Directory contenente i moduli VulHunt (opzionale). Può essere impostata anche tramite la variabile d'ambiente BIAS_VULHUNT_MODULES--loader <LOADER>: Configura il loader da utilizzare (predefinito: component). Loader disponibili:
component: Analizza singoli file binariba2: Analizza archivi BA2 (Binarly Archive 2) contenenti più componentibndb: Analizza database Binary Ninja (richiede --features=bndb in fase di compilazione)--pretty: Formatta l'output per la lettura umana e mostra i problemi su stdout--stream: Formatta l'output come flusso di messaggi JSONL--compress: Comprimi il flusso JSONL di output con ZstandardEsempio:
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 può essere eseguito come server MCP (Model Context Protocol) per l'integrazione con assistenti IA. Per impostazione predefinita, avvia un server HTTP in streaming con trasporto SSE (Server-Sent Events) su http://127.0.0.1:8080:
vulhunt-ce mcp -d <BIAS_DATA> [OPTIONS]
Opzioni:
-d, --data <BIAS_DATA>: Directory contenente i dati ausiliari (obbligatoria). Può essere impostata anche tramite la variabile d'ambiente BIAS_DATA-m, --modules <MODULES>: Directory contenente i moduli VulHunt (opzionale). Può essere impostata anche tramite la variabile d'ambiente BIAS_VULHUNT_MODULES--stdio: Usa il trasporto stdio invece di HTTP--host <HOST>: Indirizzo host a cui associarsi (predefinito: 127.0.0.1)--port <PORT>: Porta su cui mettersi in ascolto (predefinita: 8080)Elenca i componenti in un archivio BA2:
vulhunt-ce ba2 list-components <INPUT>
Estrae un componente da un archivio BA2:
vulhunt-ce ba2 extract-component <INPUT> -o <OUTPUT> --component-id <UUID>
Opzioni:
<INPUT>: Percorso dell'archivio BA2-o, --output <OUTPUT>: Percorso di output per il componente estratto--component-id <UUID>: UUID del componente da estrarreInteragisci con la Binarly Transparency Platform (BTP). Tutti i comandi richiedono l'autenticazione:
Opzioni comuni:
-u, --username <USERNAME>: Nome utente BTP (o variabile d'ambiente BTP_USERNAME)-p, --password <PASSWORD>: Password BTP (o variabile d'ambiente BTP_PASSWORD)-s, --instance-slug <SLUG>: Slug dell'istanza, ad es. your-org.prod (o variabile d'ambiente BTP_INSTANCE_SLUG)Comandi disponibili:
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>]
Questo progetto è concesso in licenza secondo i termini della GNU General Public License v3.0 - vedere il file LICENSE per i dettagli.
Copyright (c) 2026 Binarly Inc. e sviluppatori di VulHunt.