
nginx और Apache के लिए ट्रिगर-जागरूक वेब सर्वर CVE ऑडिट। संस्करण मिलान से परे जाकर यह जाँचता है कि क्या कमजोर कोड पथ आपके कॉन्फ़िगरेशन में वास्तव में पहुंच योग्य है। निष्कर्षों को सक्रिय / निष्क्रिय / असत्यापित के रूप में वर्गीकृत करता है। एकल-फ़ाइल Python 3.5+, कोई निर्भरता नहीं।
यह मत पूछिए कि क्या आप असुरक्षित हैं। यह पूछिए कि क्या आप शोषणीय हैं।
एक एकल-फ़ाइल पायथन टूल जो nginx और Apache का ज्ञात CVEs के विरुद्ध ऑडिट करता है, स्थापित संस्करण और यह दोनों की जाँच करके कि क्या असुरक्षित कोड पथ आपके कॉन्फ़िगरेशन के माध्यम से वास्तव में पहुँच योग्य है।
अधिकांश CVE स्कैनर केवल संस्करण मिलान पर रुक जाते हैं: "nginx 1.18.0 — CVE-2026-42945, उच्च गंभीरता, आप असुरक्षित हैं।" लेकिन कई CVEs के लिए शोषणीय होने हेतु एक विशिष्ट कॉन्फ़िगरेशन पैटर्न आवश्यक होता है। जो स्कैनर कॉन्फ़िगरेशन को अनदेखा करता है, वह आपको लाल अलर्ट से भर देता है जो वास्तविक जोखिम को प्रतिबिंबित नहीं करते — और इससे भी बुरा, यह उन गुप्त जोखिमों को छिपा सकता है जो कल आपका कॉन्फ़िगरेशन बदलने पर वास्तविक हो जाएँगे।
web_server_audit प्रति CVE दो अलग-अलग प्रश्नों का उत्तर देता है:
इन्हें मिलाकर तीन ईमानदार वर्गीकरण प्राप्त होते हैं:
| वर्गीकरण | अर्थ |
|---|
| 🔴 सक्रिय शोषण जोखिम | असुरक्षित संस्करण और ट्रिगर मौजूद। आज शोषणीय। |
| 🟡 गुप्त जोखिम | असुरक्षित संस्करण, कोई ट्रिगर नहीं। यदि कॉन्फ़िगरेशन बदलकर पैटर्न शामिल किया जाए तो शोषणीय हो जाता है। |
| ⚪ असत्यापित | कॉन्फ़िगरेशन अपठनीय; स्थिति अज्ञात। |
git clone https://github.com/YOUR_USERNAME/web-server-audit.git
cd web-server-audit
sudo python3 web_server_audit.py
| CVE | गंभीरता | ट्रिगर पैटर्न |
|---|---|---|
| CVE-2026-42945 (Rift) | HIGH | rewrite + अनाम कैप्चर ($1,$2) + प्रतिस्थापन में ? |
| CVE-2026-42946 | MEDIUM | scgi_pass या uwsgi_pass उपयोग में |
| CVE-2026-40701 | MEDIUM | ssl_stapling on + resolver एक साथ |
| CVE-2026-42934 | LOW | charset/charset_types/source_charset निर्देश |
Apache CVE सूची वर्तमान में खाली है लेकिन संरचना मौजूद है — नीचे विस्तार देखें।
CVE के अलावा, यह टूल निम्नलिखित भी रिपोर्ट करता है:
/proc/sys/kernel/randomize_va_space) — पूर्ण ASLR मेमोरी बग्स की RCE शोषणीयता को काफी कम करता हैesm-infra और esm-apps के लिए स्थितिnginx, apache2, systemctl, ss, journalctl का उपयोग करता है; अन्यथा जाँच को शालीनता से छोड़ देता है# संक्षिप्त रिपोर्ट (डिफ़ॉल्ट — OK पंक्तियों को छुपाता है)
sudo python3 web_server_audit.py
# OK पंक्तियों सहित सभी निष्कर्ष
sudo python3 web_server_audit.py --verbose
# कोई ANSI रंग नहीं (पाइप, लॉग, CI आउटपुट के लिए उपयुक्त)
sudo python3 web_server_audit.py --no-color
# मशीन-पठनीय JSON
sudo python3 web_server_audit.py --json
| कोड | अर्थ |
|---|---|
| 0 | कोई समस्या नहीं |
| 1 | केवल चेतावनियाँ या गैर-CVE महत्वपूर्ण निष्कर्ष |
| 2 | कम से कम एक CVE सक्रिय रूप से शोषणीय है |
निकास कोड 2 स्वाभाविक CI/CD विफलता संकेत है।
========================================================================
Web Server Audit - 2026-05-16T01:24:55
Host: web-prod-01
web_server_audit.py v1.0.0 - SiberSAN - MIT License
========================================================================
[system]
------------------------------------------------------------------------
[OK] OK ASLR fully enabled (randomize_va_space=2)
[i] INFO OS: Ubuntu 18.04.6 LTS
[!] WARN Ubuntu 18.04 is in ESM-only support
[nginx] version 1.18.0 (active)
------------------------------------------------------------------------
[i] INFO nginx listening on: 0.0.0.0:80, 0.0.0.0:443
[i] INFO CVE-2026-42945 (HIGH): version vulnerable but NOT triggered
Trigger: rewrite + unnamed capture ($1,$2) + '?' in replacement
Evidence: No rewrite directives in configuration
[i] INFO CVE-2026-42946 (MEDIUM): version vulnerable but NOT triggered
[!] WARN nginx installed from PPA (1.18.0-3ubuntu1+bionic1)
========================================================================
Real-risk summary
------------------------------------------------------------------------
ACTIVE EXPLOITATION RISK: none detected.
LATENT RISK - vulnerable version, no trigger in config (3):
- [nginx] CVE-2026-42945 (HIGH)
- [nginx] CVE-2026-42946 (MEDIUM)
- [nginx] CVE-2026-42934 (LOW)
These become exploitable if config changes introduce the trigger.
Mitigation: config-change discipline + plan upgrade.
========================================================================
Findings: 0 critical, 2 warnings
========================================================================
नया CVE जोड़ने के लिए दो चरण हैं।
1. एक ट्रिगर फ़ंक्शन लिखें जो पूर्ण कॉन्फ़िगरेशन टेक्स्ट (nginx -T आउटपुट) ले और (triggered: bool, evidence: str) लौटाए:
def _trigger_my_cve(conf):
hits = [l for l in conf.splitlines() if re.search(r'risky_directive', l)]
if hits:
return True, "Found: " + hits[0]
return False, "Pattern not present"
2. NGINX_CVES (या Apache_CVES) में प्रविष्टि जोड़ें:
{
"id": "CVE-XXXX-NNNNN",
"name": "Descriptive name",
"severity": "HIGH",
"affected": ("1.10.0", "1.25.0"),
"fixed_in": ["1.25.1"],
"trigger_desc": "Human-readable trigger description",
"trigger_fn": _trigger_my_cve,
},
बस इतना ही। फ्रेमवर्क वर्गीकरण, आउटपुट फ़ॉर्मेटिंग, JSON, निकास कोड और कार्यकारी सारांश स्वचालित रूप से संभालता है।
--verbose का उपयोग करें।पुल अनुरोध, मुद्दे, नए CVE डिटेक्टर, और अतिरिक्त वेब सर्वरों (lighttpd, Caddy, HAProxy, आदि) के लिए समर्थन सभी का स्वागत है।
नए CVE डिटेक्टर का प्रस्ताव करते समय कृपया शामिल करें:
MIT License के अंतर्गत जारी।
Copyright (c) 2026 SiberSAN