
Binarly의 REsearch 팀이 개발한 취약점 탐지 프레임워크
VulHunt는 Binarly의 Research 팀이 개발한 취약점 헌팅 프레임워크입니다. 보안 연구원과 실무자가 소프트웨어 바이너리 및 UEFI 펌웨어에서 취약점을 식별할 수 있도록 설계되었습니다. VulHunt는 Binarly의 BIAS(Binary Analysis and Inspection System)를 기반으로 구축되었으며, 바이너리를 분석하고 이해하기 위한 강력하고 유연한 환경을 제공합니다. VulHunt는 Binarly Transparency Platform(BTP)의 기능과 통합되어 대규모 취약점 관리, 헌팅 및 트라이지 기능을 지원합니다.
VulHunt Community Edition은 BTP 내 VulHunt 엔진의 무료 오픈소스 버전으로, 커뮤니티 개발 규칙팩(rulepack)과 통합을 지원하기 위해 설계되었습니다.
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. and VulHunt developers.
--features=bndb--pretty: 사람이 읽기 쉬운 형식으로 출력하고 이슈를 stdout으로 렌더링--stream: JSONL 메시지 스트림 형식으로 출력--compress: Zstandard로 출력 JSONL 스트림 압축