
रनटाइम-जागरूक SCA — यह साबित करता है कि कौन से CVE वास्तव में पहुंच योग्य हैं, न कि केवल इंस्टॉल किए गए हैं।
रनटाइम-जागरूक SCA — यह साबित करता है कि कौन से CVE वास्तव में पहुँच योग्य हैं, न कि केवल इंस्टॉल किए गए।
VulnReach अब एक आधिकारिक OWASP परियोजना है। 🎉




भाषा समर्थन: Python पूरी तरह उत्पादन-तैयार है (taint, AST, route, runtime)। Java और JavaScript में कार्यात्मक कॉल ग्राफ़ विश्लेषण है और प्रायोगिक हैं। Go, C#, और PHP रोडमैप पर हैं। विवरण के लिए ROADMAP.md देखें।
VulnReach मानक SCA आउटपुट पर पहुँच संदर्भ जोड़कर निर्मित होता है — स्थैतिक विश्लेषण, taint ट्रैकिंग, और लाइव रनटाइम कवरेज के माध्यम से साबित करता है कि पाए गए CVE आपके एप्लिकेशन में वास्तव में पहुँचे जा सकते हैं या नहीं।
POST /scan/{id}/cancel चल रहे स्कैन को रोकता हैsummary + वर्गीकृत बकेट्स GET /scan/{id} परVULNREACH_ALLOW_DOCKER_DAEMON=true द्वारा स्पष्ट ऑप्ट-इन आवश्यक हैdocker-socket-proxy का उपयोग करता हैPOST /findings/{id}/next-steps एक नियतात्मक निष्कर्ष के लिए विश्लेषक-सामने वाले उपाय मार्गदर्शन (तत्काल कार्रवाई, सत्यापन जांच, अपग्रेड पथ, निगरानी) उत्पन्न करता है। आलस्य / ऑन-डिमांड: स्कैन कभी LLM को कॉल नहीं करते, और LLM विफलताएँ सुंदरता से ख़राब होती हैं। नियतात्मक निर्णय केवल-पढ़ने योग्य है। docs/api.md देखें।scan.runtime.ebpf ट्रेसिंग मोड (Linux-केंद्रित, स्पष्ट ऑप्ट-इन)देखें:
प्रत्येक CVE को पाँच-परत साक्ष्य शृंखला के माध्यम से वर्गीकृत किया जाता है:
1. SCA (Trivy) → क्या पैकेज इंस्टॉल और असुरक्षित है?
2. Taint विश्लेषण (tainter) → क्या उपयोगकर्ता इनपुट असुरक्षित सिंक तक प्रवाहित होता है?
3. AST विश्लेषण → क्या असुरक्षित फ़ंक्शन आपके कॉल ग्राफ़ में है?
4. रूट एक्सपोज़र → क्या कॉल पथ HTTP एंडपॉइंट से पहुँच योग्य है?
5. रनटाइम कवरेज → क्या असुरक्षित कोड वास्तव में निष्पादित हुआ था?
परिणाम चार स्तरों के साथ एक प्राथमिकता वाली निष्कर्ष सूची है:
| स्तर | अर्थ |
|---|---|
DYNAMICALLY_REACHABLE | रनटाइम कवरेज ने निष्पादन की पुष्टि की — तुरंत ठीक करें |
STATICALLY_REACHABLE | AST/taint के माध्यम से कोड पथ सिद्ध — उच्च प्राथमिकता |
UNCERTAIN | केवल कमज़ोर संकेत — जाँच करें |
NOT_REACHABLE | कोई साक्ष्य नहीं — अलर्ट कतार से हटाएँ |
सुरक्षा सूचना — शुरू करने से पहले,
.env.exampleको.env.localमें कॉपी करें और प्रत्येकCHANGE_MEमान को एक मजबूत यादृच्छिक रहस्य से बदलें।
वास्तविक क्रेडेंशियल सेट किए बिना औरCORS_ORIGINSकॉन्फ़िगर किए बिना VulnReach को सार्वजनिक नेटवर्क पर न रखें।
git clone https://github.com/ihrishikesh0896/vulnreach.git
cd vulnreach
# 1. अपनी स्थानीय कॉन्फ़िगरेशन बनाएँ
cp .env.example .env.local
# 2. प्रत्येक CHANGE_ME भरें — रहस्य उत्पन्न करें: openssl rand -hex 32
$EDITOR .env.local
# 3. स्टैक शुरू करें
docker compose up --build
# वैकल्पिक: गतिशील रनटाइम स्कैन सक्षम करें (प्रतिबंधित सॉकेट प्रॉक्सी के माध्यम से Docker डेमन पहुँच)
# docker compose -f docker-compose.yml -f docker-compose.runtime.yml up --build
प्रमाणीकरण विकल्प:
POST /loginSettings -> API Keys में बनाएँ, फिर इसे Authorization: Bearer <API_KEY> के रूप में उपयोग करें# एक टोकन प्राप्त करें (आपके .env.local में सेट किए गए क्रेडेंशियल से बदलें)
TOKEN=$(curl -s -X POST http://localhost:8000/login \
-H "Content-Type: application/json" \
-d '{"username":"<your-admin-user>","password":"<your-admin-password>"}' | jq -r .access_token)
# GitHub रिपॉजिटरी से स्कैन शुरू करें
curl -X POST http://localhost:8000/scan \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"repo_url":"https://github.com/yourorg/yourapp"}'
# परिणामों के लिए पोल करें
curl http://localhost:8000/scan/<scan_id> \
-H "Authorization: Bearer $TOKEN" | jq .summary
coverage.py के माध्यम से Docker-आधारित कवरेज संग्रहpolicy.block_if पुष्ट महत्वपूर्ण निष्कर्षों पर बिल्ड को विफल करता हैAuthorization: Bearer <API_KEY>)GET /scan/{id}/export/pdfprovider: none; ऑफ़लाइन उपयोग के लिए Ollama समर्थित हैस्कैन लक्ष्य: multi-tier-dvpa — एक जानबूझकर असुरक्षित Python/Django एप्लिकेशन जिसमें 11 पैकेजों में 72 कच्चे CVE हैं।
| परत | परिणाम |
|---|---|
| कच्चे CVE (Trivy) | 72 |
| वर्गीकृत निष्कर्ष (VulnReach) | 90 |
| DYNAMICALLY_REACHABLE — अभी ठीक करें | 49 |
| STATICALLY_REACHABLE — इस स्प्रिंट में ठीक करें | 23 |
| UNCERTAIN — जाँच करें | 18 |
| NOT_REACHABLE — दबाएँ | 0 |
| CI पाइपलाइन गेट | BLOCKED |
46% निष्कर्षों को अविभेदित "सब कुछ ठीक करें" कतार से बाहर निकालकर एक प्राथमिकता वाली कार्रवाई सूची में रखा गया। एक सामान्य उत्पादन सेवा में (जहाँ कई संक्रामक निर्भरताएँ कभी नहीं बुलाई जातीं), यह आंकड़ा 70–90% तक बढ़ जाता है।
पूर्ण कार्यप्रणाली, साक्ष्य शृंखला विस्तार, और पैकेज-स्तरीय विभाजन: docs/benchmark.md
scan.yml कॉन्फ़िगरेशन संदर्भtrivy PATH पर (स्थापित करें)jq (त्वरित आरंभ उदाहरणों में उपयोग किया गया — स्थापित करें)वैकल्पिक (सभी अनुपस्थित होने पर सुंदरता से छोड़ें):
semgrep — pip install semgreptainter — pip install tainter (taint-प्रवाह विश्लेषण; विकास गाइड देखें)Apache 2.0 — LICENSE देखें।