
Framework de détection de vulnérabilités par l'équipe REsearch de Binarly
VulHunt est un framework de recherche de vulnérabilités développé par l'équipe de recherche de Binarly. Il est conçu pour aider les chercheurs et les praticiens en sécurité à identifier les vulnérabilités dans les binaires logiciels et les firmwares UEFI. VulHunt est construit sur le Binary Analysis and Inspection System (BIAS) de Binarly, qui fournit un environnement puissant et flexible pour analyser et comprendre les binaires. VulHunt s'intègre aux capacités de la Binarly Transparency Platform (BTP) pour permettre la gestion, la chasse et le tri des vulnérabilités à grande échelle.
VulHunt Community Edition est une version gratuite et open-source du moteur VulHunt au sein de la BTP, conçue pour faciliter les rulepacks et les intégrations développés par la communauté.
cargo install cargo-make
cargo make --profile <development|release> build
Avec la prise en charge de Binary Ninja :
cargo make --profile <development|release> build --features=bndb
cargo make --profile <development|release> install
Avec la prise en charge de Binary Ninja :
cargo make --profile <development|release> install --features=bndb
git submodule update --init
Installer LuaJIT avec les correctifs requis :
git clone https://github.com/LuaJIT/LuaJIT.git -b v2.1
cd LuaJIT
git apply /path/to/vulhunt-ce/patches/luajit-vulhunt.patch
Pour macOS :
export MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion)
Pour macOS et Linux :
make BUILDMODE='static'
export LUA_LIB=/path/to/LuaJIT/src/
export LUA_LIB_NAME=luajit
export LUA_LINK=static
Pour 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
Avec la prise en charge de Binary Ninja :
cargo build --release --features=bndb
Prérequis :
cargo install cargo-make
Construire les paquets pour la plateforme actuelle :
cargo make prepare-package --features=...
vulhunt-ce scan <INPUT> -o <OUTPUT> -d <BIAS_DATA> -r <RULES> [OPTIONS]
Options :
<INPUT> : chemin vers le binaire, l'archive BA2 ou le fichier BNDB à analyser-o, --output <OUTPUT> : chemin d'écriture du JSON de sortie-d, --data <BIAS_DATA> : répertoire contenant les données auxiliaires (spécifications de processeurs, etc.). Peut également être défini via la variable d'environnement BIAS_DATA-r, --rules <RULES> : répertoire contenant les règles VulHunt. Peut également être défini via la variable d'environnement BIAS_VULHUNT_RULES-m, --modules <MODULES> : répertoire contenant les modules VulHunt (optionnel). Peut également être défini via la variable d'environnement BIAS_VULHUNT_MODULES--loader <LOADER> : configure le loader à utiliser (par défaut : component). Loaders disponibles :
component : analyser les fichiers binaires individuelsExemple :
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 peut fonctionner comme un serveur MCP (Model Context Protocol) pour l'intégration avec des assistants IA. Par défaut, il démarre un serveur HTTP streaming avec le transport SSE (Server-Sent Events) sur http://127.0.0.1:8080 :
vulhunt-ce mcp -d <BIAS_DATA> [OPTIONS]
Options :
-d, --data <BIAS_DATA> : répertoire contenant les données auxiliaires (requis). Peut également être défini via la variable d'environnement BIAS_DATA-m, --modules <MODULES> : répertoire contenant les modules VulHunt (optionnel). Peut également être défini via la variable d'environnement BIAS_VULHUNT_MODULES--stdio : utiliser le transport stdio au lieu de HTTP--host <HOST> : adresse hôte à laquelle se lier (par défaut : 127.0.0.1)--port <PORT> : port d'écoute (par défaut : 8080)Liste des composants d'une archive BA2 :
vulhunt-ce ba2 list-components <INPUT>
Extraction d'un composant d'une archive BA2 :
vulhunt-ce ba2 extract-component <INPUT> -o <OUTPUT> --component-id <UUID>
Options :
<INPUT> : chemin vers l'archive BA2-o, --output <OUTPUT> : chemin de sortie pour le composant extrait--component-id <UUID> : UUID du composant à extraireInteragir avec la Binarly Transparency Platform (BTP). Toutes les commandes nécessitent une authentification :
Options communes :
-u, --username <USERNAME> : nom d'utilisateur BTP (ou variable d'environnement BTP_USERNAME)-p, --password <PASSWORD> : mot de passe BTP (ou variable d'environnement BTP_PASSWORD)-s, --instance-slug <SLUG> : slug d'instance, par ex. your-org.prod (ou variable d'environnement BTP_INSTANCE_SLUG)Commandes disponibles :
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>]
Ce projet est sous licence GNU General Public License v3.0 - voir le fichier LICENSE pour plus de détails.
Copyright (c) 2026 Binarly Inc. et développeurs de VulHunt.
ba2bndb : analyser les bases de données Binary Ninja (nécessite --features=bndb à la compilation)--pretty : formater la sortie pour une lecture humaine et afficher les problèmes sur stdout--stream : formater la sortie sous forme de flux de messages JSONL--compress : compresser le flux JSONL de sortie avec Zstandard