
خط أنابيب آلي من SBOM إلى VEX باستخدام نظام ذكاء اصطناعي متعدد الوكلاء آمن لتحليل CVEs والاستدلال حول قابلية الاستغلال وإنشاء مستندات CycloneDX VEX موقعة وفقًا لإرشادات OWASP GenAI.
قم بإنشاء مستندات VEX بتنسيق CycloneDX موقّعة تلقائيًا من قوائم مكوّنات البرامج (SBOM) عبر خط أنابيب ذكاء اصطناعي متعدّد الوكلاء وآمن، مبني وفقًا لإرشادات مشروع OWASP لأمن الذكاء الاصطناعي التوليدي.
إن إنشاء قائمة مكوّنات (SBOM) يُبرز مئات ثغرات CVE. عمليًا، أكثر من 90% منها غير قابلة للاستغلال في سياق وقت تشغيل منتج معيّن. وبدون مستند تبادل قابلية استغلال الثغرات (VEX)، ستغرق كل أداة من الأدوات النهائية — مثل Dependency-Track وبوابات الإصدار وقوائم التحقق في المشتريات — في النتائج الإيجابية الخاطئة.
اقرأ الـ WIKI لمزيد من التفاصيل التقنية ونتائج الاختبار.
إن إنشاء VEX يدويًا يستغرق وقتًا طويلًا ولا يتوسع. يمكن لمحلّل ماهر قضاء ساعات في تقييم مكوّن واحد فقط. وقد تحتوي قائمة مكوّنات إنتاجية على 500–2,000 مكوّن.
يعمل هذا المشروع على أتمتة خط أنابيب الاستدلال هذا — بشكل آمن، دون حصر على بائع معيّن، مع بقاء جميع البيانات على بنيتك التحتية.
الدافع الواقعي: في عام 2024، وثّقت الباحثة الأمنية Johanna Curiel هذه المشكلة تحديدًا أثناء تحليل عميل Kubernetes الخاص بلغة Java (). حدّد ماسح OSV ثغرة CVE عالية الخطورة في في ثوانٍ. بينما استغرق تحديد أنها (مكوّن إضافي لوقت البناء، لا يُنفَّذ أبدًا وقت التشغيل) ساعات من التحليل اليدوي. يعمل هذا المشروع على أتمتة خطوة الاستدلال تلك.
com.diffplug.spotless:spotless-maven-plugin 1.17.0not_affectedأربع مناطق أمنية. لا يعبر أي شيء حدود المنطقة دون تحقق صريح.
┌─────────────────────────────────────────────────────────────────┐
│ ZONE 1 — Input ingestion (no LLM) │
│ SBOM upload → Schema validate → Sanitise → SHA-256 audit hash │
└────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────▼────────────────────────────────────┐
│ ZONE 2 — OWASP guardrail middleware │
│ Prompt guard (LLM01) · Output filter (LLM02/05) │
│ Agency limiter (LLM06) · Token budget (LLM10) │
└────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────▼────────────────────────────────────┐
│ ZONE 3 — Multi-agent pipeline (AutoGen AgentChat) │
│ │
│ Orchestrator │
│ ├── CVE Analyst NVD v2 + OSV + EPSS per component │
│ ├── Exploit Reasoner Call graph · LLM reasoning · RAG │
│ └── VEX Writer CycloneDX 1.6 schema-validated │
│ │
│ Vector store (Qdrant) — signed past VEX decisions │
└────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────▼────────────────────────────────────┐
│ ZONE 4 — Output, signing, audit │
│ Human-in-the-loop gate → cosign/GPG sign → audit log │
└─────────────────────────────────────────────────────────────────┘
صُمّم هذا المشروع وفقًا لقائمة OWASP Top 10 لتطبيقات LLM لعام 2025 وقائمة OWASP Top 10 للتطبيقات الوكيلة لعام 2026.
| خطر OWASP | المعرّف | التخفيف في هذا المشروع |
|---|---|---|
| حقن التعليمات (Prompt Injection) | LLM01 | تنقية جميع حقول SBOM قبل حقنها في LLM؛ قائمة حظر لأنماط الحقن |
| كشف المعلومات الحساسة | LLM02 | أداة تنقية للبيانات الشخصية (PII) على جميع مخرجات الوكلاء؛ مرشّح للمسارات الداخلية |
| معالجة المخرجات غير السليمة | LLM05 | التحقق من صحة مخطط CycloneDX قبل التوقيع؛ إعادة المحاولة عند الفشل |
| الوكالة المفرطة (Excessive Agency) | LLM06 | أدوات للقراءة فقط أثناء التحليل؛ بوابة إشراف بشري (HITL) لجميع الأحكام ذات CVSS ≥ 7.0 |
| تسريب التعليمات النظامية | LLM07 | فصل السياسات الداخلية عن التعليمات النظامية |
| ضعف المتجهات/التضمينات | LLM08 | توقيع المتجهات المخزنة؛ التحقق من المصدر قبل حقن السياق |
| الاستهلاك غير المحدود | LLM10 | MaxMessageTermination(20)؛ ميزانية رموز لكل مكوّن؛ مهلة زمنية لـ NVD |
الإشراف البشري إلزامي. إن بيان VEX بقيمة
not_affectedلثغرة CVE عالية الخطورة هو تأكيد بدرجة قانونية. لا يتم توقيع أي VEX دون موافقة مراجع بشري. هذا ليس خيارًا قابلًا للتهيئة.
| المكوّن | الأداة | ملاحظات |
|---|---|---|
| تنسيق الوكلاء | AutoGen AgentChat v0.4 | متعدّد الوكلاء، واستخدام الأدوات، وخطافات الرسائل |
| نموذج LLM (موصى به) | Qwen2.5-Coder-32B | الأفضل في JSON المنظّم واستدلال الأمان |
| خادم LLM | vLLM (إنتاج) / Ollama (تطوير) | واجهة برمجة متوافقة مع OpenAI |
| بيانات CVE | واجهة NVD v2 + OSV.dev + EPSS | جميعها مجانية، ولا تتطلب مفتاح API |
| مخزن المتجهات | Qdrant | مستضاف ذاتيًا، لقرارات VEX السابقة |
| التضمينات | all-MiniLM-L6-v2 (sentence-transformers) | محلية بالكامل |
| صيغ SBOM | CycloneDX 1.4–1.7 (JSON/XML)، SPDX 2.3/3.0 | التحقق من الصحة عبر المخطط عند الاستيراد |
| مخرجات VEX | CycloneDX 1.6 VEX | التحقق من الصحة عبر المخطط قبل التوقيع |
| التوقيع | cosign (بدون مفاتيح عبر Sigstore) | بختم زمني ومسجّل في سجل التدقيق |
| سجل التدقيق | PostgreSQL (ملحق فقط، pgaudit) | تسجيل كل قرار يتخذه الوكلاء |
يعمل كل شيء داخل مقرّك. لا تغادر أي بيانات بنيتك التحتية.
الأجهزة (إنتاج):
الأجهزة (تطوير / قوائم SBOM صغيرة):
llama3.1:8b عبر Ollamaالبرمجيات:
git clone https://github.com/your-org/sbom-vex-agent
cd sbom-vex-agent
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Development — Ollama (CPU/GPU, any laptop)
ollama pull llama3.1
ollama serve
# Production — vLLM (GPU required)
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-Coder-32B-Instruct \
--gpu-memory-utilization 0.90 \
--host 0.0.0.0 --port 8000
docker compose up -d # starts Qdrant + PostgreSQL
python -m vex_agent analyse \
--sbom path/to/your-sbom.cdx.json \
--output path/to/output.vex.json
سيعمل خط الأنابيب على:
انسخ .env.example إلى .env وحدّد القيم:
# LLM backend
VLLM_BASE_URL=http://localhost:8000/v1 # or Ollama: http://localhost:11434/v1
LLM_MODEL=Qwen2.5-Coder-32B-Instruct # or llama3.1 for dev
# Services
QDRANT_URL=http://localhost:6333
AUDIT_DB_URL=postgresql://audit:secret@localhost:5432/audit
# Signing (leave blank to use cosign keyless via Sigstore OIDC)
GPG_KEY_ID= # optional: use GPG instead
sbom-vex-agent/
├── vex_agent/
│ ├── ingest.py # Zone 1: SBOM validation and sanitisation
│ ├── guardrails.py # Zone 2: OWASP middleware (GuardrailedAgent)
│ ├── agents/
│ │ ├── orchestrator.py
│ │ ├── cve_analyst.py
│ │ ├── exploit_reasoner.py
│ │ └── vex_writer.py
│ ├── tools/
│ │ ├── nvd.py # NVD v2 API client
│ │ ├── osv.py # OSV.dev client
│ │ └── epss.py # EPSS scoring
│ ├── vector_store.py # Qdrant integration + provenance signing
│ ├── hitl.py # Human-in-the-loop review gate
│ └── sign.py # Zone 4: cosign / GPG signing
├── schemas/
│ ├── cdx-1.6.schema.json
│ └── cdx-1.6-vex.schema.json
├── tests/
├── docker-compose.yml
├── .env.example
└── requirements.txt
ينتج الوكيل مستندات VEX بمعيار CycloneDX 1.6. مثال لمخرجات مكوّن واحد:
{
"bomFormat": "CycloneDX",
"specVersion": "1.6",
"version": 1,
"metadata": {
"timestamp": "2026-04-26T10:00:00Z",
"tools": [{ "name": "sbom-vex-agent", "version": "1.0.0" }]
},
"vulnerabilities": [
{
"id": "CVE-2021-37714",
"affects": [{ "ref": "pkg:maven/com.diffplug.spotless/[email protected]" }],
"analysis": {
"state": "not_affected",
"justification": "vulnerable_code_not_in_execute_path",
"detail": "Plugin executes only at build time; not present in deployed runtime."
}
}
]
}
القيم الصالحة للحقل state: affected · not_affected · fixed · under_investigation
القيم الصالحة للحقل justification (بالنسبة لـ not_affected):
component_not_presentvulnerable_code_not_presentvulnerable_code_not_in_execute_pathvulnerable_code_cannot_be_controlled_by_adversaryinline_mitigations_already_existالمساهمات مرحّب بها. يُرجى فتح مشكلة (issue) قبل تقديم طلب سحب (pull request) للتغييرات الجوهرية.
يجب الإبلاغ عن المشكلات الأمنية بشكل خاص — انظر SECURITY.md.
MIT — انظر LICENSE.
مبني بما يتوافق مع مشروع OWASP لأمن الذكاء الاصطناعي التوليدي. ليس مشروعًا رسميًا من OWASP.