
सुरक्षित मल्टी-एजेंट AI सिस्टम का उपयोग करके CVEs का विश्लेषण करने, शोषण क्षमता के बारे में तर्क करने, और OWASP GenAI दिशानिर्देशों के अनुपालन में हस्ताक्षरित CycloneDX VEX दस्तावेज़ उत्पन्न करने के लिए स्वचालित SBOM-to-VEX पाइपलाइन।
OWASP GenAI सुरक्षा परियोजना दिशानिर्देशों के अनुसार निर्मित, एक सुरक्षित मल्टी-एजेंट AI पाइपलाइन का उपयोग करके SBOM से स्वचालित रूप से हस्ताक्षरित CycloneDX VEX दस्तावेज़ उत्पन्न करें।
SBOM उत्पन्न करने से सैकड़ों CVE सामने आते हैं। व्यवहार में, 90% से अधिक किसी विशिष्ट उत्पाद के रनटाइम संदर्भ में शोषणीय नहीं होते। Vulnerability Exploitability eXchange (VEX) दस्तावेज़ के बिना, प्रत्येक डाउनस्ट्रीम टूल — Dependency-Track, रिलीज़ गेट्स, प्रोक्योरमेंट चेकलिस्ट — झूठी सकारात्मकताओं में डूब जाता है।
अधिक तकनीकी विवरण और परीक्षण परिणामों के लिए WIKI पढ़ें।
मैन्युअल VEX निर्माण समय लेने वाला होता है और स्केल नहीं करता। एक कुशल विश्लेषक एकल घटक का आकलन करने में घंटों बिता सकता है। एक उत्पादन SBOM में 500–2,000 घटक हो सकते हैं।
यह परियोजना उस तर्क पाइपलाइन को स्वचालित करती है — सुरक्षित रूप से, विक्रेता लॉक-इन के बिना, सभी डेटा आपके बुनियादी ढांचे पर रहता है।
वास्तविक दुनिया की प्रेरणा: 2024 में, सुरक्षा शोधकर्ता जोहाना क्यूरियल ने कुबरनेटीज़ जावा क्लाइंट का विश्लेषण करते समय इसी समस्या का दस्तावेजीकरण किया ()। 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 for LLM Applications 2025 और OWASP Top 10 for Agentic Applications 2026 के विरुद्ध डिज़ाइन की गई है।
| OWASP जोखिम | ID | इस परियोजना में शमन |
|---|---|---|
| Prompt Injection | LLM01 | LLM इंजेक्शन से पहले सभी SBOM फ़ील्ड सैनिटाइज़ किए जाते हैं; इंजेक्शन पैटर्न ब्लॉकलिस्ट |
| Sensitive Info Disclosure | LLM02 | सभी एजेंट आउटपुट पर PII स्क्रबर; आंतरिक पथ फ़िल्टर |
| Improper Output Handling | LLM05 | हस्ताक्षर करने से पहले CycloneDX स्कीमा सत्यापन; विफलता पर पुनः प्रयास |
| Excessive Agency | LLM06 | विश्लेषण के दौरान केवल-पढ़ने वाले उपकरण; सभी CVSS ≥ 7.0 निर्णयों के लिए HITL गेट |
| System Prompt Leakage | LLM07 | आंतरिक नीतियाँ सिस्टम प्रॉम्प्ट से अलग |
| Vector / Embedding Weakness | LLM08 | संग्रहीत वेक्टर हस्ताक्षरित; संदर्भ इंजेक्शन से पहले प्रोवेनेंस जाँच |
| Unbounded Consumption | LLM10 | MaxMessageTermination(20); प्रति-घटक टोकन बजट; NVD टाइमआउट |
Human-in-the-loop अनिवार्य है। उच्च-गंभीरता CVE के लिए VEX
not_affectedकथन एक कानूनी-ग्रेड दावा है। मानव समीक्षक की स्वीकृति के बिना कोई VEX हस्ताक्षरित नहीं होता। यह कॉन्फ़िगरेबल नहीं है।
| घटक | उपकरण | नोट्स |
|---|---|---|
| एजेंट ऑर्केस्ट्रेशन | AutoGen AgentChat v0.4 | मल्टी-एजेंट, टूल-उपयोग, संदेश हुक |
| LLM (अनुशंसित) | Qwen2.5-Coder-32B | सर्वश्रेष्ठ संरचित JSON + सुरक्षा तर्क |
| LLM सर्वर | vLLM (prod) / Ollama (dev) | OpenAI-संगत API |
| CVE डेटा | NVD v2 API + 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 keyless) | टाइमस्टैम्प्ड, ऑडिट-लॉग |
| ऑडिट लॉग | PostgreSQL (append-only, pgaudit) | प्रत्येक एजेंट निर्णय रिकॉर्ड किया जाता है |
सब कुछ ऑन-प्रिमाइसेस चलता है। कोई डेटा आपके बुनियादी ढांचे को नहीं छोड़ता।
हार्डवेयर (उत्पादन):
हार्डवेयर (विकास / छोटे SBOM):
llama3.1:8b का उपयोग करेंसॉफ़्टवेयर:
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 # 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 # या Ollama: http://localhost:11434/v1
LLM_MODEL=Qwen2.5-Coder-32B-Instruct # या dev के लिए llama3.1
# Services
QDRANT_URL=http://localhost:6333
AUDIT_DB_URL=postgresql://audit:secret@localhost:5432/audit
# Signing (cosign keyless via Sigstore OIDC के लिए खाली छोड़ें)
GPG_KEY_ID= # वैकल्पिक: इसके बजाय GPG का उपयोग करें
sbom-vex-agent/
├── vex_agent/
│ ├── ingest.py # Zone 1: SBOM सत्यापन और सैनिटाइज़ेशन
│ ├── guardrails.py # Zone 2: OWASP मिडलवेयर (GuardrailedAgent)
│ ├── agents/
│ │ ├── orchestrator.py
│ │ ├── cve_analyst.py
│ │ ├── exploit_reasoner.py
│ │ └── vex_writer.py
│ ├── tools/
│ │ ├── nvd.py # NVD v2 API क्लाइंट
│ │ ├── osv.py # OSV.dev क्लाइंट
│ │ └── epss.py # EPSS स्कोरिंग
│ ├── vector_store.py # Qdrant एकीकरण + प्रोवेनेंस हस्ताक्षर
│ ├── hitl.py # Human-in-the-loop समीक्षा गेट
│ └── sign.py # Zone 4: cosign / GPG हस्ताक्षर
├── schemas/
│ ├── cdx-1.6.schema.json
│ └── cdx-1.6-vex.schema.json
├── tests/
├── docker-compose.yml
├── .env.example
└── requirements.txt
एजेंट CycloneDX 1.6 VEX दस्तावेज़ उत्पन्न करता है। एकल घटक के लिए उदाहरण आउटपुट:
{
"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
not_affected के लिए मान्य justification मान:
component_not_presentvulnerable_code_not_presentvulnerable_code_not_in_execute_pathvulnerable_code_cannot_be_controlled_by_adversaryinline_mitigations_already_existयोगदान का स्वागत है। कृपया महत्वपूर्ण बदलावों के लिए पुल रिक्वेस्ट सबमिट करने से पहले एक इश्यू खोलें।
सुरक्षा मुद्दों की निजी तौर पर रिपोर्ट करें — SECURITY.md देखें।
MIT — LICENSE देखें।
OWASP GenAI Security Project के साथ संरेखण में निर्मित। कोई आधिकारिक OWASP प्रोजेक्ट नहीं।