
مسابير HTTP/2 خفيفة الوزن للتحقق المتحكم فيه من ناقلات DoS الخاصة بـ CVE-2019-9511 (Data Dribble) وCVE-2019-9513 (Priority Churn) في بيئات مصرح بها.
مستودع يحتوي على نصوص برمجية للتحقق المُتحكَّم فيه من السلوكيات المرتبطة بالثغرتين 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 بايت. اعتمادًا على التطبيق، قد يتسبب هذا السلوك في استهلاك مفرط لوحدة المعالجة المركزية أو الذاكرة أو موارد الاتصال، مما يؤدي إلى خطر رفض الخدمة.
في هذا المستودع، النص البرمجي المرتبط هو:
data_dribble_probe.py
الهدف من النص البرمجي هو التحقق من السلوك بطريقة خفيفة، دون توليد حمولة عدوانية ودون محاولة التسبب في تعطيل الخدمة.
المراجع:
تؤثر الثغرة CVE-2019-9513، المعروفة باسم HTTP/2 Priority Churn أو Resource Loop، على بعض تطبيقات HTTP/2 التي تعالج التغييرات المستمرة في شجرة أولويات التدفقات بطريقة مكلفة.
في هذا السيناريو، يمكن للمهاجم إنشاء تدفقات متعددة وتغيير الأولوية بينها بشكل متكرر، مما يسبب تقلبًا في شجرة الأولويات. اعتمادًا على التطبيق، قد يتسبب هذا السلوك في استهلاك مفرط لوحدة المعالجة المركزية ويؤدي إلى رفض الخدمة.
في هذا المستودع، النص البرمجي المرتبط هو:
priority_churn_probe.py
الهدف من النص البرمجي هو التحقق من قبول الخادم ومعالجته لإطارات PRIORITY، باستخدام كثافة منخفضة ودون تنفيذ هجوم DoS.
المراجع:
لا ترتبط الثغرتان 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
المعيار الفني الأول هو تأكيد ما إذا كانت الخدمة تتفاوض على HTTP/2 عبر ALPN. إذا لم تتفاوض الخدمة على h2، فإن هذه النصوص البرمجية غير قابلة للتطبيق.
يجب تأكيد الثغرة حسب الإصدار استنادًا إلى النشرة الأمنية الرسمية الصادرة عن الشركة المصنِّعة للمكوّن المحدد.
قبل تنفيذ النصوص البرمجية، تحقق مما إذا كان الهدف يتفاوض على HTTP/2 عبر ALPN.
استخدم النطاق فقط في الأمر، دون https://.
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"
يمكن أيضًا استخدامه مع placeholder:
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، فإن النصوص البرمجية غير قابلة للتطبيق على ذلك الـ endpoint.
| النص البرمجي | 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. Pré-validação HTTP/2 com openssl
↓
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 هو إثبات مفهوم خفيف (PoC) للتحقق من السلوك المرتبط بالثغرة CVE-2019-9513، المعروفة باسم HTTP/2 Priority Churn.
ينشئ النص البرمجي اتصال HTTP/2 عبر TLS، ويفتح تدفقات HTTP صغيرة ويرسل تغييرات الأولوية عبر إطارات PRIORITY. ثم يقيس زمن الاستجابة قبل وبعد إرسال هذه الإطارات لملاحظة ما إذا كان هناك تباين في المعالجة.
PING؛PRIORITY بكثافة منخفضة؛استخدم هذا النص البرمجي عندما تكون هناك حاجة للتحقق مما إذا كان خادم HTTP/2 يقبل ويعالج إطارات الأولوية المرتبطة بناقل Priority Churn، دون تنفيذ اختبار DoS عدواني.
وهو مناسب للتحقق المُتحكَّم فيه في اختبارات الاختراق (pentests)، وتحليل التعرض HTTP/2، والإثبات الفني لسلوك ثغري أو حساس محتمل.
يستقبل النص البرمجي القيم عبر وسائط سطر الأوامر:
--host
--port
--paths
--shuffles
| المعامل | الوصف |
|---|---|
--host | الاسم المؤهل بالكامل (FQDN) للهدف المُصرَّح به. لا تُدرج https://. |
--port | منفذ TLS حيث تتوفر خدمة HTTP/2. الافتراضي: 443. |
--paths | قائمة بمسارات بسيطة لفتح تدفقات HTTP/2. |
--shuffles | عدد دورات تغيير الأولوية. أبقِه منخفضًا لاختبار آمن. |
استخدم مسارات خفيفة وعامة ومنخفضة التأثير، مثل:
/
/robots.txt
/favicon.ico
/health
/login
تجنب المسارات التي تنفذ عمليات ثقيلة أو استعلامات معقدة أو توليد تقارير أو رفع ملفات أو بحثًا متقدمًا أو أي وظيفة تولّد حمولة على الواجهة الخلفية (backend).
python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10
مثال على الخرج:
[OK] PING antes: 45.20 ms; após churn: 52.80 ms; shuffles=10
Sinal 9513: PRIORITY frames aceitos e processados; aumento sutil pós-churn evidencia o vetor (sem DoS).
إذا نجح النص البرمجي في التفاوض على HTTP/2 وفتح التدفقات وإرسال إطارات PRIORITY، فهذا يشير إلى أن الخادم يعالج هذا النوع من السلوك.
يمكن استخدام الزيادة الطفيفة في زمن الاستجابة بعد التقلب كدليل فني على أن الناقل موجود، لكن لا ينبغي تفسيرها وحدها كدليل على تأثير شديد. يعتمد التصنيف النهائي على السياق وإصدار الخادم والبنية وعوامل التخفيف وWAF/CDN وتكوين HTTP/2.