
PHP 8.5.11 - حرجة - عن بُعد - UAF - CVE-2026-109619 PHP2Shell. تتبّع خلفي قاتل في نفس العامل ثم تشخيص INI على Apache mod_php. مخبر مقابل 8.5.12. استُنتج تنفيذ الشيفرة عن بُعد من الاستشارة.
يمكن لأي شخص على الإنترنت التحدث إلى موقع PHP الخاص بك بالطريقة نفسها التي يتحدث بها المتصفح، دون كلمة مرور. على آخر إصدار متأثر من PHP 8.5، يمكنه إجبار طلب واحد على الانتهاء بخطأ قاتل، ثم إرسال طلب ثانٍ إلى نفس العامل (worker). يحتفظ PHP 8.5 بتتبّع استدعاء (backtrace) من ذلك الخطأ القاتل في ذاكرة العامل العامة بعد زوال كومة الذاكرة (heap) الخاصة بالطلب. يقرأ الطلب الثاني هذا التتبّع أثناء تطبيق علامة INI متبقية، قبل أن يعيد المحرك تهيئة نفسه. في هذا المختبر، يقتل ذلك الطلب الثاني عملية Apache الفرعية. أظهرت مجموعة PHP أن النمط نفسه يمكن أن يتحول إلى تنفيذ شيفرة عن بُعد بصلاحيات عامل الويب.
الفئة: UAF / انهيار الوصول: عن بُعد
PHP 8.5.11 (php:8.5.11-apache) مقابل 8.5.12 المُصحَّح - php.net
CVE-2026-109619 هو حالة عامة قديمة على مستوى العامل. يثبّت المختبر Apache prefork على عملية فرعية واحدة، ويولّد خطأً قاتلاً باستخدام fatal_error_backtraces=On، ثم يستهلكه عبر php_flag auto_detect_line_endings on / report_memleaks off لكل مجلد تُطبَّق قبل php_request_startup(). في 8.5.11: المُنتِج يعيد 200 مع خطأ قاتل، والمُستهلِك يُعاد ضبط اتصاله، وسجل Apache يعرض zend_mm_heap corrupted. في 8.5.12: المرحلتان نفساهما تظلان تعملان (consumer-ok). يُستنتج تنفيذ الشيفرة عن بُعد المذكور في الاستشارة بصلاحيات عامل Apache من GHSA.
| المعرّف | CVE-2026-109619 |
| الاستشارة | GHSA-6wmf-4rv5-p3rp |
| الفئة | UAF / انهيار (تنفيذ الشيفرة عن بُعد مستنتج من الاستشارة) |
| الوصول | عن بُعد (HTTP دون مصادقة، نفس العامل) |
| CWE | CWE-416 / CWE-825 |
| CVSS | حرج: 9.2 CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H (مجموعة PHP) |
| المنتج | PHP |
| المتأثر | PHP 8.2 قبل 8.2.35، و8.3 قبل 8.3.36، و8.4 قبل 8.4.27، و8.5 قبل 8.5.12 (تثبيت المختبر 8.5.11، فرع تتبّع الاستدعاء هو 8.5) |
| المُصحَّح | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 (21 أكتوبر 2026) |
| المصادقة | لا شيء |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط |
الشقيق: CVE-2026-109618 OOM longjmp (زوج PHP2Shell).
| الطريقة | المَصبّ | الصلاحية |
|---|---|---|
GET /producer.php دون مصادقة ثم GET /consumer.php على نفس العملية الفرعية لـ Apache prefork | fatal_error_backtraces في 8.5 لا يُعاد ضبطه أبدًا عند الإغلاق؛ تشخيص INI قبل php_request_startup() | التوافر (مُثبت في المختبر): قتل تلك العملية الفرعية (zend_mm_heap corrupted، إعادة ضبط الاتصال) على 8.5.11. السلامة (مستنتجة): مؤشر تتبّع استدعاء معلّق؛ أظهر المورّد تنفيذ الشيفرة عن بُعد بصلاحيات www-data. الاستطلاع (مستنتج): كشف كومة ذاكرة الطلب المتبقية. |
| المرحلتان نفساهما على 8.5.12 | إعادة ضبط كاملة للحالة | مغلق (مُثبت في المختبر): جسم المُستهلِك consumer-ok، والعامل يظل يعمل. |
error_reporting / display_errors / @ | التحذير لا يزال يستهلك الحالة القديمة | مغلق كإجراء تخفيف. يُوصَل إلى الحالة العامة قبل أن يقرر PHP ما إذا كان سيبُلّغ عن التشخيص. |
.user.ini في تجمّع FPM | يُطبَّق بعد التهيئة العادية | مغلق كمُستهلِك مبكر كهذا. يحتاج FPM إلى PHP_VALUE / PHP_ADMIN_VALUE من الواجهة الأمامية. تقدّم رفع الجلسة هو فرع ثانٍ مؤكد من المورّد (mod_php وFPM)؛ استخدم هذا المختبر فرع تتبّع الاستدعاء في 8.5. |
تسجيل الدخول، صدفة عكسية، .so مخصص | لا ينطبق | مغلق. لم تُجرَ أي محاولة للتحكم في RIP. |
مُثبت في المختبر مقابل مستنتج: UAF/الانهيار على نفس العامل مقابل الضابط المُصحَّح مُثبت في المختبر. تنفيذ الشيفرة عن بُعد مستنتج من GHSA-6wmf-4rv5-p3rp.
يتطلب: تثبيت Apache apache2handler prefork على عامل واحد. fatal_error_backtraces=On في PHP 8.5. تشخيص INI لكل مجلد. php:8.5.11-apache الرسمي مقابل php:8.5.12-apache.
python3 php-stale-global-uaf-Abraxas-Labs.py
أو cd lab && ./run.sh. Loopback 127.0.0.1:18222 (8.5.11) مقابل 127.0.0.1:18223 (8.5.12). مشروع Compose cve-2026-109619. الشاهد CVE-2026-109619-UAF-WITNESS. السطر الأخير:
SUCCESS CVE-2026-109619 vuln-uaf=yes vuln-crash=yes patched-ok=yes sapi=apache2handler pin=same-worker vuln-image=php:8.5.11-apache patched-image=php:8.5.12-apache how=backtrace crash=connection-reset CVE-2026-109619-UAF-WITNESS
مختبر مُصرَّح به فقط. يتواصل مع loopback.
حدِّث إلى PHP 8.5.12 (أو 8.2.35 / 8.3.36 / 8.4.27). حتى ذلك الحين: fatal_error_backtraces=0 على 8.5 (هذا المُنتِج فقط)؛ session.upload_progress.enabled=0 (فرع الجلسة فقط)؛ أزِل INI المهجور الخاص بكل طلب؛ pm.max_requests=1 إن كان بإمكانك تحمّل ذلك. لا يوجد تخفيف عام كامل عبر الإعدادات.
مختبرات أبراكساس [email protected]