
Binarly की REsearch टीम द्वारा भेद्यता पहचान ढांचा
VulHunt एक भेद्यता खोज फ्रेमवर्क है जिसे Binarly की रिसर्च टीम द्वारा विकसित किया गया है। इसे सुरक्षा शोधकर्ताओं और व्यवसायियों को सॉफ्टवेयर बाइनरी और UEFI फर्मवेयर में भेद्यताओं की पहचान करने में मदद करने के लिए डिज़ाइन किया गया है। VulHunt, Binarly के Binary Analysis and Inspection System (BIAS) के ऊपर निर्मित है, जो बाइनरी के विश्लेषण और समझ के लिए एक शक्तिशाली और लचीला वातावरण प्रदान करता है। VulHunt, Binarly Transparency Platform (BTP) की क्षमताओं के साथ एकीकृत होकर बड़े पैमाने पर भेद्यता प्रबंधन, खोज और ट्रायज क्षमताओं को सक्षम बनाता है।
VulHunt सामुदायिक संस्करण, 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) आर्काइव स्कैन करेंउदाहरण:
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 (मॉडल कॉन्टेक्स्ट प्रोटोकॉल) सर्वर के रूप में चल सकता है। डिफ़ॉल्ट रूप से, यह http://127.0.0.1:8080 पर SSE (सर्वर-सेंट इवेंट्स) ट्रांसपोर्ट के साथ एक स्ट्रीमिंग 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 env var)-p, --password <PASSWORD>: BTP पासवर्ड (या BTP_PASSWORD env var)-s, --instance-slug <SLUG>: इंस्टेंस स्लग, उदा., your-org.prod (या BTP_INSTANCE_SLUG env var)उपलब्ध कमांड:
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 जनरल पब्लिक लाइसेंस v3.0 के अंतर्गत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।
कॉपीराइट (c) 2026 Binarly Inc. और VulHunt डेवलपर्स।
bndb: Binary Ninja डेटाबेस स्कैन करें (निर्माण के समय --features=bndb आवश्यक है)--pretty: आउटपुट को मानव-पठनीय रूप में प्रारूपित करें और मुद्दों को stdout पर प्रस्तुत करें--stream: आउटपुट को JSONL संदेशों की स्ट्रीम के रूप में प्रारूपित करें--compress: आउटपुट JSONL स्ट्रीम को Zstandard के साथ संपीड़ित करें