
إثبات مفهوم لاستغلال CVE-2026-23918 (ثغرة double-free في Apache mod_http2). يتضمن أوضاعًا متعددة لرفض الخدمة (DoS) (Rapid-RST، Slow-Drip) وكشفًا سلبيًا لثغرات RCE/الضعف في Apache 2.4.66.
هذا هو استغلال إثبات المفهوم لثغرة التحرير المزدوج في وحدة mod_http2 الخاصة بـ Apache (CVE-2026-23918). إنها ثغرة خبيثة تصيب مسار تنظيف الدفق h2_mplx.c.
ببساطة، إذا قمت بتوقيت الهجوم بشكل صحيح، يمكنك جعل الخادم يحاول تنظيف نفس الدفق مرتين، مما يؤدي عادةً إلى SIGSEGV وانهيار العامل (worker).

لا تكن غبيًا. استخدم هذا للاختبار المصرح به فقط. إذا استخدمته على شيء لا تملكه، فأنت وحدك المسؤول. لست مسؤولًا عن ما تفعله به.
تؤثر CVE-2026-23918 على Apache 2.4.66. تم إصلاحها في الإصدار 2.4.67 في وقت سابق من هذا الشهر (مايو 2026).
إنها حالة سباق (race condition) في كيفية تعامل Apache مع إطارات RST_STREAM المبكرة. إذا أرسل العميل إطار HEADERS وتبعه فورًا بإطار RST_STREAM قبل أن يسجل المعالج المتعدد (multiplexer) الدفق، تحاول وظيفتا رد اتصال (callback) مختلفتان التنظيف.
تتعامل إحدى الوظيفتين مع إعادة التعيين، بينما تتعامل الأخرى مع إغلاق الدفق. كلتاهما تستدعيان m_stream_cleanup()، مما يدفع نفس المؤشر إلى مصفوفة التنظيف. عندما يحاول Apache في النهاية تدمير تلك الدفقات، يصل المحاولة الثانية إلى ذاكرة تم تحريرها بالفعل.
DoS (رفض الخدمة): سهل للغاية. اتصال واحد يمكنه إسقاط العمال. نظرًا لأن Apache يعيد تشغيلهم، يمكنك إبقاء الخادم تحت ضغط مستمر مع القليل جدًا من النطاق الترددي. هذا ما يوضحه هذا الاستغلال - وقد تم اختباره وتأكيد عمله على Apache 2.4.66.
RCE (تنفيذ التعليمات البرمجية عن بُعد): ممكن نظريًا لكنه غير عملي لمعظم المهاجمين. يتطلب:
mmap، الافتراضي على Debian/Ubuntu/Docker)لا يوجد استغلال RCE عام متاح، وبناء واحد هو جهد هندسي غير بسيط. التأثير الواقعي لمعظم المؤسسات هو DoS موثوق، وليس RCE.

ستحتاج إلى Python 3.9+ ومكتبة h2.
git clone https://github.com/xeloxa/CVE-2026-23918-Apache-H2-PoC.git
cd CVE-2026-23918-Apache-H2-PoC
pip install -r requirements.txt
إسقاط مختبر محلي:
# DoS عدواني
python3 cve-2026-23918.py --target 127.0.0.1 --port 8443 --mode dos
التحقق مما إذا كان الهدف قد يكون عرضة للثغرة:
# هذا سلبي، يتحقق فقط من الترويسات ودعم H2
python3 cve-2026-23918.py --target example.com --mode rce-detect
ضغط مستمر:
# نطاق ترددي منخفض، مدة طويلة
python3 cve-2026-23918.py --target 10.0.0.50 --mode slow-drip -d 60
إذا كنت تشغل الإصدار 2.4.66، فأنت بحاجة إلى الانتقال إلى 2.4.67.
إذا لم تتمكن من التحديث الآن، يمكنك تعطيل HTTP/2 بإضافة Protocols http/1.1 إلى إعداداتك (أو ببساطة إزالة h2 من القائمة). ليس مثاليًا للأداء، لكنه يوقف الانهيار.
لقد اختبرت هذا على عدة إصدارات مختلفة من Debian و Ubuntu. هجوم DoS موثوق جدًا. أما RCE فهو أكثر "حساسية" ولن أعتمد عليه في سيناريو واقعي ما لم يكن لدى الهدف حالة كومة (heap) يمكن التنبؤ بها بشكل كبير.