
إثبات مفهوم (PoC) لاستغلال ثغرة php2shell (CVE-2026-109618 / CVE-2026-109619)، يوضّح تنفيذ التعليمات البرمجية عن بُعد في بيئات PHP المعرّضة للخطر. لأغراض البحث الأمني والتعليم فقط.
تنبيه حرج (CVSS v4.0: 9.2 - حرج): في 20 أكتوبر، تسرّبت تفاصيل ثغرتين من ثغرات تنفيذ التعليمات البرمجية عن بُعد (RCE) قبل المصادقة في نواة PHP على الإنترنت قبل الإفصاح المنسّق. يتيح استغلالهما تنفيذ أوامر عشوائية مباشرة من خادم الويب.
يشير php2shell إلى ثغرتين حرجتين (CVE-2026-109618 وCVE-2026-109619) تؤثران على وظائف نواة PHP. المتجه الرئيسي الموضّح هو استخدام-بعد-التحرير (UAF) في الكومة (heap) ضمن آلية تقدّم رفع الجلسة في نواة PHP، مما يؤدي إلى تنفيذ تعليمات برمجية عشوائية (zend_call_function / system()).
يخزّن معالج تقدّم الرفع في PHP (php_session_rfc1867_callback في ext/session/session.c) مؤشّرَي حاوية zval * خامّين (post_bytes_processed وcurrent_file_bytes_processed) مباشرةً في بنى HashTable الحيّة.
أثناء معالجة الطلب:
POST متعدد الأجزاء (multipart) قياسي تتبّع التقدّم بقيم الإعدادات الافتراضية (session.upload_progress.enabled = 1).zend_hash_update() شجرة البيانات السابقة باستخدام المدمّر zval_ptr_dtor، مما يحرّر كتلة الذاكرة.zend_fcall_info وzend_internal_function المُصمّمة.zend_call_function()، مما يؤدي إلى تنفيذ أوامر نظام عشوائية.php-src القياسية (بما في ذلك الإصداران 8.4.4 و8.2.34).--syms) بين zval_ptr_dtor وzend_call_function للتكيّف مع تخطيطات الملفات الثنائية الخاصة بكل توزيعة (مثل Debian Bookworm وUbuntu Noble وUbuntu Jammy).يلخّص الجدول التالي إصدارات PHP المتأثرة بـ CVE-2026-109618 وCVE-2026-109619، إلى جانب حالات الدعم والترقيع الخاصة بها:
| فرع PHP | الحالة | الإصدارات المتأثرة | الإصدار المُصلح / الآمن | ملاحظات |
|---|---|---|---|---|
| PHP 8.5 | مدعوم (نشط) | < 8.5.12 | 8.5.12 | تم نشر إصدار أمني طارئ |
| PHP 8.4 | مدعوم (نشط) | < 8.4.27 | 8.4.27 | تم نشر إصدار أمني طارئ |
| PHP 8.3 | مدعوم (نشط) | < 8.3.36 | 8.3.36 | تم نشر إصدار أمني طارئ |
| PHP 8.2 | مدعوم (أمني فقط) | < 8.2.35 | 8.2.35 | تم نشر إصدار أمني طارئ |
| PHP 8.1 | نهاية العمر (EOL) | جميع إصدارات 8.1.x | لا يوجد تصحيح رسمي (EOL) | اضبط session.upload_progress.enabled = Off أو استخدم ELS/الترقيعات الخلفية من التوزيعة |
| PHP 8.0 | نهاية العمر (EOL) | جميع إصدارات 8.0.x | لا يوجد تصحيح رسمي (EOL) | انتهى الدعم الرسمي؛ التخفيف عبر الإعدادات إلزامي |
| PHP 7.x | نهاية العمر (EOL) | جميع إصدارات 7.0 - 7.4 | لا يوجد تصحيح رسمي (EOL) | منطق ext/session الأساسي معرّض للثغرة؛ يلزم التخفيف العاجل أو الترقية |
| PHP 5.x | نهاية العمر (EOL) | 5.4.0+ (مع تتبع تقدم RFC1867) | لا يوجد تصحيح رسمي (EOL) | انتهى الدعم الرسمي؛ اعزل المضيف أو عطّل تقدم الرفع |
[!WARNING] إصدارات PHP 8.1 والإصدارات الأقدم التي وصلت إلى نهاية العمر (EOL) لا تتلقى تصحيحات أمنية رسمية من مؤسسة PHP. بالنسبة لهذه البيئات، طبّق فورًا
session.upload_progress.enabled = Offأو أعد بناء PHP من المصدر باستخدام تصحيح شفرة C المرفق.
عادةً ما يتجلى استغلال php2shell في صورة عمليات فرعية شاذة تُنشأ مباشرةً بواسطة عمليات عامل PHP (php-fpm، php-cgi، php-cgi.exe، httpd، apache2).
راقب ونبّه عند قيام عمليات عامل PHP بتشغيل:
/bin/sh، /bin/bash، cmd.exe، powershell.exepython، perlcurl، wget، nc، certutil.exe/dev/tcp/، fsockopen، mkfifowhoami، id، uname -a، ipconfigبالنسبة لبيئات الويب القائمة على Linux التي لا تحتوي على وكيل كشف على نقاط النهاية، يمكن تشغيل أدوات مثل process-watcher المجانية من Florian Roth في وضع المراقبة لرصد إنشاء العمليات الفرعية غير المعتادة في الوقت الفعلي.
php.exe، php-cgi.exe)./tmp، /var/tmp) بحثًا عن أصداف ويب مُسقطة أو آثار تنفيذ عابرة.يتوفر استغلال عن بُعد آلي بالكامل بنقرة واحدة يستهدف CVE-2026-109618 في poc_109618.py. يتجاوز الاستغلال ASLR عن بُعد باستخدام طلبات HTTP عادية لتحقيق تنفيذ أوامر عشوائية موثوق.
تتكون سلسلة الهجوم من أربع مراحل متتالية عبر HTTP: