
Framework de detección de vulnerabilidades del equipo REsearch de Binarly
VulHunt es un framework de búsqueda de vulnerabilidades desarrollado por el equipo de investigación de Binarly. Está diseñado para ayudar a investigadores y profesionales de la seguridad a identificar vulnerabilidades en binarios de software y firmware UEFI. VulHunt está construido sobre el Binary Analysis and Inspection System (BIAS) de Binarly, que proporciona un entorno potente y flexible para analizar y comprender binarios. VulHunt se integra con las capacidades de la Plataforma de Transparencia de Binarly (BTP) para habilitar capacidades de gestión, búsqueda y clasificación de vulnerabilidades a gran escala.
VulHunt Community Edition es una versión gratuita y de código abierto del motor de VulHunt dentro de la BTP, diseñada para facilitar rulepacks e integraciones desarrollados por la comunidad.
cargo install cargo-make
cargo make --profile <development|release> build
Con soporte para Binary Ninja:
cargo make --profile <development|release> build --features=bndb
cargo make --profile <development|release> install
Con soporte para Binary Ninja:
cargo make --profile <development|release> install --features=bndb
git submodule update --init
Instala LuaJIT con los parches necesarios:
git clone https://github.com/LuaJIT/LuaJIT.git -b v2.1
cd LuaJIT
git apply /path/to/vulhunt-ce/patches/luajit-vulhunt.patch
Para macOS:
export MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion)
Para macOS y Linux:
make BUILDMODE='static'
export LUA_LIB=/path/to/LuaJIT/src/
export LUA_LIB_NAME=luajit
export LUA_LINK=static
Para 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 soporte para Binary Ninja:
cargo build --release --features=bndb
Requisitos previos:
cargo install cargo-make
Compila paquetes para la plataforma actual:
cargo make prepare-package --features=...
vulhunt-ce scan <INPUT> -o <OUTPUT> -d <BIAS_DATA> -r <RULES> [OPTIONS]
Opciones:
<INPUT>: Ruta al binario, archivo BA2 o archivo BNDB a escanear-o, --output <OUTPUT>: Ruta para escribir el JSON de salida-d, --data <BIAS_DATA>: Directorio que contiene datos auxiliares (especificaciones de procesadores, etc.). También puede configurarse mediante la variable de entorno BIAS_DATA-r, --rules <RULES>: Directorio que contiene las reglas de VulHunt. También puede configurarse mediante la variable de entorno BIAS_VULHUNT_RULES-m, --modules <MODULES>: Directorio que contiene los módulos de VulHunt (opcional). También puede configurarse mediante la variable de entorno BIAS_VULHUNT_MODULES--loader <LOADER>: Configura el loader que se va a utilizar (por defecto: component). Loaders disponibles:
component: Escanea archivos binarios individualesba2: Escanea archivos BA2 (Binarly Archive 2) que contienen múltiples componentesEjemplo:
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 puede ejecutarse como un servidor MCP (Model Context Protocol) para su integración con asistentes de IA. Por defecto, inicia un servidor HTTP de streaming con transporte SSE (Server-Sent Events) en http://127.0.0.1:8080:
vulhunt-ce mcp -d <BIAS_DATA> [OPTIONS]
Opciones:
-d, --data <BIAS_DATA>: Directorio que contiene datos auxiliares (obligatorio). También puede configurarse mediante la variable de entorno BIAS_DATA-m, --modules <MODULES>: Directorio que contiene los módulos de VulHunt (opcional). También puede configurarse mediante la variable de entorno BIAS_VULHUNT_MODULES--stdio: Usa el transporte stdio en lugar de HTTP--host <HOST>: Dirección de host a la que vincularse (por defecto: 127.0.0.1)--port <PORT>: Puerto en el que escuchar (por defecto: 8080)Lista los componentes de un archivo BA2:
vulhunt-ce ba2 list-components <INPUT>
Extrae un componente de un archivo BA2:
vulhunt-ce ba2 extract-component <INPUT> -o <OUTPUT> --component-id <UUID>
Opciones:
<INPUT>: Ruta al archivo BA2-o, --output <OUTPUT>: Ruta de salida para el componente extraído--component-id <UUID>: UUID del componente a extraerInteractúa con la Plataforma de Transparencia de Binarly (BTP). Todos los comandos requieren autenticación:
Opciones comunes:
-u, --username <USERNAME>: Nombre de usuario de BTP (o variable de entorno BTP_USERNAME)-p, --password <PASSWORD>: Contraseña de BTP (o variable de entorno BTP_PASSWORD)-s, --instance-slug <SLUG>: Instance slug, p. ej., your-org.prod (o variable de entorno BTP_INSTANCE_SLUG)Comandos 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>]
Este proyecto está licenciado bajo la GNU General Public License v3.0 - consulte el archivo LICENSE para más detalles.
Copyright (c) 2026 Binarly Inc. y los desarrolladores de VulHunt.
bndb: Escanea bases de datos de Binary Ninja (requiere --features=bndb en el momento de la compilación)--pretty: Formatea la salida para consumo humano y muestra los hallazgos en stdout--stream: Formatea la salida como un flujo de mensajes JSONL--compress: Comprime el flujo JSONL de salida con Zstandard