PHP2Shell هو الاسم العملي الذي أُطلق على ثغرتين في PHP يُقال إنهما بالغتا الخطورة، وهما CVE-2026-109618 وCVE-2026-109619، ويقول باحثون أمنيون إنه يمكن تفعيلهما عبر طلبات HTTP مُصمَّمة بعناية، ما يؤدي إلى تنفيذ تعليمات برمجية عن بُعد دون مصادقة. الأدلة المتاحة تحمل تاريخاً مستقبلياً، لذا يجب إعادة التحقق من أرقام الإصدارات وادعاءات الخطورة مقابل الإشعار الرسمي الصادر عن PHP ونشرة توزيعة لينكس لديك قبل التصرف بناءً عليها أو نشرها داخلياً.

ما لا شك فيه هو الواقع التشغيلي لمعظم الشركات الصغيرة والمتوسطة المغربية: لا تزال PHP تشغّل حصة كبيرة من المواقع ومتاجر التجارة الإلكترونية وبوابات العملاء والأدوات الداخلية التي تحافظ على تدفق الإيرادات، وكثير من هذه البيئات التشغيلية قديم وغير موثّق ومتاح مباشرة من الإنترنت. يقترح هذا الدليل تسلسلاً من أربع مراحل — الترقيع أو العزل، إعادة التشغيل، التحقق، التتبّع — يستطيع فريق تقنية معلومات من شخصين أو ثلاثة تنفيذه خلال نافذة صيانة واحدة.

النقاط الرئيسية

  • يشير PHP2Shell إلى الثغرتين CVE-2026-109618 وCVE-2026-109619، ويُقال إنهما مصنَّفتان بدرجة 9.2 وفق CVSS v4.0 وتؤثران على PHP 5.4 وما بعدها، مع أعلى مستوى تعرّض في عمليات نشر PHP-FPM وmod_php وCGI وFrankenPHP وLiteSpeed المتاحة على الإنترنت.
  • الإصدارات المُصلَحة المعلن عنها تغطي الفروع المدعومة فقط: PHP 8.5.12 و8.4.27 و8.3.36 و8.2.35. أما PHP 8.1 وما قبلها فلا يوجد لها إصدار رسمي محدَّد، وتتطلب العزل أو ترقيعات المورّد أو الترحيل.
  • الترقيع ليس نهاية الحادث. قد يكفي طلب POST بسيط لتفعيل الثغرتين، لذا افترض أن الاستغلال ممكن حتى تثبت السجلات وفحوص سلامة الملفات العكس.
  • تحقق من إصدار PHP الذي يستخدمه فعلياً حيّز الإنتاج، لا الإصدار الموجود في مستودعك أو على حاسوبك المحمول.
  • لأن المصادر تحمل تاريخاً مستقبلياً، تأكد من كل رقم إصدار مقابل إشعار أمن PHP الحالي ونشرة توزيعتك قبل تشغيله فعلياً.

ما الذي يغيّره PHP2Shell وفق ما يُقال للشركات المغربية

بحسب التقارير المتاحة، تؤثر الثغرتان على إصدارات PHP من 5.4 فصاعداً، مع أعلى مستوى تعرّض تشغيلي في عمليات نشر PHP-FPM وmod_php وCGI وFrankenPHP وLiteSpeed المتاحة على الإنترنت. وقد مُنحت كلتاهما درجة 9.2 وفق CVSS v4.0، رغم أن مواد مسرّبة سابقة قالت إن الدرجة القصوى بلغت 10. نشرت Cloudflare نظرة تقنية وإرشادات حماية عبر WAF، ووثّقت Check Point الجدول الزمني للإفصاح وتقييم الخطورة.

الإصدارات المُصلَحة المعلن عنها هي:

فرع PHPالإصدار المُصلَح المعلنالأثر التشغيلي
PHP 8.58.5.12الترقية فوراً
PHP 8.48.4.27الترقية فوراً
PHP 8.38.3.36الترقية فوراً
PHP 8.28.2.35الترقية فوراً
PHP 8.1 وما قبلهالا يوجد إصدار رسمي محدَّدالعزل أو ترقيعات المورّد أو الترحيل

تمنح سياسة دعم PHP نفسها دعماً كاملاً لفرع الإصدار لمدة سنتين بعد إطلاقه المستقر، تليها فترة إصلاحات أمنية. والفرع غير المدعوم ليس آمناً لمجرد أن التطبيق ما زال يعمل؛ فالإصدارات المُصلَحة المعلن عنها تخص الفروع المدعومة وحدها. وبالنسبة إلى PHP 8.1 وما قبلها، فالخيارات الواقعية هي ترقيع من نظام التشغيل أو من مورّد تجاري، أو إعادة البناء من الشيفرة المصدرية، أو الترحيل إلى فرع مدعوم. وقد نشرت Ubuntu نظرة خاصة بها عن الثغرة وتوافر الإصلاح، وهي المكان الصحيح للتأكد مما يمكن لخوادمك تثبيته فعلاً.

المرحلة 1: الترقيع أو العزل فوراً

  1. ابنِ جرداً. أحصِ كل خادم ويب ومضيف افتراضي وحاوية وموازن تحميل وحساب لوحة تحكم ومهمة مجدولة وتكامل SaaS خارجي يشغّل PHP. تأكد من بيئة التشغيل الفعلية عبر php -v وتعريفات خدمة PHP-FPM وبيانات صور الحاويات وإعدادات خادم الويب. وجود ملف composer.json لا يثبت أي ملف PHP ثنائي يخدم حيّز الإنتاج.
  2. أعطِ الأولوية للخدمات العامة. رقّع الأنظمة المتاحة على الإنترنت أولاً، وخصوصاً PHP-FPM وmod_php. أدرج بيئات الاختبار المتاحة علناً، والنطاقات الفرعية المنسية، وبوابات الإدارة، وتثبيتات ووردبريس، ومنصات التجارة الإلكترونية، وواجهات API. فالمهاجمون يبحثون عن إمكانية الوصول، لا عن الهياكل التنظيمية.
  3. استخدم حزماً موثوقة. طبّق التحديثات من مستودع نظام التشغيل أو حزم PHP الرسمية أو مورّد معروف. وتأكد من أن تحديث الحزمة يغيّر الملف الثنائي العامل، لا أن يحدّث فقط تثبيتاً تطويرياً لا يلمسه أي عميل.
  4. إذا تعذّر الترقيع اليوم، فاعزل. أخرج المضيفات المعرّضة من الإنترنت، وقيّد الوصول عبر VPN أو قائمة سماح، وضعها خلف وكيل عكسي أو جدار حماية لتطبيقات الويب، وعطّل نقاط نهاية PHP غير الضرورية. هذه الإجراءات تقلّل التعرّض لكنها لا تحل محل الترقية.
  5. تعامل مع PHP القديمة كمسألة ترحيل طارئة. بيئات PHP 5.x و7.x و8.0 و8.1 محفوفة بالمخاطر بشكل خاص حيث لا يوجد ترقيع مدعوم من مورّد. وتشمل الإرشادات المعلن عنها تعطيل session.upload_progress.enabled في بعض التثبيتات القديمة أو تطبيق إصلاح على مستوى الشيفرة المصدرية، لكن يجب التحقق من الحلول البديلة على مستوى الإعداد في بيئة اختبار ومطابقتها مع الإشعار الرسمي قبل الاعتماد عليها.

وينبغي للشركات المغربية التي تدير متاجر الدفع عند الاستلام أن تعتبر نقاط نهاية الدفع وإدارة الطلبات أصولاً من الدرجة الأولى خلال هذه المرحلة، لأن أي توقف أو تلاعب هناك يترجم مباشرة إلى إيرادات مفقودة ونزاعات مع العملاء.

المرحلة 2: إعادة تشغيل PHP وخادم الويب بأمان

بعد تثبيت الحزمة، أعد تشغيل المكوّن الذي يحمّل PHP فعلاً. استخدم اسم الخدمة الصحيح للفرع المثبَّت:

sudo systemctl restart php8.3-fpm
sudo systemctl reload nginx

قد تتطلب عمليات نشر Apache إعادة تحميل أو إعادة تشغيل. أما التطبيقات المعبَّأة في حاويات فتتطلب استبدال الحاوية أو إعادة نشر الصورة، لا تعديل الملفات داخل نسخة قيد التشغيل. سجّل نافذة الصيانة وإصدارات الحزم واسم المشغّل وأي إعادة تشغيل فاشلة — فهذا السجل يصبح دليلاً إذا خضع الحادث للمراجعة لاحقاً.

قبل إعادة الخدمة إلى حركة المرور الطبيعية:

  • افحص سجلات PHP-FPM وخادم الويب والتطبيق بحثاً عن أخطاء جديدة.
  • اختبر تسجيل الدخول والدفع ورفع الملفات ونداءات API وقوائم الانتظار والمهام المجدولة.
  • تأكد من الاتصال بقاعدة البيانات وسلوك الذاكرة المؤقتة.
  • راقب المعالج والذاكرة وعدد العمليات وأخطاء HTTP 5xx وزمن الاستجابة.
  • احتفظ بخطة تراجع، لكن لا تتراجع أبداً إلى نسخة معرّضة إلا إذا عُزلت الخدمة أولاً عن الإنترنت.

المرحلة 3: التحقق من الإصلاح انطلاقاً من بيئة التشغيل

نفّذ التحقق من الخادم ومن نظام النشر، لا من محطة عمل المطوّر:

php -v
php --ini
php -i | grep -E 'session.upload_progress.enabled|Server API'

في حالة PHP-FPM، تحقق من الإصدار الذي تعرضه عملية الويب بدلاً من الاعتماد فقط على الملف الثنائي في سطر الأوامر. ويمكن لنقطة نهاية تشخيصية مؤقتة أن تكشف إصدار بيئة التشغيل، لكن أزلها فوراً بعد الاختبار، لأن الكشف العلني عن إعدادات PHP يخلق مخاطر غير ضرورية بحد ذاته.

تأكد من أن:

  • الإصدار يطابق الإصدار المُصلَح للفرع.
  • خادم الويب متصل بمقبس أو عملية PHP-FPM المحدَّثة.
  • عمليات PHP القديمة قد توقفت.
  • صور الحاويات وعُقد التوسّع التلقائي تستخدم البصمة المُرقَّعة.
  • أدوات فحص الثغرات لم تعد ترصد المكوّن المتأثر.
  • سجلات إدارة الحزم تُظهر تحديثاً ناجحاً.

الإصدارات المُصلَحة المعلن عنها هي 8.2.35 و8.3.36 و8.4.27 و8.5.12. ولأن أدلة البحث تحمل تاريخاً مستقبلياً، تحقق من هذه الأرقام مقابل إشعار أمن PHP الحالي ونشرة توزيعتك قبل نشرها أو تشغيلها.

المرحلة 4: تتبّع الاختراق بعد الترقيع

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

  • صدّر سجلات الوكيل العكسي وجدار الحماية وخادم الويب وPHP-FPM والمصادقة وتدقيق السحابة.
  • ابحث عن طلبات POST غير معتادة وأطوال محتوى شاذة ومعاملات مُرمَّزة ورموز حالة غير متوقعة وموجات من الطلبات على نقاط نهاية الرفع أو الجلسات.
  • راجع مجلدات رفع PHP والمجلدات المؤقتة وجذور الويب و/tmp والمهام المجدولة وسكربتات بدء التشغيل ومفاتيح SSH والملفات المعدَّلة حديثاً.
  • ابحث عن صدفات الويب وملفات PHP غير المألوفة وقواعد .htaccess المعدَّلة ومسؤولين جدد ورموز API مجهولة واتصالات صادرة وعمليات فرعية أطلقها PHP.
  • قارن بصمات الملفات مع نسخة نشر نظيفة أو مستودع للتحكم في الإصدارات.
  • راجع تغييرات قاعدة البيانات وإعدادات الدفع وسجلات العملاء وسجلات الوصول للفترة التي تبدأ قبل الترقيع.
  • بدّل أسرار التطبيق وكلمات مرور قاعدة البيانات وبيانات اعتماد المسؤولين ومفاتيح API ورموز السحابة إذا كان الاختراق محتملاً.
  • أعد بناء الخوادم المخترقة من صور موثوقة بدلاً من الاعتماد على التنظيف وحده.

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

قائمة تحقق للشركات الصغيرة والمتوسطة وما يجب متابعته لاحقاً

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

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

وعلى الفرق التي تتعامل أيضاً مع المدفوعات الرقمية أن تراجع بيانات اعتماد تكاملاتها ونقاط نهاية الاستدعاء إلى جانب ترقية PHP، لأن مسارات الدفع هدف شائع بعد أي اختراق لطبقة الويب؛ ويوضح استعراض Onyx لـتحوّل المدفوعات الرقمية في المغرب إلى أين تتجه هذه التكاملات. والتسلسل نفسه غير مبهر — ترقيع، عزل، إعادة تشغيل، تحقق، تتبّع — لكن تنفيذه بهذا الترتيب يحوّل إفصاحاً بالغ الخطورة إلى حدث صيانة مضبوط بدلاً من تحقيق مفتوح في اختراق.