
إطار عمل لاكتشاف الثغرات الأمنية من فريق REsearch في Binarly
VulHunt هو إطار عمل لاصطياد الثغرات الأمنية طوّره فريق أبحاث Binarly. وهو مصمم لمساعدة باحثي وممارسي الأمن على تحديد الثغرات في الملفات الثنائية للبرامج والبرامج الثابتة الخاصة بـ UEFI. يُبنى VulHunt على نظام الفحص والتحليل الثنائي من Binarly (BIAS)، الذي يوفر بيئة قوية ومرنة لتحليل وفهم الملفات الثنائية. ويتكامل VulHunt مع قدرات منصة Binarly للشفافية (BTP) لتمكين إدارة الثغرات والاصطياد والفرز على نطاق واسع.
إصدار VulHunt المجتمعي هو نسخة مجانية ومفتوحة المصدر من محرك 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 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 (بروتوكول سياق النموذج) للتكامل مع المساعدين الذكيين. افتراضيًا، يبدأ خادم HTTP للبث باستخدام ناقل SSE (الأحداث المرسلة من الخادم) على العنوان 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 العمومية العامة الإصدار 3.0 - راجع ملف LICENSE للحصول على التفاصيل.
حقوق النشر (c) 2026 Binarly Inc. ومطوّرو VulHunt.
bndb: فحص قواعد بيانات Binary Ninja (يتطلب --features=bndb أثناء البناء)--pretty: تنسيق المخرجات لقراءتها البشرية وعرض المشكلات على stdout--stream: تنسيق المخرجات كتدفق من رسائل JSONL--compress: ضغط تدفق مخرجات JSONL باستخدام Zstandard