
एक Python स्क्रिप्ट जो जाँचती है कि क्या कोई वेब सर्वर MadeYouReset (CVE-2025-8671) के प्रति संवेदनशील है — एक HTTP/2 DoS हमला जो सर्वर को उसके स्वयं के स्ट्रीम रीसेट करने के लिए धोखा देकर Rapid Reset मिटिगेशन को बायपास करता है। यह एक दोषपूर्ण WINDOW_UPDATE फ्रेम भेजकर लक्ष्य की जाँच करता है और निरीक्षण करता है कि सर्वर प्रतिक्रिया देता है या नहीं।
एक हल्का-फुल्का Python स्क्रिप्ट जो यह पता लगाता है कि कोई वेब सर्वर MadeYouReset HTTP/2 सेवा-अस्वीकार भेद्यता के लिए संभावित रूप से असुरक्षित है या नहीं — जिसे CVE-2025-8671 (CVSS 7.5 उच्च) के रूप में ट्रैक किया जाता है।
MadeYouReset एक HTTP/2 DoS भेद्यता है जिसे अगस्त 2025 में तेल अवीव विश्वविद्यालय और Imperva के शोधकर्ताओं द्वारा खुलासा किया गया था। यह कई लोकप्रिय सर्वर कार्यान्वयनों में HTTP/2 स्ट्रीम लेखांकन और आंतरिक बैकएंड प्रोसेसिंग के बीच बेमेल का शोषण करती है।
हमला जानबूझकर गलत तरीके से बनाए गए HTTP/2 नियंत्रण फ़्रेम भेजता है (जैसे increment=0 वाला WINDOW_UPDATE, जो RFC 9113 §6.9.1 के अनुसार अवैध है) ताकि स्वयं सर्वर को RST_STREAM फ़्रेम जारी करने के लिए मजबूर किया जा सके। चूंकि सर्वर प्रोटोकॉल स्तर पर स्ट्रीम को बंद मानता है जबकि बैकएंड में अनुरोध को संसाधित करना जारी रखता है, एक हमलावर MAX_CONCURRENT_STREAMS सीमा को बाइपास कर सकता है और सर्वर संसाधनों को समाप्त कर सकता है — बिना एक भी क्लाइंट-साइड RST_STREAM भेजे।
यह इसे पहले के Rapid Reset हमले (CVE-2023-44487) के लिए शुरू की गई शमन उपायों का बाइपास बनाता है।
ज्ञात प्रभावित सॉफ़्टवेयर:
| उत्पाद | CVE |
|---|---|
| Apache Tomcat 9.x / 10.x / 11.x | CVE-2025-48989 |
| Netty < 4.1.124.Final / 4.2.4.Final | CVE-2025-55163 |
| F5 BIG-IP | CVE-2025-54500 |
| IBM WebSphere Application Server Liberty | CVE-2025-36047 |
| Varnish, Fastly, Jetty, SUSE, Wind River | CVE-2025-8671 |
h2 पर बातचीत करते हुए TLS हैंडशेक करता है।SETTINGS फ़्रेम भेजता है।HEADERS फ़्रेम के साथ एक अनुरोध स्ट्रीम खोलता है।WINDOW_UPDATE फ़्रेम (increment=0) भेजता है।RST_STREAM (कोई GOAWAY नहीं) → संभवतः असुरक्षित।GOAWAY → सही RFC व्यवहार; संभवतः पैच किया गया।स्क्रिप्ट एक केवल-पठन निष्क्रिय जांच करती है — यह सर्वर का शोषण या स्ट्रेस-टेस्ट करने का प्रयास नहीं करती है।
git clone https://github.com/ayushghatkar8080/MadeYouReset_Tester.git
cd MadeYouReset_Tester
# No pip install needed — no dependencies
python3 main.py <url> [OPTIONS]
| फ़्लैग | डिफ़ॉल्ट | विवरण |
|---|---|---|
--timeout SECONDS | 8 | सॉकेट रीड टाइमआउट |
--no-color | off | ANSI रंग आउटपुट अक्षम करें |
# Basic check
python3 main.py https://example.com
# Custom port and longer timeout
python3 main.py https://example.com:8443 --timeout 15
# CI-friendly (no colour)
python3 main.py https://example.com --no-color
| कोड | अर्थ |
|---|---|
0 | असुरक्षित नहीं — सर्वर ने GOAWAY के साथ प्रतिक्रिया दी (सही RFC व्यवहार) |
1 | संभावित रूप से असुरक्षित — सर्वर ने स्ट्रीम पर RST_STREAM भेजा लेकिन कोई GOAWAY नहीं |
2 | अनिर्णायक — कोई HTTP/2 नहीं, कनेक्शन त्रुटि, या अस्पष्ट प्रतिक्रिया |
एग्ज़िट कोड इसे CI पाइपलाइनों या स्वचालन स्क्रिप्ट में एकीकृत करना आसान बनाते हैं।
========================================================
MadeYouReset (CVE-2025-8671) Checker
========================================================
Target : https://vulnerable-server.example.com
Host : vulnerable-server.example.com:443
Path : /
Timeout : 8.0s
────────────────────────────────────────────────────────
[*] Connecting to vulnerable-server.example.com:443 ...
✓ TCP connection established
[*] Performing TLS handshake (ALPN: h2, http/1.1) ...
→ Negotiated protocol : h2
✓ HTTP/2 (h2) negotiated via ALPN
[*] Sending HTTP/2 client preface ...
✓ Preface + SETTINGS sent
[*] Waiting for server SETTINGS ...
← Frame type=0x04 stream=0 length=18
✓ Server SETTINGS received
✓ Sent SETTINGS ACK
[*] Opening HTTP/2 stream 1 (HEADERS frame) ...
✓ HEADERS sent on stream 1
[*] Sending malformed WINDOW_UPDATE (increment=0) on stream 1 ...
RFC 9113 §6.9.1: increment=0 is a stream-level FLOW_CONTROL_ERROR
✓ Malformed WINDOW_UPDATE sent
[*] Analysing server response (timeout=8.0s) ...
← RST_STREAM stream=1 error_code=0x00000003
────────────────────────────────────────────────────────
RESULT
────────────────────────────────────────────────────────
[LIKELY VULNERABLE]
Server responded with RST_STREAM on stream 1
(error_code=0x00000003) but did NOT send GOAWAY.
Recommended actions:
• Patch: Apache Tomcat ≥10.1.44/11.0.10/9.0.108,
Netty ≥4.1.124.Final / 4.2.4.Final,
and other vendor advisories for CVE-2025-8671.
• Interim: disable HTTP/2 or deploy a WAF/proxy that
validates HTTP/2 frames before forwarding.
========================================================
| कार्रवाई | विवरण |
|---|---|
| पैच | अपने HTTP/2 स्टैक के लिए नवीनतम विक्रेता अपडेट लागू करें (ऊपर तालिका देखें) |
| HTTP/2 अक्षम करें | अस्थायी शमन के रूप में HTTP/1.1 पर वापस जाएँ |
| WAF / प्रॉक्सी | एक रिवर्स प्रॉक्सी या WAF तैनात करें जो किनारे पर HTTP/2 फ़्रेम को मान्य करता है |
| रेट लिमिटिंग | प्रति-क्लाइंट कनेक्शन सीमा और RST_STREAM दर सीमाएँ लागू करें |
यह उपकरण केवल अधिकृत सुरक्षा परीक्षण और अनुसंधान के लिए है।
इस स्क्रिप्ट को उन प्रणालियों के विरुद्ध न चलाएँ जिनके स्वामी आप नहीं हैं या जिनके परीक्षण की स्पष्ट लिखित अनुमति आपके पास नहीं है।
लेखक दुरुपयोग के लिए कोई दायित्व स्वीकार नहीं करते हैं।