CVE-2026-24765 in phpunit
الملخص
بحسب VulDB • 14/06/2026
يُعد PHPUnit إطار عمل لاختبار تطبيقات PHP. تم اكتشاف ثغرة في الإصدارات السابقة من 12.5.8، و11.5.50، و10.5.62، و9.6.33، و8.5.52 تتعلق بالتفريغ غير الآمن (unsafe deserialization) لبيانات تغطية الكود أثناء تنفيذ اختبارات PHPT. توجد الثغرة في الدالة `cleanupForCoverage()`، التي تقوم بتفريغ ملفات تغطية الكود دون التحقق من صحتها، مما قد يسمح بتنفيذ كود عن بُعد إذا كانت هناك ملفات `.coverage` خبيثة موجودة مسبقاً قبل تشغيل اختبار PHPT. تحدث الثغرة عند تفريغ ملف `.coverage` الذي يفترض ألا يكون موجوداً قبل تنفيذ الاختبار، وذلك بدون تقييد معلمة `allowed_classes`. يمكن لمهاجم لديه صلاحية الكتابة على الملفات محلياً وضع كائن مُسلسل خبيث يحتوي على دالة `__wakeup()` في نظام الملفات، مما يؤدي إلى تنفيذ الكود بشكل تعسفي أثناء تشغيل الاختبارات مع تفعيل أدوات قياس التغطية. تتطلب هذه الثغرة وصولاً للكتابة على الملفات محلياً في الموقع الذي يخزن PHPUnit فيه أو يتوقع وجود ملفات تغطية الكود لاختبارات PHPT. يمكن أن يحدث هذا من خلال هجمات خطوط الأنابيب CI/CD، بيئة التطوير المحلية، و/أو المكتبات المعتمدة المخترقة. بدلاً من مجرد تنقية المدخلات بصمت عبر `['allowed_classes' => false]`، اختار المشرف جعل الحالة الشاذة ظاهرة صراحةً عن طريق اعتبار ملفات `.coverage` الموجودة مسبقاً لاختبارات PHPT كشرط خطأ. بدءاً من الإصدارات 12.5.8، و11.5.50، و10.5.62، و9.6.33، عندما يتم اكتشاف ملف `.coverage` لاختبار PHRT قبل التنفيذ، سيصدر PHPUnit رسالة خطأ واضحة تحدد الحالة الشاذة. يمكن للمنظمات تقليل الخطر الفعلي لهذه الثغرة من خلال تكوين CI/CD المناسب، بما في ذلك استخدام مشغلين مؤقتين (ephemeral runners)، وإنفاذ مراجعة الكود، وحماية الفروع، وعزل العناصر الناتجة (artifacts)، والتحكم في الوصول.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.