
रनटाइम-जागरूक 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 |