
مختبر Docker للتحقق من بدائية تنفيذ PHP على مستوى المكوّن في Magento (CVE-2026-75650) وتصحيح Adobe VULN-39341.
يعيد هذا المختبر المستقل إنتاج بدائية تنفيذ PHP على مستوى المكوّن الخاصة بـ StyleSmuggler على عملية الدفع في Magento Open Source 2.4.9 المثبّتة على مراجعة محددة، ثم يُثبت أن تصحيح VULN-39341 من Adobe يحجب نفس الإدخال.
الإثبات غير تدميري: لا يمكن لـ PHP المضمّنة سوى كتابة علامة عشوائية واحدة في /tmp. لا يمكنها تشغيل أمر، أو تنزيل ملف، أو فتح استدعاء رجعي، أو قبول حمولة يوفّرها المشغّل.
يوفر المختبر:
755e34dd689021c5165db9d35ecff74f7dc51527;لا يدّعي المختبر وجود استغلال HTTP قياسي غير مصادق. يبدأ فحص المكوّن من نموذج قالب البريد الإلكتروني الحقيقي، لذا فهو يُثبت المصرف الخطير وحدود التصحيح، وليس الموصل المفقود بين الشبكة والقالب. لا تتم إضافة أي مسار HTTP اصطناعي.
استخدم فقط على الأنظمة التي تملكها أو التي صرّح لك صراحةً باختبارها. لا تضع فحص PHP تحت جذر ويب للإنتاج. للتثبيت الفعلي، استخدم المدقق للقراءة فقط أو تحقق من استنساخ مرحلي قابل للتخلص.
المتطلبات:
يتم نشر بوابة واجهة المتجر بوضع المطوّر فقط، وعلى الحلقة المحلية فقط (127.0.0.1:8096 افتراضيًا). تختار بوابة nginx ثانية غير مكشوفة معالجة أخطاء الإنتاج القياسية بحيث يتلقى اختبار التقرير معرّف تقرير Magento العادي. لا يتم كشف MariaDB أو Redis أو OpenSearch أو PHP-FPM أو بوابة التقرير تلك على شبكة المضيف.
cd docker-lab
cp .env.example .env
docker compose up -d --build
docker compose logs -f php
عادةً ما يستغرق استنساخ Magento الأولي وتثبيت التبعيات وتثبيت التطبيق من 15 إلى 40 دقيقة. عندما يطبع سجل PHP Ready، شغّل:
docker compose exec -T php bash /lab/scripts/run-ab.sh
أو استخدم الأهداف المساعدة:
make up
make wait
make ab
يحاول أمر A/B دائمًا ترك المصدر في الحالة المُصحّحة.
لا ينجح الاختبار إلا عندما يتصرف النصفان المختبران بشكل مستقل كما هو متوقع:
Unpatched report: raw-tag=true, guard=false
Patched report: raw-tag=false, guard=true, neutralized=true
Unpatched component: marker=true
Patched component: marker=false
[PASS] Report storage and component execution match the required A/B controls.
لا يُقبل HTTP 200 أو إشعار معروض أو تقرير خطأ مُولَّد أو استثناء مُلقى كدليل على التنفيذ. تبقى فحوصات التقرير والتنفيذ منفصلة: نجاحهما المشترك لا يخترع موصل HTTP القياسي غير المُثبت.
make vulnerable
make report # expected: raw tag preserved, no execution guard
make probe # expected: execution_observed=true and exit 0
make patched
make report # expected: exit guard present, payload tag neutralized
make probe # expected: execution_observed=false and exit 2
إرجاع make probe للقيمة 2 في الحالة المُصحّحة هو النتيجة السلبية المتوقعة؛ يتعامل make ab مع حالتي الخروج ويعيد 0 فقط عندما ينجح اختبار A/B الكامل.
لا يبدأ هذا الفحص Magento أبدًا ولا ينفّذ تعليمات برمجية من الشجرة المثبّتة. لا تملك الحاوية شبكة، ولا قدرات Linux، ونظام ملفات جذر للقراءة فقط، ونقطة تثبيت هدف للقراءة فقط.
make validate TARGET=/absolute/path/to/magento
الحكم المتوقع عند التصحيح الكامل:
Summary: 9/9 controls present
Verdict: FULL_CONTROL_SET_PRESENT
أي شيء أقل يُبلَّغ عنه كـ FULL_CONTROL_SET_NOT_CONFIRMED، وليس تلقائيًا كقابل للاستغلال. أكّد إصدار/نسخة Commerce الدقيقة وطبّق تصحيح Adobe المطابق للإصدار عبر عملية النشر المدعومة.
الاسم الأكثر دقة هو فحص تنفيذ كود المكوّنات بعلامة فقط. يتطلب RCE عن بُعد من طرف إلى طرف طلبًا عن بُعد قياسيًا يُنتج علامته المستقلة أو استدعاءه الرجعي على البنية المختبرة.
راجع الملاحظات التقنية لتدفق البيانات وضوابط التصحيح التسعة وجدول قوة الإثبات. النتائج المختبرة الدقيقة مسجّلة في VALIDATION.md.
استخدم النشرة الرسمية والتصحيح المطابق للإصدار المنشور:
التصحيح المضمّن هنا مُخطَّط مساره فقط لمختبر monorepo العام 2.4.9. لا تطبّقه مباشرةً على تثبيت Composer للإنتاج. لا يزيل التصحيح أيضًا أي برنامج خبيث موجود مسبقًا أو يستعيد بيانات الاعتماد المكشوفة.
make down # preserve volumes
make reset # delete this lab's source, database, and OpenSearch volumes