
Фреймворк обнаружения уязвимостей от команды REsearch компании Binarly
VulHunt — это фреймворк для поиска уязвимостей, разработанный исследовательской командой Binarly. Он предназначен для помощи исследователям и специалистам по безопасности в выявлении уязвимостей в бинарных файлах программного обеспечения и прошивках UEFI. VulHunt построен на основе системы двоичного анализа и инспекции Binarly (BIAS), которая предоставляет мощную и гибкую среду для анализа и понимания бинарных файлов. VulHunt интегрируется с возможностями платформы прозрачности Binarly (BTP), обеспечивая масштабируемое управление уязвимостями, их поиск и триаж.
VulHunt Community Edition — это бесплатная версия движка VulHunt с открытым исходным кодом в составе BTP, предназначенная для поддержки пакетов правил и интеграций, разрабатываемых сообществом.
cargo install cargo-make
cargo make --profile <development|release> build
С поддержкой Binary Ninja:
cargo make --profile <development|release> build --features=bndb
cargo make --profile <development|release> install
С поддержкой Binary Ninja:
cargo make --profile <development|release> install --features=bndb
git submodule update --init
Установите LuaJIT с необходимыми патчами:
git clone https://github.com/LuaJIT/LuaJIT.git -b v2.1
cd LuaJIT
git apply /path/to/vulhunt-ce/patches/luajit-vulhunt.patch
Для macOS:
export MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion)
Для macOS и Linux:
make BUILDMODE='static'
export LUA_LIB=/path/to/LuaJIT/src/
export LUA_LIB_NAME=luajit
export LUA_LINK=static
Для 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
С поддержкой Binary Ninja:
cargo build --release --features=bndb
Предварительные требования:
cargo install cargo-make
Соберите пакеты для текущей платформы:
cargo make prepare-package --features=...
vulhunt-ce scan <INPUT> -o <OUTPUT> -d <BIAS_DATA> -r <RULES> [OPTIONS]
Опции:
<INPUT>: Путь к бинарному файлу, архиву BA2 или файлу BNDB для сканирования-o, --output <OUTPUT>: Путь для записи выходного JSON-d, --data <BIAS_DATA>: Каталог, содержащий вспомогательные данные (спецификации процессоров и т. д.). Также может быть задан через переменную окружения BIAS_DATA-r, --rules <RULES>: Каталог, содержащий правила VulHunt. Также может быть задан через переменную окружения BIAS_VULHUNT_RULES-m, --modules <MODULES>: Каталог, содержащий модули VulHunt (необязательно). Также может быть задан через переменную окружения BIAS_VULHUNT_MODULES--loader <LOADER>: Настройка используемого загрузчика (по умолчанию: component). Доступные загрузчики:
component: сканирование отдельных бинарных файловba2: сканирование архивов BA2 (Binarly Archive 2), содержащих несколько компонентовПример:
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 может работать как MCP-сервер (Model Context Protocol) для интеграции с ИИ-ассистентами. По умолчанию он запускает потоковый HTTP-сервер с транспортом SSE (Server-Sent Events) по адресу http://127.0.0.1:8080:
vulhunt-ce mcp -d <BIAS_DATA> [OPTIONS]
Опции:
-d, --data <BIAS_DATA>: Каталог, содержащий вспомогательные данные (обязательно). Также может быть задан через переменную окружения BIAS_DATA-m, --modules <MODULES>: Каталог, содержащий модули VulHunt (необязательно). Также может быть задан через переменную окружения BIAS_VULHUNT_MODULES--stdio: использовать транспорт stdio вместо HTTP--host <HOST>: адрес хоста для привязки (по умолчанию: 127.0.0.1)--port <PORT>: порт для прослушивания (по умолчанию: 8080)Список компонентов в архиве BA2:
vulhunt-ce ba2 list-components <INPUT>
Извлечение компонента из архива BA2:
vulhunt-ce ba2 extract-component <INPUT> -o <OUTPUT> --component-id <UUID>
Опции:
<INPUT>: Путь к архиву BA2-o, --output <OUTPUT>: Путь для сохранения извлечённого компонента--component-id <UUID>: UUID компонента для извлеченияВзаимодействие с платформой прозрачности Binarly (BTP). Все команды требуют аутентификации:
Общие опции:
-u, --username <USERNAME>: имя пользователя BTP (или переменная окружения BTP_USERNAME)-p, --password <PASSWORD>: пароль BTP (или переменная окружения BTP_PASSWORD)-s, --instance-slug <SLUG>: slug экземпляра, например, your-org.prod (или переменная окружения BTP_INSTANCE_SLUG)Доступные команды:
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>]
Этот проект распространяется под лицензией GNU General Public License v3.0 — подробности см. в файле LICENSE.
Авторские права (c) 2026 Binarly Inc. и разработчики VulHunt.
bndb: сканирование баз данных Binary Ninja (требует --features=bndb при сборке)--pretty: форматирование вывода для чтения человеком и вывод проблем в stdout--stream: форматирование вывода в виде потока сообщений JSONL--compress: сжатие выходного потока JSONL с помощью Zstandard