تم الكشف عن ثغرتين أمنيتين في غاية الخطورة من نوع "تنفيذ البرمجيات الخبيثة عن بُعد" (RCE)—أُطلق عليهما اسم "php2shell"—وتم إصدار تحديثات أمنية لمعالجتهما عبر جميع إصدارات PHP النشطة. مع تقييم خطورة يصل إلى CVSS 9.2، تتيح هذه الثغرات للمخترقين السيطرة على الخوادم قبل تنفيذ أي كود برمجي للتطبيقات.
نظراً لأن لغة PHP تشغّل أكثر من 70% من خوادم الويب عالمياً (بما في ذلك منصات WordPress وLaravel وDrupal)، فإن تطبيق التحديثات الأمنية فوراً يُعد أمراً حاسماً.
التحليل التقني: أصل المشكلة
تغطي النشرات الأمنية آليتين لتلف الذاكرة داخل محرك PHP:
1. الثغرة الأولية (CVE-2026-109618): خلل معالجة نفاد الذاكرة (OOM)
آلية الخلل: عندما يتجاوز الطلب حد الذاكرة المخصص
memory_limit، يقوم محرك PHP بإيقاف التنفيذ بشكل قسري باستخدامlongjmp().وجه الضعف: إذا حدث هذا الإيقاف أثناء تهيئة هياكل بيانات الطلب (مثل معالجة رفع الملفات)، يُحاول معالج التنظيف تحرير مؤشرات memory pointers غير مهيأة بعد.
التأثير: يمكن للمخترق إرسال طلبات HTTP مصممة لتجاوز حد الذاكرة عمداً للعبث بذاكرة الـ Heap وتنفيذ أوامر عن بُعد.
2. الثغرة الثانية (CVE-2026-109619): بقاء حالة الذاكرة بين عمليات Workers
آلية الخلل: في بيئات إعادة استخدام العمليات (مثل PHP-FPM وApache
mod_phpوFrankenPHP)، تخدم عمليات Worker طلبات متتالية دون إعادة تشغيل المحرك.وجه الضعف: عند حدوث خطأ قاتل، تظل بعض حالات الذاكرة محفوظة حتى بعد تحرير النطاق الرئيسي.
التأثير: يستطيع الطلب التالي على نفس الـ Worker الوصول إلى بيانات الذاكرة المتبقية والتي تم التأثير عليها من قِبل المهاجم.
الإصدارات التأثرة وحالة الدعم
فرع PHPالإصدارات المصابةالإصدار الآمنالحالة PHP 8.5أقل من 8.5.128.5.12فرع نشط PHP 8.4أقل من 8.4.278.4.27فرع نشط PHP 8.3أقل من 8.3.368.3.36فرع نشط PHP 8.2أقل من 8.2.358.2.35فرع نشط PHP 8.1 وما قبلهاجميع الإصداراتلا يوجد تحديثمنتهية الدعم (EOL)
تنبيه هام للأنظمة القديمة: لن توفر مجتمعات PHP تحديثات للإصدارات غير المدعومة مثل PHP 8.1 أو 7.4 أو 5.6. يجب ترقية الخوادم إلى PHP 8.2 أو أحدث فوراً.
خطة المعالجة السريعة
1. تحديث حزم النظام
قم بتحديث ثنائيات PHP عبر مدير الحزم الخاص بنظام التشغيل:
# Ubuntu / Debian
sudo apt update && sudo apt upgrade php-fpm php-cli
# RHEL / AlmaLinux / Rocky Linux
sudo dnf update php php-fpm
# للتحقق
php -v
2. حلول مؤقتة (عند تعذر التحديث الفوري)
تعطيل خاصية تتبع رفع الملفات في الجلسة: في ملف
php.ini:session.upload_progress.enabled = 0تقييد أحجام الطلبات: خفّض قيم
post_max_sizeوضَع قيوداً على مستوى خوادم Nginx أو Apache.إعادة تشغيل الخدمات: نفّذ
sudo systemctl restart php-fpm.

