
Apache HTTP Server को CVE-2026-23918 (HTTP/2 double-free RCE) और 4 संबंधित CVE के विरुद्ध ऑडिट करने के लिए Python टूलकिट। ALPN सत्यापन के साथ निष्क्रिय स्कैनर + केवल-पठनीय लोकल ऑडिटर। कोई एक्सप्लॉइट नहीं।
CVE-2026-23918 (Apache HTTPD HTTP/2 डबल-फ्री RCE) और 4 मई, 2026 को Apache Software Foundation सुरक्षा परामर्श में खुलासा किए गए चार संबंधित CVE के लिए रक्षात्मक ऑडिट उपकरण।
| CVE | गंभीरता | घटक | प्रभाव | प्रभावित संस्करण |
|---|---|---|---|---|
| CVE-2026-23918 | उच्च (CVSS 8.8) | HTTP/2 | डबल फ्री / RCE | केवल 2.4.66 |
| CVE-2026-24072 | मध्यम | mod_rewrite (ap_expr) | विशेषाधिकार वृद्धि | ≤ 2.4.66 |
| CVE-2026-28780 | निम्न | mod_proxy_ajp | हीप बफर ओवरफ्लो | ≤ 2.4.66 |
| CVE-2026-29168 | निम्न | mod_md (OCSP) | संसाधन थकावट | 2.4.30 – 2.4.66 |
| CVE-2026-29169 | निम्न | mod_dav_lock | NULL Ptr Deref / DoS | ≤ 2.4.66 |
सभी समस्याएं Apache HTTP Server 2.4.67 में पैच की गई हैं।
ये उपकरण केवल उन सिस्टमों के विरुद्ध उपयोग के लिए हैं जिनके स्वामी आप हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित प्राधिकरण है। अनधिकृत स्कैनिंग आपके क्षेत्राधिकार में अवैध हो सकती है।
यह टूलकिट डिज़ाइन से रक्षात्मक है:
Server: HTTP हेडर पढ़ता है और मानक TLS ALPN का उपयोग करता है — वही तंत्र जिसका उपयोग हर आधुनिक ब्राउज़र HTTP/2 पर बातचीत करने के लिए करता है।.
├── apache_passive_audit.py # External asset audit (banner-grab + ALPN)
├── apache_local_audit.py # On-host / SSH local audit
├── LICENSE # MIT
├── .gitignore
└── README.md
python3 और हर बाद के रिलीज़ पर काम करता है।git clone https://github.com/sibersan/cve-2026-23918.git
cd cve-2026-23918
chmod +x apache_passive_audit.py apache_local_audit.py
apache_passive_audit.pyApache संस्करण का पता लगाने के लिए HTTP Server: हेडर पढ़ता है और इसे CVE तालिका से मिलाता है। इसके अतिरिक्त, HTTPS लक्ष्यों के लिए, यह निर्धारित करने हेतु एक मानक TLS ALPN हैंडशेक करता है कि HTTP/2 उजागर है या नहीं — यह CVE-2026-23918 के शोषण योग्य होने की मुख्य पूर्वशर्त है। कोई शोषण पेलोड नहीं भेजा जाता।
स्क्रिप्ट TLS हैंडशेक के ALPN एक्सटेंशन (RFC 7301) में h2 और http/1.1 प्रस्तावित करती है। सर्वर की पसंद "क्या HTTP/2 सक्षम है?" का मानक, स्पष्ट उत्तर है — जिसका उपयोग हर आधुनिक ब्राउज़र और curl करते हैं। यह भेद्यता या कोई असामान्य व्यवहार ट्रिगर नहीं करता।
जोखिम निर्णय इसे दर्शाता है:
# Single target
python3 apache_passive_audit.py -t https://web.example.com
# Multiple targets
python3 apache_passive_audit.py -t https://a.example.com -t https://b.example.com
# Targets file, parallel, CSV + JSON output
python3 apache_passive_audit.py -f targets.txt -w 20 -o report.csv --json report.json
# CI / log-friendly (no colors)
python3 apache_passive_audit.py -f targets.txt --no-color
targets.txt प्रारूप (प्रति पंक्ति एक लक्ष्य, टिप्पणियों के लिए #):
https://www.example.com
intranet.example.local:8443
# old staging box
http://10.0.5.12
| कोड | अर्थ |
|---|---|
| 0 | सभी लक्ष्य सुरक्षित |
| 1 | कम से कम एक लक्ष्य UNKNOWN या ERROR |
| 2 | कम से कम एक लक्ष्य VULNERABLE या |
ServerTokens Prod या Minimal वाले सर्वर संस्करण छिपाते हैं — स्क्रिप्ट ईमानदारी से UNKNOWN लौटाती है। पुष्टि के लिए लोकल ऑडिट का उपयोग करें।apache_local_audit.pyलक्ष्य होस्ट पर (या SSH के माध्यम से) चलता है और Apache बाइनरी, संस्करण, लोड किए गए मॉड्यूल और HTTP/2 कॉन्फ़िगरेशन का निरीक्षण करता है। यह शोषण-क्षमता की पूर्वशर्तों का भी मूल्यांकन करता है: उदाहरण के लिए यदि संस्करण 2.4.66 है लेकिन HTTP/2 अक्षम है, तो CVE-2026-23918 का जोखिम तदनुसार कम कर दिया जाता है।
sudo python3 apache_local_audit.py
# JSON report (for centralized inventory)
sudo python3 apache_local_audit.py --json /var/log/apache_audit_$(hostname).json
# Custom binary path
sudo python3 apache_local_audit.py --binary /opt/apache/bin/httpd
httpd -v / apache2 -v — संस्करणhttpd -V — बिल्ड जानकारी, HTTPD_ROOT, SERVER_CONFIG_FILEapache2ctl -M या httpd -M — लोड किए गए मॉड्यूलdpkg-query / rpm -q — पैकेज संस्करणInclude/IncludeOptional के माध्यम से शामिल की गई सभी फ़ाइलें (Debian के sites-enabled/, mods-enabled/ सहित) → Protocols निर्देश (h2 / h2c / http/1.1)| Flag | विवरण |
|---|---|
--binary | Apache बाइनरी पथ (ऑटो-डिटेक्ट को ओवरराइड करें) |
--json | JSON रिपोर्ट आउटपुट |
--no-color | रंगीन आउटपुट अक्षम करें |
| कोड | अर्थ |
|---|---|
| 0 | SAFE |
| 1 | PATCH_NEEDED या UNKNOWN |
| 2 | VULNERABLE या AT_RISK |
पूर्ण कॉन्फ़िगरेशन पढ़ने के लिए sudo/root की अनुशंसा की जाती है। इसके बिना, sites-enabled/, mods-enabled/, या /etc/httpd/conf.d/ में कुछ फ़ाइलें अपठनीय हो सकती हैं।
कई होस्टों पर लोकल ऑडिट चलाने और रिपोर्ट केंद्रीय रूप से एकत्र करने के लिए, एक Ansible ad-hoc उदाहरण:
ansible all -i inventory.ini -b -m script \
-a "apache_local_audit.py --json /tmp/apache_audit.json --no-color"
ansible all -i inventory.ini -b -m fetch \
-a "src=/tmp/apache_audit.json dest=./reports/ flat=no"
एकत्रित JSON फ़ाइलों को jq या एक छोटी Python स्क्रिप्ट के साथ विलय किया जा सकता है।
CVE-2026-23918 के लिए (पैच लागू होने तक):
Protocols निर्देश से h2 और h2c हटाएं, या Debian/Ubuntu पर sudo a2dismod http2 चलाएं, फिर सेवा को रीलोड करें।mod_dav_lock अनलोड करें (CVE-2026-29169)।.htaccess लेखन पहुंच वाले उपयोगकर्ताओं / वर्चुअल होस्टों का ऑडिट करें (CVE-2026-24072)।आधिकारिक परामर्श: https://httpd.apache.org/security/vulnerabilities_24.html
पुल रिक्वेस्ट का स्वागत है। नया CVE जोड़ते समय, कृपया:
CVE_TABLE में प्रभावित संस्करण सीमा और match लैम्ब्डा के साथ एक प्रविष्टि जोड़ें।needs फ़ील्ड परिभाषित करें (लोड किया गया मॉड्यूल, सक्षम प्रोटोकॉल, आदि)।from __future__ import annotations, PEP 585 जेनेरिक्स (list[int]), subprocess.run(capture_output=True), और @dataclass से बचें।MIT © 2026 SiberSAN
यह सॉफ़्टवेयर "जैसा है" (as is) प्रदान किया जाता है, बिना किसी भी प्रकार की वारंटी के। प्रोडक्शन उपयोग से पहले परीक्षण वातावरण में सत्यापित करें। अनधिकृत सिस्टमों के विरुद्ध किसी भी उपयोग की सारी कानूनी ज़िम्मेदारी उपयोगकर्ता वहन करता है।
| Flag | विवरण |
|---|
-t, --target | एकल लक्ष्य (दोहराया जा सकता है) |
-f, --file | लक्ष्य सूची फ़ाइल |
-o, --csv | CSV रिपोर्ट आउटपुट |
--json | JSON रिपोर्ट आउटपुट |
--timeout | सेकंड में अनुरोध टाइमआउट (डिफ़ॉल्ट 10) |
-w, --workers | समानांतर वर्कर थ्रेड (डिफ़ॉल्ट 10) |
--no-color | रंगीन आउटपुट अक्षम करें |
AT_RISK| स्तर | अर्थ |
|---|
VULNERABLE | संस्करण परामर्श CVE सीमा से मेल खाता है और इसकी पूर्वशर्त पूरी होती है (जैसे HTTP/2 सक्षम) |
AT_RISK | अपैच्ड संस्करण लेकिन उच्च-गंभीरता वाली पूर्वशर्त पूरी नहीं होती; अन्य CVE अभी भी लागू होते हैं |
SAFE | संस्करण ≥ 2.4.67 |
UNKNOWN | बैनर छिपा हुआ (ServerTokens Prod) या रिवर्स प्रॉक्सी/WAF द्वारा मास्क किया गया — लोकल ऑडिट स्क्रिप्ट से सत्यापित करें |
NOT_APACHE | Apache नहीं (nginx, IIS, आदि) |
ERROR | कनेक्शन त्रुटि |
| स्तर | अर्थ |
|---|
VULNERABLE | अपैच्ड संस्करण + उच्च-गंभीरता वाली CVE पूर्वशर्तें पूरी (जैसे HTTP/2 सक्षम) |
AT_RISK | अपैच्ड संस्करण + कम से कम एक CVE पूर्वशर्त पूरी |
PATCH_NEEDED | अपैच्ड संस्करण लेकिन कोई प्रासंगिक मॉड्यूल/प्रोटोकॉल सक्षम नहीं — फिर भी पैच करें |
SAFE | संस्करण ≥ 2.4.67 |
UNKNOWN | संस्करण का पता नहीं चल सका |