Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-59941 — Dompdf: رفض الخدمة (DoS) عبر استنزاف الموارد باستخدام صور Bitmap كبيرة الحجم | Kitploit
أدوات/GitHubGitHub/far00t01/cve-2026-59941
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubfar00t01/cve-2026-59941

CVE-2026-59941

Dompdf: رفض الخدمة (DoS) عبر استنزاف الموارد باستخدام صور Bitmap كبيرة الحجم

عرض المستودع
46منذ 2 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-59942: استنزاف موارد Dompdf (DoS) - إثبات المفهوم

  • نوع الثغرة: حجب الخدمة (DoS) عبر استنزاف الموارد
  • البرنامج المتأثر: Dompdf <= 3.1.5
  • الاعتمادات: Fabian Rosales (far00t01).

إخلاء المسؤولية

يُقدَّم هذا المستودع ومحتواه لأغراض تعليمية وبحثية فقط. المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر أو أنشطة غير قانونية تُجرى باستخدام المعلومات المقدمة هنا. احصل دائمًا على تصريح قبل اختبار البيئات المستهدفة.

الملخص

Dompdf v3.1.5 عرضة لهجوم حجب الخدمة (DoS) عبر استنزاف الموارد. يمكن للمهاجم إسقاط عملية PHP من خلال تقديم مستند HTML مصمم خصيصًا يحتوي على صورة واحدة بأبعاد ضخمة (مثل 30,000×30,000 بكسل).

على الرغم من أن Dompdf يطبّق فحوصات داخلية للتحقق من صحة أبعاد الصورة، إلا أنه يمكن تجاوزها باستخدام صورة عالية العشوائية (مثل ضوضاء عشوائية) مُرمَّزة بـ Base64 وملفوفة داخل حاويات CSS محددة.

تحليل تقني معمّق:

غالبًا ما يمكن تحسين الصور القياسية ذات اللون الواحد بواسطة خوارزميات الضغط أو محركات العرض. ومع ذلك، فإن صورة ضوضاء عالية العشوائية تُجبر محرك PHP على معالجة كل واحد من الـ 900 مليون بكسل على حدة. عند استدعاء render()، يحاول المحرك معالجة الصورة النقطية غير المضغوطة في الذاكرة وحساب التخطيط لكل نقطة بيانات بكسل عالية التباين. يؤدي ذلك إلى:

  • تشبّع المعالج بنسبة 100%: يتوقف خيط العرض (thread) إلى أجل غير مسمى محاولًا معالجة تدفق البكسلات.
  • إنهاء العملية: يؤدي تخصيص الذاكرة الضخم (تم التحقق منه عند ~1.2 غيغابايت لصورة واحدة) إلى إطلاق خطأ فادح (Fatal Error) أو إشارة SIGKILL على مستوى نظام التشغيل (OOM)، مما يؤدي إلى حجب الخدمة فورًا.

التفاصيل

توجد الثغرة لأن التحقق من الأبعاد يحدث مبكرًا، لكن تخصيص الموارد لحساب المربع المحيط بالكائن والمخازن المؤقتة الداخلية أثناء مرحلة العرض لا يحدّ بشكل صارم من وقت المعالج التراكمي أو استخدام الذاكرة لكائن واحد اجتاز الفحص الأولي.

نتائج إثبات المفهوم

https://github.com/user-attachments/assets/d1f5a07b-a7c5-4b5e-84b5-1e47e73522d9

  1. ثبّت Dompdf v3.1.5 عبر Composer.
composer require dompdf/dompdf:3.1.5
  1. استخدم سكربت Python التالي لتوليد الحمولة الخبيثة (exploit.py):
  2. استخدم سكربت Python التالي لمراقبة موارد النظام في طرفية منفصلة (monitor.py):
  3. أنشئ ملفًا باسم render.php. يعمل هذا السكربت كنقطة الدخول القابلة للاستغلال، محاكيًا تنفيذًا قياسيًا لمكتبة Dompdf:
  4. نفّذ عملية PHP، مع تمرير الحمولة عبر stdin. نستخدم حدًا للذاكرة قدره 2GB لإثبات أن الانهيار ناتج عن تخصيص غير مُتحكَّم فيه وليس عن إعداد خادم مقيِّد:
php -d memory_limit=2G render.php < payload.html
  1. تحاول محرّك المعالجة معالجة كل بكسل من الصورة عالية الإنتروبيا. سيسجّل السكربت monitor.py تشبّعًا في المعالج بنسبة 99.8%، يتبعه خطأ PHP Fatal Error (تم استنفاد حجم الذاكرة المسموح) بينما يحاول Dompdf تخصيص ~1.2 GB في عملية واحدة. بعد ذلك يتم إنهاء العملية، مما يؤكد حصول حجب الخدمة (Denial of Service).

توضّح السجلات التالية الاستغلال الناجح لثغرة استنفاد الموارد. على الرغم من حدّ الذاكرة السخي البالغ 2GB الممنوح لعملية PHP، فإن صورة واحدة عالية الإنتروبيا تسبب انهيارًا قاتلًا.

توليد الحمولة (Payload Generation):

python3 exploit.py 
[*] Generating 30000x30000 High-Entropy Noise Bomb...
[+] High-entropy payload saved to: payload.html

استهداف التنفيذ وحجب الخدمة:

php -d memory_limit=2G render.php < payload.html
Output
[*] Starting Dompdf rendering process...
PHP Fatal error:  Allowed memory size of 2147483648 bytes exhausted (tried to allocate 1200355712 bytes) in /home/far00t/dompdf_exploit/vendor/dompdf/dompdf/src/Dompdf.php on line 490

أثناء تنفيذ عملية render.php، التقط السكربت monitor.py القياسات التالية، والتي تُظهر التأثير على موارد النظام:

python3 monitor.py 
[*] Searching for PHP processes... (Press Ctrl+C to stop)
[MONITOR] PID: 210767 | RAM: 953.17 MB | CPU: 99.7%

النتائج الرئيسية من القياس عن بُعد:

  • استنزاف المعالج: وصلت العملية إلى استخدام معالج مستمر بنسبة 99.7%. في بيئة إنتاج، فإن هذا المستوى من التشبع في عملية PHP أحادية الخيط يحرم فعليًا أي مهمة أخرى على ذلك النواة من الخدمة.
  • تضخم سريع في الذاكرة: ارتفعت الذاكرة المقيمة (RSS) إلى 953.17 ميغابايت قبل أن يحاول المحرك التخصيص النهائي البالغ 1.2 غيغابايت والذي أثار الخطأ القاتل.
  • تأكيد التجاوز: تُثبت القياسات عن بُعد أن الحدود "الآمنة" الداخلية في Dompdf قد تم تجاوزها، حيث مضى المحرك في محاولة فك ضغط صورة نقطية ضخمة لم تستطع بيئة الاستضافة تحمّلها.

التأثير

يمكن لمهاجم عن بُعد غير مصادَق عليه أن يتسبب في حرمان كامل من الخدمة على خادم الويب عبر إرسال سلسلة HTML مصممة خصيصًا. يؤثر هذا على أي تطبيق يسمح للمستخدمين بتقديم محتوى HTML أو عناوين URL يتم تحويلها لاحقًا إلى PDF باستخدام Dompdf.

المرجع

  • https://github.com/dompdf/dompdf/security/advisories/GHSA-f5gf-2cj8-52g2
  • https://www.cve.org/CVERecord?id=CVE-2026-59942
تنزيل الأداة