
PoC لـ CVE-2025-53020 - قصف HPACK ضد Apache HTTPD
إثبات مفهوم يوضح CVE-2025-53020، وهي ثغرة استنزاف ذاكرة في تنفيذ Apache httpd لبروتوكول HTTP/2 اكتشفتها في منتصف عام 2025.
📖 شرح متعمق: galbarnahum.com/posts/apache-httpd-cve-2025-53020
Apache httpd عرضة لهجوم حجب الخدمة عبر معالجة ترويسات HTTP/2. توجد الثغرة بسبب الازدواج غير الضروري في الذاكرة عند معالجة أسماء الترويسات المكررة في طلبات HTTP/2.
h2 - مكتبة بروتوكول HTTP/2tqdm - شريط تقدم لتصور الهجومpip install h2 tqdm
python poc.py --url https://target.example.com/
| الوسيط | الافتراضي | الوصف |
|---|---|---|
--url | مطلوب | عنوان الهدف (على سبيل المثال: https://example.com/path) |
--header-name-length | 4064 | طول اسم الترويسة (الحد الأقصى: 4064) |
--header-reps | 2063 | عدد تكرارات الترويسة لكل طلب (الحد الأقصى الموصى به: 2063) |
--requests-per-batch | 1 | عدد الطلبات في كل دفعة |
--batches | 100 | عدد الدفعات المراد إرسالها |
--delay | 0 | التأخير بين الدفعات بالثواني |
--num-headers-to-repeat | 1 | عدد أسماء الترويسات المختلفة التي سيتم إنشاؤها (يستخدم الأحرف a و b و c، إلخ.) |
هجوم قياسي ضد هدف HTTPS:
python poc.py --url https://target.com/api/endpoint
هجوم بإعدادات ترويسة مخصصة:
python poc.py --url http://localhost:8080/test --header-reps 1000 --batches 200
هجوم بأسماء ترويسات متعددة ومميزة:
python poc.py --url https://target.com --num-headers-to-repeat 3 --header-name-length 3000
هجوم أبطأ مع تأخير بين الدفعات:
python poc.py --url https://target.com --delay 0.5 --batches 500
يتضمن إثبات المفهوم تصحيحًا لمشفر HPACK في مكتبة h2 للتعامل بشكل صحيح مع قيم الترويسات الفارغة. يصلح هذا خطأً حيث كان المشفر يفهرس الترويسات ذات قيم السلاسل الفارغة بشكل غير صحيح (معاملة "" كقيمة falsy بدلاً من التحقق من None).
--num-headers-to-repeat > 1، يجب أن يكون طول اسم الترويسة أقل من 4000إصدارات Apache httpd المعرضة لثغرة CVE-2025-53020. راجع النشرات الأمنية الرسمية من Apache للحصول على معلومات الإصدارات المحددة والتصحيحات.
⚠️ هذه الأداة مقدمة لأغراض تعليمية واختبارات أمنية مصرح بها فقط.
هذا المشروع لأغراض البحث الأمني. استخدمه بمسؤولية وأخلاقية.