
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 से प्रभावित नहीं होते।
| ब्रांच | स्थिति |
|---|---|
| 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 की पूर्वशर्त है।
इसके लिए 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
[*] 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।
Defenders और अधिकृत red teams के लिए बनाया गया। जिम्मेदारी से स्कैन करें। 🔐
| 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 के |
| 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 किसी अन्य कारण से विफल रहा |
| फ़्लैग | विवरण | डिफ़ॉल्ट |
|---|
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 में लिखें | — |