
HTTP/2 Bomb (CVE-2026-49975) Nginx / Apache httpd के लिए गैर-विनाशकारी भेद्यता डिटेक्टर। शून्य-निर्भरता Python.
HTTP/2 बम (CVE-2026-49975) गैर-विनाशकारी भेद्यता जांच उपकरण — Nginx / Apache httpd के लिए
CVE-2026-49975 एक व्यापक प्रभाव वाला HTTP/2 प्रोटोकॉल स्तरीय दूरस्थ सेवा अस्वीकार भेद्यता है, जिसे सुरक्षा शोधकर्ता Quang Luong द्वारा खोजा गया। यह भेद्यता HPACK हेडर संपीड़न और प्रवाह नियंत्रण तंत्र के संयोजन डिज़ाइन दोष का उपयोग करती है, हमलावर बिना प्रमाणीकरण के 10-20 सेकंड में सर्वर के 32GB मेमोरी को समाप्त कर सकता है।
| सर्वर | प्रभावित संस्करण | आवर्धन अनुपात | सुधार स्थिति |
|---|---|---|---|
| Apache httpd | 2.4.17 – 2.4.67 (mod_http2 < 2.0.41) | ~4,000:1 | ✅ ठीक हो गया |
| Nginx | < 1.29.8 | ~70:1 | ✅ ठीक हो गया |
| Envoy | ≤ 1.37.2 | ~5,700:1 | ❌ ठीक नहीं हुआ |
| Microsoft IIS | Windows Server 2025 सहित | ~68:1 | ❌ ठीक नहीं हुआ |
| Cloudflare Pingora | ≤ 0.8.0 | ~62:1 | ❌ ठीक नहीं हुआ |
यह उपकरण वास्तविक PoC पर आधारित है, दो जांच मोड का उपयोग करता है:
HPACK इंडेक्स संदर्भ बम का पता लगाना: डायनामिक तालिका प्रविष्टि ("a", "") डालें, फिर इंडेक्स संदर्भ भेजें। प्रति संदर्भ 1 बाइट ऑन-वायर → 59 बाइट्स सर्वर मेमोरी (3B पूल कॉपी + 56B ngx_table_elt_t)। हमला पैरामीटर refs=32000, जांच केवल refs=3 का उपयोग करती है।
कुकी क्रम्ब विलय बम का पता लगाना: mod_http2 के कुकी विलय तंत्र का उपयोग (apr_table_setn डुप्लिकेट कुकी को "; " से जोड़ता है), विलय की गई कुकी LimitRequestFields में गिनती नहीं होती। हमला पैरामीटर refs=4091 (~4000:1 आवर्धन), जांच केवल refs=3 का उपयोग करती है।
ENHANCE_YOUR_CALM लौटाता है → 🛡️ सुरक्षा तैनात हैRST_STREAM से इनकार करता है → 🛡️ सुरक्षा हैGOAWAY भेजता है → 🛡️ सुरक्षा हैशून्य निर्भरता, केवल Python मानक पुस्तकालय (ssl, socket, struct) का उपयोग करता है।
git clone https://github.com/adminlove520/http2-bomb-detector.git
cd http2-bomb-detector
Python 3.7+ आवश्यक है।
# स्वचालित जांच (Nginx + Apache दोनों मोड)
python http2_bomb_detector.py --host example.com
# मोड निर्दिष्ट करें
python http2_bomb_detector.py --host example.com --mode nginx
python http2_bomb_detector.py --host example.com --mode httpd
# पोर्ट निर्दिष्ट करें
python http2_bomb_detector.py --host example.com --port 8443
# केवल भेद्यता जानकारी आउटपुट करें, जांच पैकेट न भेजें
python http2_bomb_detector.py --host example.com --no-probe
# JSON प्रारूप में आउटपुट
python http2_bomb_detector.py --host example.com --json
# फ़ाइल से लक्ष्य सूची पढ़ें
python http2_bomb_detector.py -f targets.txt
# रिपोर्ट आउटपुट करें
python http2_bomb_detector.py -f targets.txt -o report.txt
targets.txt प्रारूप (प्रति पंक्ति एक, # से शुरू टिप्पणी):
# वेब सर्वर सूची
example.com
https://example.org:8443
192.168.1.100
[INFO] example.com:443 से कनेक्ट हो रहा है...
[OK] HTTP/2 कनेक्शन स्थापित हुआ
[INFO] --- NGINX मोड जांच ---
[INFO] हमला वेक्टर: HPACK इंडेक्स संदर्भ बम: डायनामिक तालिका प्रविष्टि ('a','') × 32000 संदर्भ
[INFO] सुधार संस्करण: 1.29.8 | आवर्धन अनुपात: ~70:1
[INFO] जांच पैकेट भेज रहा है (refs=3, गैर-विनाशकारी)...
[WARN] ⚠️ सर्वर ने जांच पैकेट चुपचाप स्वीकार कर लिया — संभावित रूप से प्रभावित!
[INFO] --- HTTPD मोड जांच ---
[INFO] हमला वेक्टर: कुकी क्रम्ब विलय बम: खाली कुकी × 4091 संदर्भ
[INFO] सुधार संस्करण: mod_http2 2.0.41 / httpd 2.4.68 | आवर्धन अनुपात: ~4000:1
[INFO] जांच पैकेट भेज रहा है (refs=3, गैर-विनाशकारी)...
[OK] सर्वर ने RST_STREAM के साथ जांच प्रवाह को अस्वीकार कर दिया — सुरक्षा है
==================================================
🛡️ NGINX: potentially_vulnerable
⚠️ HTTPD: protected
यह उपकरण केवल अधिकृत सुरक्षा परीक्षण के लिए है। अनधिकृत लक्ष्यों पर इस उपकरण का उपयोग कानून का उल्लंघन कर सकता है। उपयोगकर्ता सभी कानूनी जिम्मेदारी स्वयं वहन करता है।
MIT