
NGINX HTTP/3 (ngx_http_v3_module) के लिए गैर-विनाशकारी भेद्यता स्कैनर। यह केवल एक सुरक्षित प्रोब करता है: एक HTTP/3 (QUIC) कनेक्शन खोलता है, एक एकल HEAD अनुरोध भेजता है और `Server` प्रतिक्रिया हेडर का निरीक्षण करता है। यह कभी भी QPACK एन्कोडर स्ट्रीम को फिर से खोलने या use-after-free को ट्रिगर करने का प्रयास नहीं करता है।
NGINX HTTP/3 (QUIC) use-after-free के लिए गैर-विनाशकारी मास स्कैनर
पता लगाएँ कि आपके कौन-से होस्ट उजागर (exposed) हैं — बग को कभी ट्रिगर किए बिना।
यह टूल केवल अधिकृत सुरक्षा परीक्षण के लिए है — आपका अपना इन्फ्रास्ट्रक्चर, या वे सिस्टम जिनका मूल्यांकन करने की आपके पास स्पष्ट लिखित अनुमति है। यह एक रीड-ओनली फ़िंगरप्रिंट करता है और भेद्यता का शोषण नहीं करता। दायरे (scope) में बने रहना तथा लागू कानूनों और responsible-disclosure सिद्धांतों का पालन करना आपकी ज़िम्मेदारी है। लेखक दुरुपयोग के लिए कोई दायित्व स्वीकार नहीं करते।
CVE-2026-42530 NGINX के ngx_http_v3_module में एक use-after-free (CWE-416) है। जब NGINX को HTTP/3 serve करने के लिए कॉन्फ़िगर किया जाता है, तो एक remote, unauthenticated attacker किसी crafted HTTP/3 session के भीतर QPACK encoder stream दोबारा खोल सकता है, जिससे worker process freed memory को reference करने लगता है। तत्काल प्रभाव worker crash/restart (denial of service) है; ऐसे होस्टों पर जहाँ ASLR disabled है या bypass किया जा सकता है, यह remote code execution तक बढ़ सकता है।
मुख्य बिंदु: यह flaw केवल तभी पहुँच योग्य है जब HTTP/3 (QUIC) enabled हो — यह डिफ़ॉल्ट रूप से चालू नहीं होता। केवल TCP पर HTTP/1.1 या HTTP/2 serve करने वाले होस्ट इस विशेष vector से प्रभावित नहीं होते।
| CVE | CVE-2026-42530 |
| घटक | ngx_http_v3_module (HTTP/3 / QUIC) |
| वर्ग | Use-After-Free (CWE-416) |
| CVSS | 9.2 (v4) · 8.1 (v3.1) |
| प्रभाव | Worker crash / DoS, ASLR के बिना संभावित RCE |
| वेक्टर | नेटवर्क, unauthenticated, बिना user interaction के |
| ब्रांच | स्थिति |
|---|---|
| NGINX Open Source 1.31.0 – 1.31.1 | ❌ असुरक्षित |
| NGINX Open Source 1.31.2+ | ✅ सुधारित |
| NGINX Plus | विक्रेता का advisory लागू करें (R36 P6 / 37.0.2.1) |
यह एक वास्तविक HTTP/3 कनेक्शन खोलता है, एक HEAD / अनुरोध भेजता है, और Server header को वापस पढ़ता है। इसके आधार पर यह प्रत्येक target को वर्गीकृत करता है — और महत्वपूर्ण रूप से, यह reachable-लेकिन-version-hidden होस्टों को गलत "clean" के बजाय manual review की आवश्यकता के रूप में मानता है, क्योंकि QUIC का reachable होना इस CVE की पूर्वशर्त है।
| Status | अर्थ |
|---|---|
VULNERABLE | HTTP/3 पर serve किया जा रहा NGINX 1.31.0 / 1.31.1 |
HTTP3_VERSION_HIDDEN | HTTP/3 reachable है लेकिन Server masked है (server_tokens off) — version को manually जाँचें |
LIKELY_PATCHED | HTTP/3 पर NGINX, version प्रभावित range से बाहर |
NOT_NGINX | HTTP/3 reachable है, लेकिन server NGINX नहीं है |
NO_HTTP3 | कोई HTTP/3 / QUIC listener reachable नहीं (इस vector से exposed नहीं) |
ERROR | Probe किसी अन्य कारण से विफल रहा |
इसके लिए Python 3.11+ चाहिए (asyncio.timeout का उपयोग करता है)।
git clone https://github.com/renzi25031469/CVE-2026-42530-scanner.git
cd CVE-2026-42530-scanner
pip install aioquic
सुझाव: virtual environment का उपयोग करें —
python3 -m venv .venv && source .venv/bin/activate।
# Single host
python3 cve-2026-42530-scanner.py example.com
# Many hosts from a file, 100 in parallel, save a CSV
python3 cve-2026-42530-scanner.py -f targets.txt -c 100 --csv results.csv
# Pipe targets from stdin and export JSON
cat hosts.txt | python3 cve-2026-42530-scanner.py -f - --json results.json
# Custom port and timeout
python3 cve-2026-42530-scanner.py target.internal -p 8443 -t 5
प्रत्येक पंक्ति में एक होस्ट। Ports, schemes, paths और comments स्वचालित रूप से संभाले जाते हैं:
# production edge
edge01.example.com
edge02.example.com:8443
https://api.example.com/
# staging
10.0.5.21
| फ़्लैग | विवरण | डिफ़ॉल्ट |
|---|---|---|
host | एकल target (positional) | — |
-f, --file | Target list फ़ाइल (- = stdin) | — |
-p, --port | डिफ़ॉल्ट QUIC/UDP port | 443 |
-t, --timeout | प्रति-host timeout (सेकंड में) | 10 |
-c, --concurrency | अधिकतम समवर्ती स्कैन | 50 |
--csv | परिणाम CSV में लिखें | — |
--json | परिणाम JSON में लिखें | — |
[*] CVE-2026-42530 safe-check — 4 target(s), concurrency=100, timeout=10s
======================================================================
CVE-2026-42530 SAFE-CHECK RESULTS
======================================================================
[VULNERABLE ] edge01.example.com:443 (Server: nginx/1.31.1)
-> Vulnerable NGINX version over HTTP/3. Upgrade to nginx/1.31.2 or later.
[HTTP3_VERSION_HIDDEN ] api.example.com:443
-> HTTP/3 reachable but Server header is masked. Verify the NGINX version manually.
[LIKELY_PATCHED ] edge02.example.com:8443 (Server: nginx/1.31.2)
[NO_HTTP3 ] 10.0.5.21:443
----------------------------------------------------------------------
Summary: VULNERABLE=1 | HTTP3_VERSION_HIDDEN=1 | LIKELY_PATCHED=1 | NO_HTTP3=1
[!] 1 host(s) appear VULNERABLE. Mitigation: upgrade to nginx/1.31.2 or later,
or remove 'quic' from all 'listen' directives.
======================================================================
listen directive से quic parameter हटाकर और http3 on; हटाकर HTTP/3 बंद कर दें, फिर NGINX को reload करें। इससे असुरक्षित code path पूरी तरह समाप्त हो जाता है।/proc/sys/kernel/randomize_va_space = 2)। इसे hardening परत मानें, पैचिंग का विकल्प नहीं।aioquic asynchronous है, इसलिए यह स्कैनर OS threads के बजाय asyncio.Semaphore का उपयोग करता है। Network-I/O-bound कार्य के लिए — wire पर प्रतीक्षा कर रहे सैकड़ों QUIC handshakes — एक single event loop thread pool की तुलना में काफी कम overhead के साथ बेहतर scale करता है, वही "एक साथ कई होस्ट स्कैन करें" व्यवहार देते हुए। -c से bound समायोजित करें।
मूल disclosure में श्रेयित शोधकर्ताओं का उनके समन्वित reporting के लिए धन्यवाद।
MIT License के अंतर्गत जारी किया गया। देखें LICENSE।