
अधिकृत वातावरण में CVE-2019-9511 (Data Dribble) और CVE-2019-9513 (Priority Churn) DoS वेक्टरों के नियंत्रित सत्यापन के लिए हल्के HTTP/2 प्रोब।
यह रिपॉजिटरी CVE-2019-9511 और CVE-2019-9513 से संबंधित व्यवहारों के नियंत्रित सत्यापन के लिए स्क्रिप्ट्स का संग्रह है, जो HTTP/2 कार्यान्वयनों में सेवा अस्वीकार वैक्टर से संबंधित हैं।
स्क्रिप्ट्स को अधिकृत वातावरणों में तकनीकी सत्यापन का समर्थन करने के लिए बनाया गया है, जिससे यह देखा जा सके कि सर्वर HTTP/2 पर बातचीत करता है या नहीं और Data Dribble और Priority Churn से संबंधित विशिष्ट पैटर्न पर प्रतिक्रिया करता है, बिना सेवा अस्वीकार हमला किए।
इसका उद्देश्य वेक्टर को हल्के और सुरक्षित तरीके से सिद्ध करना है, जिसमें कम मात्रा में अनुरोध हों और वातावरण को अनुपलब्ध करने का कोई इरादा न हो।
| CVE | नाम | स्क्रिप्ट | विवरण |
|---|
CVE-2019-9511 | HTTP/2 Data Dribble | data_dribble_probe.py | HTTP/2 प्रवाह नियंत्रण व्यवहार का सत्यापन करता है जिसमें नियंत्रित तरीके से डेटा के छोटे हिस्से जारी किए जाते हैं। |
CVE-2019-9513 | HTTP/2 Priority Churn / Resource Loop | priority_churn_probe.py | कम तीव्रता पर PRIORITY फ्रेम प्रसंस्करण व्यवहार का सत्यापन करता है। |
CVE-2019-9511, जिसे HTTP/2 Data Dribble के नाम से जाना जाता है, कुछ HTTP/2 कार्यान्वयनों को प्रभावित करता है जो प्रवाह विंडो और डेटा की क्रमिक डिलीवरी के हेरफेर को कुशलता से नहीं संभालते।
इस परिदृश्य में, एक हमलावर सर्वर से डेटा का अनुरोध कर सकता है और प्रवाह नियंत्रण में हेरफेर कर सकता है ताकि प्रतिक्रिया खुली रखी जाए और छोटे ब्लॉकों में वितरित की जाए, जैसे 1 बाइट के पैकेट। कार्यान्वयन के आधार पर, यह व्यवहार अत्यधिक CPU, मेमोरी या कनेक्शन संसाधनों की खपत कर सकता है, जिससे सेवा अस्वीकार का जोखिम हो सकता है।
इस रिपॉजिटरी में संबंधित स्क्रिप्ट है:
data_dribble_probe.py
स्क्रिप्ट का उद्देश्य व्यवहार को हल्के ढंग से सत्यापित करना है, बिना आक्रामक लोड उत्पन्न किए और बिना अनुपलब्धता पैदा करने का प्रयास किए।
संदर्भ:
CVE-2019-9513, जिसे HTTP/2 Priority Churn या Resource Loop के नाम से जाना जाता है, कुछ HTTP/2 कार्यान्वयनों को प्रभावित करता है जो स्ट्रीम प्राथमिकता पेड़ में लगातार बदलाव को महंगे ढंग से संसाधित करते हैं।
इस परिदृश्य में, एक हमलावर कई स्ट्रीम बना सकता है और उनके बीच बार-बार प्राथमिकता बदल सकता है, जिससे प्राथमिकता पेड़ में उथल-पुथल (churn) होती है। कार्यान्वयन के आधार पर, यह व्यवहार अत्यधिक CPU खपत कर सकता है और सेवा अस्वीकार का कारण बन सकता है।
इस रिपॉजिटरी में संबंधित स्क्रिप्ट है:
priority_churn_probe.py
स्क्रिप्ट का उद्देश्य यह सत्यापित करना है कि क्या सर्वर PRIORITY फ्रेम स्वीकार करता है और संसाधित करता है, कम तीव्रता पर और DoS हमला किए बिना।
संदर्भ:
CVEs CVE-2019-9511 और CVE-2019-9513 किसी एक विशिष्ट वेब सर्वर संस्करण (जैसे केवल nginx, Apache या Tomcat) से संबद्ध नहीं हैं।
ये विभिन्न उत्पादों, लाइब्रेरियों, प्रॉक्सीज़, लोड बैलेंसर्स और सर्वरों में कुछ HTTP/2 कार्यान्वयनों को प्रभावित करते हैं। इसलिए, सत्यापन में यह विचार करना चाहिए कि विश्लेषित वातावरण में कौन सा घटक HTTP/2 पर बातचीत और प्रसंस्करण कर रहा है।
उदाहरण के तौर पर, इसमें शामिल हो सकने वाले घटक:
nginx
Apache HTTP Server
Envoy
HAProxy
Tomcat
Jetty
Node.js
Go net/http2
nghttp2
CDN
WAF
Load Balancer
Ingress Controller Kubernetes
पहली तकनीकी शर्त यह पुष्टि करना है कि सेवा ALPN के माध्यम से HTTP/2 पर बातचीत करती है या नहीं। यदि सेवा h2 पर बातचीत नहीं करती, तो ये स्क्रिप्ट लागू नहीं होती हैं।
संस्करण के अनुसार कमजोरी की पुष्टि पहचाने गए घटक के निर्माता के आधिकारिक एडवाइजरी के आधार पर की जानी चाहिए।
स्क्रिप्ट चलाने से पहले, जाँचें कि लक्ष्य ALPN के माध्यम से HTTP/2 पर बातचीत करता है या नहीं।
कमांड में केवल डोमेन का उपयोग करें, https:// के बिना।
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"
प्लेसहोल्डर के साथ भी उपयोग किया जा सकता है:
openssl s_client -alpn h2 -connect <HOST>:443 </dev/null 2>/dev/null | grep -i "ALPN"
अपेक्षित आउटपुट:
ALPN protocol: h2
यदि आउटपुट h2 इंगित करता है, तो सेवा HTTP/2 पर बातचीत करती है और स्क्रिप्ट लागू हो सकती हैं।
यदि कोई आउटपुट नहीं है या http/1.1 जैसा कोई अन्य प्रोटोकॉल बातचीत करता है, तो उस एंडपॉइंट के लिए स्क्रिप्ट लागू नहीं हैं।
| स्क्रिप्ट | संबंधित CVE | उद्देश्य | कब उपयोग करें |
|---|---|---|---|
data_dribble_probe.py | CVE-2019-9511 | Data Dribble से संबंधित व्यवहार का सत्यापन, छोटे डेटा ब्लॉक जारी करने के लिए विंडो नियंत्रण का उपयोग करके | जब सर्वर HTTP/2 का समर्थन करता है और कम विंडो के साथ DATA फ्रेम वितरण व्यवहार की जाँच करने की आवश्यकता हो। |
priority_churn_probe.py | CVE-2019-9513 | Priority Churn से संबंधित व्यवहार का सत्यापन, कम तीव्रता पर PRIORITY फ्रेम का उपयोग करके | जब सर्वर HTTP/2 का समर्थन करता है और यह जाँचने की आवश्यकता हो कि वह स्ट्रीम प्राथमिकता में बदलाव संसाधित करता है या नहीं। |
स्क्रिप्ट के उपयोग का सबसे तार्किक क्रम है:
1. openssl के साथ HTTP/2 पूर्व-सत्यापन
↓
2. priority_churn_probe.py
↓
3. data_dribble_probe.py
पहले, openssl कमांड का उपयोग करके पुष्टि करें कि लक्ष्य HTTP/2 पर बातचीत करता है। फिर, priority_churn_probe.py का उपयोग करके यह सत्यापित करें कि सर्वर प्राथमिकता फ्रेम स्वीकार करता है और संसाधित करता है। उसके बाद, data_dribble_probe.py का उपयोग करके कम प्रवाह विंडो के साथ सर्वर के व्यवहार का निरीक्षण करें, नियंत्रित तरीके से छोटे डेटा वॉल्यूम जारी करते हुए।
दोनों स्क्रिप्ट हल्की जांच हैं। उनका उद्देश्य अनुपलब्धता पैदा करना नहीं है, बल्कि देखे गए व्यवहार का तकनीकी प्रमाण उत्पन्न करना है।
priority_churn_probe.py CVE-2019-9513, जिसे HTTP/2 Priority Churn के नाम से जाना जाता है, से संबंधित व्यवहार के सत्यापन के लिए एक हल्का PoC है।
स्क्रिप्ट TLS के माध्यम से HTTP/2 कनेक्शन स्थापित करती है, छोटे HTTP स्ट्रीम खोलती है और PRIORITY फ्रेम के माध्यम से प्राथमिकता में बदलाव भेजती है। फिर, यह इन फ्रेमों को भेजने से पहले और बाद में विलंबता मापती है ताकि यह देखा जा सके कि प्रसंस्करण में कोई भिन्नता है या नहीं।
PING का उपयोग करके प्रारंभिक विलंबता मापती है;PRIORITY फ्रेम भेजती है;इस स्क्रिप्ट का उपयोग तब करें जब यह सत्यापित करना आवश्यक हो कि कोई HTTP/2 सर्वर Priority Churn वेक्टर से संबंधित प्राथमिकता फ्रेम स्वीकार करता है और संसाधित करता है, बिना आक्रामक DoS परीक्षण किए।
यह नियंत्रित सत्यापन, पेंटेस्ट में HTTP/2 एक्सपोज़र विश्लेषण और कमजोर या संभावित संवेदनशील व्यवहार के तकनीकी प्रमाण के लिए संकेतित है।
स्क्रिप्ट कमांड लाइन आर्गुमेंट के माध्यम से मान प्राप्त करती है:
--host
--port
--paths
--shuffles
| पैरामीटर | विवरण |
|---|---|
--host | अधिकृत लक्ष्य का FQDN। https:// शामिल न करें। |
--port | TLS पोर्ट जहाँ HTTP/2 सेवा उपलब्ध है। डिफ़ॉल्ट: 443। |
--paths | HTTP/2 स्ट्रीम खोलने के लिए सरल पथों की सूची। |
--shuffles | प्राथमिकता बदलाव के चक्रों की संख्या। सुरक्षित परीक्षण के लिए कम रखें। |
हल्के, सार्वजनिक और कम प्रभाव वाले पथ का उपयोग करें, जैसे:
/
/robots.txt
/favicon.ico
/health
/login
उन पथों से बचें जो भारी संचालन, जटिल क्वेरी, रिपोर्ट जनरेशन, अपलोड, उन्नत खोज, या बैकएंड पर लोड उत्पन्न करने वाली किसी भी कार्यक्षमता को निष्पादित करते हैं।
python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10
आउटपुट का उदाहरण:
[OK] PING से पहले: 45.20 ms; churn के बाद: 52.80 ms; shuffles=10
सिग्नल 9513: PRIORITY फ्रेम स्वीकार किए और संसाधित किए गए; churn के बाद सूक्ष्म वृद्धि वेक्टर को दर्शाती है (DoS के बिना)।
यदि स्क्रिप्ट HTTP/2 पर बातचीत करने, स्ट्रीम खोलने और PRIORITY फ्रेम भेजने में सफल होती है, तो यह इंगित करता है कि सर्वर इस प्रकार के व्यवहार को संसाधित करता है।
churn के बाद विलंबता में सूक्ष्म वृद्धि का उपयोग वेक्टर के अस्तित्व के तकनीकी प्रमाण के रूप में किया जा सकता है, लेकिन इसे अकेले गंभीर प्रभाव के प्रमाण के रूप में नहीं माना जाना चाहिए। अंतिम वर्गीकरण संदर्भ, सर्वर संस्करण, आर्किटेक्चर, शमनकर्ताओं, WAF/CDN और HTTP/2 कॉन्फ़िगरेशन पर निर्भर करता है।
data_dribble_probe.py CVE-2019-9511, जिसे HTTP/2 Data Dribble के नाम से जाना जाता है, से संबंधित व्यवहार के सत्यापन के लिए एक हल्का PoC है।
स्क्रिप्ट TLS के माध्यम से HTTP/2 कनेक्शन स्थापित करती है, एक एकल स्ट्रीम खोलती है और डेटा के छोटे वॉल्यूम जारी करने के लिए प्रवाह नियंत्रण विंडो में हेरफेर करती है, DATA फ्रेम के क्रमिक वितरण व्यवहार का अनुकरण करते हुए।
इस स्क्रिप्ट का उपयोग तब करें जब यह सत्यापित करना आवश्यक हो कि HTTP/2 सर्वर Data Dribble वेक्टर से संबंधित कम प्रवाह नियंत्रण पैटर्न पर प्रतिक्रिया करता है या नहीं, बिना आक्रामक लोड किए।
यह नियंत्रित तकनीकी प्रमाण के लिए संकेतित है, विशेष रूप से जब स्वचालित उपकरण संभावित एक्सपोज़र इंगित करते हैं और मैन्युअल रूप से कम परिचालन जोखिम के साथ सत्यापित करना आवश्यक हो।
स्क्रिप्ट कमांड लाइन आर्गुमेंट के माध्यम से मान प्राप्त करती है:
--host
--path
--port
--bytes
| पैरामीटर | विवरण |
|---|---|
--host | अधिकृत लक्ष्य का FQDN। https:// शामिल न करें। |
--path | परीक्षण में अनुरोधित किया जाने वाला पथ। |
--port | TLS पोर्ट जहाँ HTTP/2 सेवा उपलब्ध है। डिफ़ॉल्ट: 443। |
--bytes | परीक्षण के दौरान जारी किए गए कुल बाइट्स। सुरक्षित सत्यापन के लिए कम रखें। |
सर्वर के लिए एक सरल, स्थिर या कम लागत वाले पथ का उपयोग करें, जैसे:
/
/robots.txt
/favicon.ico
/health
/login
उन एंडपॉइंट से बचें जो डेटाबेस क्वेरी, भारी प्रमाणीकरण, अतुल्यकालिक प्रसंस्करण, दस्तावेज़ निर्माण, या आंतरिक सिस्टम कॉल करते हैं।
python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12
आउटपुट का उदाहरण:
[OK] HTTP/2 पर बातचीत हुई; प्राप्त DATA फ्रेम: 12; जारी किए गए बाइट्स: 12; समय(ms): 1450
सिग्नल 9511: विंडो=1 के तहत एकाधिक छोटे DATA वितरित किए गए (बिना दबाव के 'dribble' पथ का प्रमाण)।
यदि स्क्रिप्ट HTTP/2 पर बातचीत करती है और प्रवाह विंडो जारी होने पर छोटे DATA फ्रेम प्राप्त करती है, तो यह इंगित करता है कि सर्वर इस प्रवाह नियंत्रण पैटर्न को संसाधित करता है।
इस व्यवहार का उपयोग वेक्टर के तकनीकी प्रमाण के रूप में किया जा सकता है, लेकिन गंभीरता को वातावरण के वास्तविक संदर्भ पर विचार करना चाहिए, जैसे उपयोग किया गया सर्वर, संस्करण, कनेक्शन सीमाएँ, बैलेंसर, CDN, WAF, टाइमआउट और दुरुपयोग से सुरक्षा।
स्क्रिप्ट के लिए Python 3 और h2 लाइब्रेरी की आवश्यकता है।
python3
pip
h2
ssl
socket
argparse
ssl, socket, time, argparse और select लाइब्रेरीज़ Python की मानक लाइब्रेरी का हिस्सा हैं।
मुख्य बाहरी निर्भरता है:
h2
सीधी स्थापना:
python3 -m pip install h2
वर्चुअल एनवायरनमेंट का उपयोग करके स्थापना:
python3 -m venv venv
source venv/bin/activate
pip install h2
स्थापना सत्यापित करें:
python3 -c "import h2; print('h2 सफलतापूर्वक स्थापित हुआ')"
स्क्रिप्ट ALPN के माध्यम से HTTP/2 पर बातचीत पर निर्भर करती हैं।
निष्पादन से पहले, पुष्टि करें कि सर्वर HTTP/2 का समर्थन करता है:
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"
अपेक्षित आउटपुट:
ALPN protocol: h2
यदि सर्वर h2 पर बातचीत नहीं करता, तो स्क्रिप्ट लागू नहीं होंगी।
--host पैरामीटर में केवल FQDN का उपयोग करें--host पैरामीटर में https:// शामिल न करें।
सही:
--host exemplo.com.br
गलत:
--host https://exemplo.com.br
सरल पथ पसंद करें:
/
/robots.txt
/favicon.ico
/health
संवेदनशील या भारी एंडपॉइंट से बचें:
/relatorios
/export
/search
/upload
/api/processamento
उद्देश्य HTTP/2 व्यवहार को सत्यापित करना है, बैकएंड पर दबाव डालना नहीं।
रूढ़िवादी मानों का उपयोग करें:
priority_churn_probe.py के लिए:
--shuffles 10
data_dribble_probe.py के लिए:
--bytes 12
स्पष्ट अनुमति के बिना उत्पादन वातावरण में इन मानों को न बढ़ाएँ।
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"
python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10
python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12
HTTP/2 DoS हमलों से जुड़े जोखिमों को कम करने के लिए, वेब सर्वर, प्रॉक्सीज़, बैलेंसर्स और HTTP/2 लाइब्रेरियों को अद्यतित रखने, कनेक्शन सीमाएँ लागू करने, उपयुक्त टाइमआउट कॉन्फ़िगर करने, एक साथ स्ट्रीम की संख्या सीमित करने, HTTP/2 फ्रेम के दुरुपयोग को प्रतिबंधित करने, विलंबता विसंगतियों की निगरानी करने और उन सेवाओं में HTTP/2 को अक्षम करने का मूल्यांकन करने की अनुशंसा की जाती है जिन्हें इस प्रोटोकॉल की आवश्यकता नहीं है।
CDN, WAF, रिवर्स प्रॉक्सी, इंग्रेस कंट्रोलर और लोड बैलेंसर जैसी परतों में सुरक्षा को सत्यापित करने की भी सिफारिश की जाती है, क्योंकि अक्सर वास्तविक एक्सपोज़र अंतिम अनुप्रयोग की तुलना में एज पर अधिक निर्भर करता है।
सुधार की पुष्टि उस घटक के आधार पर की जानी चाहिए जो वास्तव में वातावरण में HTTP/2 को समाप्त और संसाधित करता है, जैसे वेब सर्वर, प्रॉक्सी, बैलेंसर, CDN या इंग्रेस कंट्रोलर।
इन स्क्रिप्ट का उपयोग केवल अधिकृत वातावरणों में किया जाना चाहिए।
यद्यपि ये हल्के निष्पादन के लिए लिखी गई हैं, ये सीधे DoS वैक्टर से संबंधित HTTP/2 तंत्रों के साथ इंटरैक्ट करती हैं। इसलिए, उपयोग परीक्षण के औपचारिक दायरे, सगाई के नियमों और वातावरण के जिम्मेदार व्यक्ति के साथ परिभाषित परिचालन सीमाओं के अनुरूप होना चाहिए।
उत्पादन में निष्पादित करने से पहले, पुष्टि करें:
बिना अनुमति के सिस्टम के विरुद्ध इन स्क्रिप्ट का उपयोग निषिद्ध है।
इस रिपॉजिटरी का उद्देश्य विशेष रूप से वैध सुरक्षा गतिविधियों का समर्थन करना है, जैसे अधिकृत पेंटेस्ट, कमजोरियों का नियंत्रित सत्यापन, प्रयोगशाला, तकनीकी अध्ययन और जोखिम का सुरक्षित प्रदर्शन।