كشفت الأبحاث المنشورة حول ثغرة CVE-2026-109618 أن الخلل يبدأ عند إرسال طلب HTTP POST مصمم بعناية يؤدي إلى استهلاك حد الذاكرة المسموح به (memory_limit) في لحظة حرجة أثناء بناء مصفوفة $_POST داخل محرك Zend.
كيف يحدث تلف الذاكرة عند مقاطعة عملية الإدراج في جداول التجزئة؟
عندما يستقبل مفسر PHP بيانات النماذج، فإنه يزيد عداد العناصر داخل جدول التجزئة (Hash Table) قبل تخصيص الذاكرة الفعلية لمفتاح الحقل الجديد؛ فإذا فشل التخصيص بسبب نفاد الذاكرة، يتوقف التنفيذ وتبقى خانة غير مهيأة تحتوي على بايتات سابقة يتحكم بها المهاجم.
مراحل الهجوم الثلاث في استغلال CVE-2026-109618
- تهيئة الكومة (Heap Grooming): إرسال حقل بدون اسم يحتوي على بيانات ثنائية بحجم محسوب بدقة ليتم تحريره لاحقاً.
- مقاطعة الإدراج: تمرير اسم حقل ضخم يتجاوز 3.5 ميجابايت لإجبار المحرك على إطلاق خطأ نفاد الذاكرة.
- تحويل التنظيف إلى تنفيذ أوامر: استغلال دالة الهدم (Destructor Callback) لاستدعاء دالة system() أثناء إغلاق الطلب.
أخطر ما في هذا الهجوم أنه ينجح حتى لو كانت صفحة PHP المستهدفة فارغة تماماً أو محمية بنظام تسجيل دخول صارم.
لماذا غيرت ترقيعات أكتوبر 2026 طريقة تعامل PHP مع أخطاء الذاكرة؟
عالج مطورو النواة هذه المشكلة عبر إدخال مفهوم الحد المرن (Soft Limit) الذي يؤجل إطلاق خطأ نفاد الذاكرة حتى تكتمل تهيئة الهياكل الداخلية بأمان، مع فرض إنهاء فوري للعملية عبر _exit(137) إذا تجاوز الاستهلاك الحد الصلب.
كيفية فحص السجلات لاكتشاف محاولات الاستغلال المبكرة
ينبغي لفرق الأمن السيبراني البحث في سجلات الأخطاء عن رسائل Allowed memory size exhausted in Unknown on line 0 المتزامنة مع طلبات POST كبيرة الحجم أو ظهور عمليات صدفية (Shell Processes) منبثقة عن خادم Apache أو PHP-FPM. ويمكن مراجعة التفاصيل الموثقة عبر التحليل التقني من مختبرات Datadog Security Labs.
التعليقات (0)
أضف تعليقك