
تدقيق CVE-2026-109618 / CVE-2026-109619: إعادة إنتاج تسميم الجلسة وصولاً إلى تنفيذ الأوامر؛ إعادة إنتاج شرط OOM المسبق في BGCTX؛ لم يُعَد إنتاج UAF المزعوم في مصفوفة progress على البُنى القياسية.
تدقيق في مزاعم "php2shell"، بالإضافة إلى إثبات مفهوم محلي عامل واحد.
中文 · PHP 8.5.4 · للمختبر فقط
MITRE:
CVE_RECORD_DNE· NVD: لا يوجد سجل · php.net: إعلان مسبق فقط. هذا المستودع يدقق في المزاعم التقنية؛ ولا يؤكد المعرّفات.
| السؤال | الإجابة |
|---|---|
| هل يمكنه منح صدفة (shell)؟ | ✅ محليًا — باستخدام مصرف unserialize() + أداة __destruct |
| هل هذا هو CVE نفسه؟ | ⚠️ على الأرجح لا — يبدو أن CVE هو أيتام سياق BG (ملاحظة 08) |
| هل هو قبل المصادقة (pre-auth)؟ | ❌ مسار ما قبل المصادقة يتوقف عند ARM / انهيار في اختباراتنا |
| هل الحزمة المسرّبة صحيحة؟ | ❌ post_bytes_processed UAF لا يُعاد إنتاجه |
multipart POST ──► php_hash_environment() ← before RINIT
│
├─ serialize encode ──► OOM ──► BG(serialize) orphaned (64 B)
└─ unserialize decode ──► OOM ──► BG(unserialize) orphaned (8208 B)
│
▼
SAPI survives? ── yes ──► next request reuses the freed context
│ │
no ├─ Bug S: crash / leak
▼ └─ Bug U: RCE class
DoS only
خطأ منفصل يستخدمه إثبات المفهوم الخاص بنا:
var_destroy() ──► frees back-ref chunks ──► dtor walk (no serialize_lock)
└─ __destruct ──► inner unserialize ──► R:N reads freed chunk
└─ fake closure ──► zif_system(cmd)
php exploit/var_destroy_uaf_rce.php "id > /tmp/proof"
cat /tmp/proof # uid=... gid=...
المتطلبات: PHP مصاب (تم التحقق من 8.5.4) · unserialize() على بيانات المهاجم · صنف
__destruct · Linux /proc/self/mem · إزاحات خاصة بكل بناء من nm.
| المزعم | النتيجة |
|---|---|
الحزمة المسرّبة: post_bytes_processed UAF | ❌ لم يُعَد إنتاجه (Z_TRY_ADDREF) |
Bug S — يتيم BG(serialize) | ⚠️ UAF 3/3 تحت ASAN · تم إعادة إنتاج ARM · لا RCE |
Bug U — يتيم BG(unserialize) | ⚠️ تم إعادة إنتاج ARM · لم يُعَد إنتاج kill / system |
| var_destroy UAF → RCE | ✅ يعمل، 10/10، ذاتي التحديد |
تسميم الجلسة → include | ✅ تم إعادة إنتاجه (تقنية موجودة مسبقًا) |
عدم تطابق المعالج → __destruct | ✅ تم إعادة إنتاجه (يتطلب صنف أداة) |
| إزاحات الملف التنفيذي التجريبي | ✅ تطابق 8.5.4-0ubuntu1.3 (delta 0xbe3f0) |
| المسار | المحتوى |
|---|---|
exploit/var_destroy_uaf_rce.php | إثبات مفهوم UAF → RCE ذاتي التحديد |
analysis/01-05 | العمر · الاستئصال · الإصدارات · الحزمة المسرّبة · قابلية الوصول |
analysis/06 | مسار BG(serialize) + إيصال ASAN |
analysis/07 | تسميم الجلسة → تنفيذ الأوامر |
analysis/08 | أيتام سياق BG (حزمة إعادة الرفع) |
analysis/09 | var_destroy UAF → RCE (الإزاحات، ذاتي التحديد) |
evidence/ | آثار ASAN · سجلات OOM · إزاحات الملف التنفيذي · عمليات التشغيل |
lab/ | سكربتات البناء · المحفزات · المصفوفة · الاستئصال |
PROVENANCE.md | عناوين URL للمخرجات · التواريخ · التجزئات |
عمليات بناء محلية، ومختبرات Apache / php-fpm / Docker محلية، وحزمة Ubuntu المذكورة. يعمل إثبات المفهوم بصلاحيات مستخدم عملية PHP؛ وشرط وجود الأداة (gadget) حقيقي.