
BinarlyのREsearchチームによる脆弱性検出フレームワーク
VulHunt は、Binarly の Research チームによって開発された脆弱性ハンティングフレームワークです。ソフトウェアバイナリや UEFI ファームウェアの脆弱性を特定するために、セキュリティ研究者や実務者を支援するよう設計されています。VulHunt は、バイナリの解析と理解のための強力で柔軟な環境を提供する Binarly の Binary Analysis and Inspection System (BIAS) の上に構築されています。VulHunt は Binarly Transparency Platform (BTP) の機能と統合し、大規模な脆弱性管理、ハンティング、およびトリアージ機能を実現します。
VulHunt Community Edition は、BTP 内の VulHunt エンジンの無料かつオープンソース版であり、コミュニティ開発のルールパックとインテグレーションを促進するように設計されています。
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) アーカイブをスキャンしますbndb: Binary Ninja データベースをスキャンします(ビルド時に が必要です)例:
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 は、AI アシスタントとの統合のための MCP (Model Context Protocol) サーバーとして実行できます。デフォルトでは、http://127.0.0.1:8080 で SSE (Server-Sent Events) トランスポートを使用するストリーミング HTTP サーバーを起動します:
vulhunt-ce mcp -d <BIAS_DATA> [OPTIONS]
オプション:
-d, --data <BIAS_DATA>: 補助データを含むディレクトリ(必須)。BIAS_DATA 環境変数でも設定できます。-m, --modules <MODULES>: VulHunt モジュールを含むディレクトリ(オプション)。BIAS_VULHUNT_MODULES 環境変数でも設定できます。--stdio: HTTP の代わりに stdio トランスポートを使用します--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>: 抽出するコンポーネントの UUIDBinarly Transparency Platform (BTP) と対話します。すべてのコマンドで認証が必要です:
共通オプション:
-u, --username <USERNAME>: BTP ユーザー名(または BTP_USERNAME 環境変数)-p, --password <PASSWORD>: BTP パスワード(または BTP_PASSWORD 環境変数)-s, --instance-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 ファイルを参照してください。
Copyright (c) 2026 Binarly Inc. および VulHunt 開発者。
--features=bndb--pretty: 人間が読みやすいように出力を整形し、問題を stdout に表示します--stream: 出力を JSONL メッセージのストリームとしてフォーマットします--compress: 出力 JSONL ストリームを Zstandard で圧縮します