انتقل إلى المحتوى
تفاصيل المقال

ثغرة PHP2Shell في PHP: كيف تحدّث سيرفرك الآن

ثغرة PHP2Shell في PHP: كيف تحدّث سيرفرك الآن

ثغرتا PHP2Shell الحرجتان (CVE-2026-109618) تسمحان بتنفيذ أوامر على سيرفرات PHP. الإصدارات المتأثرة وخطوات التحديث لـ Laravel وcPanel.


الإجابة المباشرة: في 21 أكتوبر 2026 أصدر فريق PHP إصلاحاً لثغرتين حرجتين تسمحان لمهاجم بتنفيذ أوامر على السيرفر دون تسجيل دخول، وكل منهما مصنّفة 9.2 على مقياس CVSS v4.0. إذا كان موقعك أو متجرك أو تطبيق Laravel الخاص بك يعمل على PHP، فحدّث اليوم إلى PHP 8.5.12 أو 8.4.27 أو 8.3.36 أو 8.2.35 (أو الحزمة المصححة من توزيعة لينكس)، لأن محاولات الاستغلال رُصدت بالفعل.

بقلم محمد سامي، مطور Backend أول متخصص في Laravel وPHP بخبرة 7 سنوات. تاريخ النشر: 22 أكتوبر 2026 — آخر تحديث: 22 أكتوبر 2026


حدّثت سيرفرات PHP كثيرة على مدار سنوات، ومعظم تحديثات الأمان تكون من نوع "حدّث في أقرب صيانة". هذه المرة مختلفة. فريق PHP نشر تنبيهاً مسبقاً يوم 20 أكتوبر، ثم الإصلاح يوم 21 أكتوبر، وعنوان البيان الرسمي نفسه يقول "حدّث الآن". في هذا المقال أشرح ما حدث، ومن المتأثر، والخطوات التي أتبعها فعلياً على سيرفرات العملاء هذا الأسبوع.

ماذا حدث بالضبط؟

البند التفاصيل
الاسم المتداول PHP2Shell
أرقام الثغرات CVE-2026-109618 (تنفيذ أوامر عن بعد عبر خلل نفاد الذاكرة) وCVE-2026-109619 (تنفيذ أوامر عبر حالة داخلية قديمة)
تنبيهات GitHub GHSA-w8hw-w9fx-j79w وGHSA-6wmf-4rv5-p3rp
الخطورة حرجة، CVSS v4.0 بدرجة 9.2 للاثنتين
هل تحتاج تسجيل دخول؟ لا
الإصدارات المتأثرة 8.2 قبل 8.2.35، و8.3 قبل 8.3.36، و8.4 قبل 8.4.27، و8.5 قبل 8.5.12، وكل الإصدارات غير المدعومة (8.1 وما قبلها)
الإصدارات المصححة 8.2.35 و8.3.36 و8.4.27 و8.5.12 (صدرت 21 أكتوبر 2026)

بشكل مبسّط:

  • CVE-2026-109618: عندما تنفد ذاكرة PHP في لحظة غير مناسبة أثناء تجهيز الطلب، قد تبقى بيانات داخلية نصف مكتملة، ثم تتعامل معها مرحلة التنظيف كأنها سليمة. وبحسب البيان، يمكن لطلب رفع ملفات (multipart) مصمم بعناية أن يدفع PHP إلى هذه الحالة، وعلى Apache مع mod_php يحدث ذلك قبل أن يبدأ كود موقعك في العمل أصلاً.
  • CVE-2026-109619: بعض البيانات الداخلية الخاصة بطلب معين قد تبقى بعد تحرير ذاكرتها، ويستخدمها الطلب التالي على نفس عامل PHP، وهو ما يمكن تحويله إلى تنفيذ أوامر.

المهم لصاحب العمل: أي شخص يستطيع إرسال طلبات إلى موقعك قد يتمكن من السيطرة على السيرفر.

هل يتم استغلالها فعلاً؟

نعم، المحاولات حقيقية. فريق Amazon Threat Intelligence رصد محاولة استغلال على أنظمة المراقبة الخاصة به يوم 17 أكتوبر، أي قبل الإعلان بأربعة أيام، وذكر أن الثغرة "تُستغل الآن على نطاق واسع". وتنقل Tenable عن Cloudflare وwatchTowr رصد هجمات ومحاولات استغلال. لذلك إن كان سيرفرك غير محدّث، فراجع السجلات بدءاً من 17 أكتوبر وليس من تاريخ الإعلان.

من المتأثر؟

بحسب بيان PHP: كل تثبيتات PHP التي تخدم طلبات ويب، سواء PHP-FPM أو Apache مع mod_php أو php-cgi أو FrankenPHP أو LiteSpeed، مع اعتبار mod_php الأعلى خطورة.

بيئتك متأثرة؟ ماذا تفعل
تطبيق Laravel على VPS (Nginx + PHP-FPM) نعم حدّث حزمة PHP وأعد تشغيل FPM
ووردبريس أو WooCommerce على استضافة مشتركة نعم راجع إصدار PHP من لوحة التحكم واسأل الاستضافة
سيرفر cPanel / WHM نعم حدّث حزم EA-PHP وأعد التشغيل
سيرفر Plesk نعم ثبّت تحديثات مكونات PHP
Docker (صور php:8.x) نعم اسحب الصورة الجديدة وأعد البناء
PHP 8.1 أو 8.0 أو 7.4 نعم، ولا يوجد إصدار رسمي انتقل لإصدار مدعوم أو اطلب حزمة مصححة من التوزيعة

نقطة مهمة: تحديث Laravel أو ووردبريس لا يحل المشكلة، لأن الخلل في محرك PHP نفسه وليس في الإطار.

الخطوة 1: اعرف إصدار PHP لديك

طريقة معرفة إصدار PHP وتحديثه لثغرة CVE-2026-109618

عبر SSH:

php -v
php-fpm8.3 -v   # حسب إصدارك

انتبه: إصدار سطر الأوامر قد يختلف عن الإصدار الذي يستخدمه الموقع. للتأكد ضع ملفاً مؤقتاً فيه <?php echo PHP_VERSION; في مجلد الموقع، افتحه مرة واحدة، ثم احذفه فوراً.

على الاستضافة المشتركة: في cPanel من MultiPHP Manager أو Select PHP Version، وفي Plesk من Websites & Domains > PHP.

توزيعات مثل Debian وUbuntu قد تُصلح الثغرة داخل حزمها دون تغيير الرقم الرئيسي، فراجع متتبع الأمان الخاص بها. مثلاً Debian يذكر أن 8.2.35-1~deb12u1 و8.4.27-1~deb13u1 مصححتان.

الخطوة 2: التحديث

سيرفر Ubuntu/Debian (الإعداد المعتاد لـ Laravel)

sudo apt update
sudo apt install --only-upgrade 'php8.3*'   # حسب إصدارك
sudo systemctl restart php8.3-fpm
sudo systemctl reload nginx
php -v

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

RHEL / AlmaLinux / Rocky

sudo dnf update 'php*'
sudo systemctl restart php-fpm

cPanel / WHM

حدّث حزم EasyApache (ea-php82 وea-php83 وغيرها) من WHM أو بالأمر dnf update ea-php*، ثم أعد تشغيل PHP-FPM وApache. وراجع إعلانات cPanel لمعرفة أرقام الحزم المصححة.

Plesk

من Tools & Settings > Updates ثبّت آخر تحديثات مكونات PHP، ثم راجع إصدار PHP لكل دومين.

Docker

docker pull php:8.3-fpm
docker compose build --no-cache && docker compose up -d

ملاحظات خاصة بـ Laravel

  • لا يحتاج الإصلاح لأي تعديل في الكود، لكن اختبر التطبيق بعد التحديث: الاختبارات، والـ queues، والمهام المجدولة.
  • أعد تشغيل العمليات الطويلة (php artisan queue:restart وHorizon وOctane وReverb) حتى تعمل على النسخة الجديدة.
  • إن كنت تستخدم Forge أو Ploi، حدّث PHP من لوحتهم وتأكد من الإصدار بعدها.

الخطوة 3: إن لم تستطع التحديث اليوم

بيان PHP يذكر إجراءات تقلل التعرض لكنها لا تجعل السيرفر آمناً:

  1. لـ CVE-2026-109618: اضبط memory_limit=-1 بطريقة لا يستطيع التطبيق تغييرها (مثل php_admin_value في إعدادات FPM)، وخفّض post_max_size (8M إن لم يكن لديك رفع ملفات، و32M إن كان لديك) مع إبقاء upload_max_filesize أقل منه، وضع حدوداً لحجم الطلبات وعدد الحقول والأجزاء والهيدرز على مستوى السيرفر أو البروكسي.
  2. لـ CVE-2026-109619: اضبط session.upload_progress.enabled=0 في php.ini أو إعدادات FPM (وليس عبر ini_set() أو .user.ini) وأعد تشغيل كل العمال. وعلى PHP 8.5 اضبط أيضاً fatal_error_backtraces=0.
  3. استخدم حد ذاكرة على مستوى الحاوية أو cgroup، والبيان يحذّر من استخدام RLIMIT_AS أو RLIMIT_DATA بديلاً.

من خبرتي: memory_limit=-1 يعني أن طلباً واحداً سيئاً قد يستهلك ذاكرة كبيرة، فراقب السيرفر جيداً. وكل هذا لا يغني عن التحديث.

الخطوة 4: افحص علامات الاختراق

لأن المحاولات بدأت قبل الإعلان، أنصح بـ:

  • مراجعة سجلات الوصول منذ 17 أكتوبر بحثاً عن طلبات POST غير معتادة لرفع ملفات، خاصة التي تحتوي PHP_SESSION_UPLOAD_PROGRESS كما توصي Amazon.
  • البحث عن ملفات PHP جديدة أو معدّلة في مجلدات الرفع والكاش، ومهام cron جديدة، وعمليات غير متوقعة.
  • تغيير كلمات المرور والمفاتيح الموجودة على السيرفر (ملف .env) إن لاحظت أي شيء مريب.

الأسئلة الشائعة

هل موقعي متأثر إذا كنت أستخدم Laravel؟

نعم إذا كان إصدار PHP على السيرفر أقدم من الإصدارات المصححة. المشكلة في PHP وليست في Laravel.

شركة الاستضافة تدير السيرفر، هل أحتاج لفعل شيء؟

راجع إصدار PHP من لوحة التحكم، واسأل الاستضافة كتابياً هل ثبّتت 8.2.35 أو 8.3.36 أو 8.4.27 أو 8.5.12 أو حزمة مصححة من التوزيعة.

أستخدم PHP 7.4 أو 8.1، ماذا أفعل؟

مشروع PHP لم يعد يصدر نسخاً لهذه الإصدارات، ونشر فقط تعديلات مصدرية محدودة، وبعض التوزيعات توفر حزماً مصححة. الحل الآمن هو الانتقال لإصدار مدعوم.

هل يكفي تعديل php.ini؟

لا، فريق PHP يؤكد أن التحديث هو الحل الكامل الوحيد.

هل يحميني Cloudflare أو جدار حماية الويب؟

قد يقلل الخطر، وقد أعلنت Cloudflare أنها تحدّث وسائل الحماية، لكنه ليس بديلاً عن التحديث.

متى ينتهي دعم PHP 8.2؟

بحسب php.net، يتلقى PHP 8.2 إصلاحات الأمان حتى 31 ديسمبر 2026 فقط، فخطط للانتقال إلى 8.3 أو أحدث. اقرأ خطة ترقية Laravel قبل انتهاء دعم PHP 8.2.

المصادر

تحتاج من يراجع سيرفرك؟

إن لم تكن متأكداً من إصدار PHP على موقعك، أو تريد من يحدّث السيرفر ويفحصه نيابةً عنك، يمكن لفريق الأمن السيبراني في Golden Code مساعدتك. تواصل معنا عبر صفحة التواصل.


عن الكاتب: محمد سامي، مطور Backend أول في Golden Code بخبرة 7 سنوات في بناء وصيانة أنظمة Laravel وPHP.

عندك فكرة موقع أو تطبيق؟

احجز استشارة مجانية، ونقترح عليك الحل والتكلفة والمدة.
عندك فكرة موقع أو تطبيق؟