في التسلسل الهرمي لثغرات PHP, حقن حاوية الحقن الاعتمادية (DI) حقن الحاوية تقع في القمة - معقدة في الكشف، وأنيقة في الاستغلال، ومدمرة في التأثير.
الكشف عن CVE-2025-32432 الاستهداف حرفة CMS (وبالتالي، فإن إطار عمل Yii2) بمثابة تذكير قاسٍ: عندما تتحكم مدخلات المستخدم في إنشاء الفئة، فإن التطبيق ينتمي إلى المهاجم.
في حين أن العديد من الماسحات الضوئية الأمنية أشارت إلى هذا الأمر على أنه "مشكلة في التهيئة"، إلا أن نخبة مهندسي الأمن يدركون ذلك على حقيقته: تنفيذ التعليمات البرمجية عن بُعد (RCE) عبر إلغاء تسلسل الكائنات غير الآمن. تُجري هذه المقالة تشريحًا تقنيًا للثغرة، وتعيد بناء سلسلة الأداة وتوضح كيف أن التحليل القائم على الذكاء الاصطناعي هو الطريقة الوحيدة لاكتشاف هذه العيوب المنطقية على نطاق واسع.
بنية الفشل: داخل حاوية Yii2
لفهم CVE-2025-32432، يجب أن تفهم قلب Yii2: إن yii\\\di\\Container.
يعتمد نظام إدارة المحتوى Craft CMS على حاوية DI الخاصة بـ Yii2 لإدارة تبعيات الفئات. تسمح الحاوية للمطورين بتكوين الكائنات باستخدام المصفوفات. على سبيل المثال:
PHP
// الاستخدام الشرعي $object = Yii::createObject([ 'class' => 'app\\\models\\\User'، 'name' => 'Admin'،]);
تنشأ الثغرة عندما يتمكن المهاجم من التأثير على مصفوفة التكوين هذه. إذا كان إجراء وحدة التحكم يأخذ مدخلات JSON الخام ويمررها بشكل أعمى إلى Yii::createObject() أو Yii::$container-> ضبط()، يمكن للمهاجم أن يجبر التطبيق على إنشاء أي فئة متاح في مسار التحميل التلقائي، مع أي عقار القيم.
سطح الهجوم
يكمن الخلل عادةً في وحدات التحكم في نظام إدارة المحتوى الحرفية التي تتعامل مع طلبات واجهة برمجة التطبيقات أو تكوينات المكوّنات الإضافية حيث يركز تعقيم المدخلات على XSS (علامات HTML) بدلاً من المنطق (تعريفات الفئات).
- المصدر: JSON المقدمة من المستخدم (على سبيل المثال,
POST / الإجراءات/إجراءات/المكوِّن الإضافي الضعيف/حفظ التكوين). - المغسلة:
Yii::createObject($userInput).

بناء سلسلة القتل: سلسلة القتل
يتطلب الاستغلال إيجاد الأداة-فئة تقوم بعمليات خطيرة (مثل كتابة الملفات أو تنفيذ الأوامر) في أساليب دورة حياتها (__ البناء, ابدأ, __التدميرأو __إيقاظ).
في سياق CVE-2025-32432، نستفيد من سلسلة أدوات شائعة موجودة في نظام Yii2 البيئي تتضمن yii\\rest\\IndexAction أو الأصناف المماثلة ذات الاستدعاء الثقيل.
المفهوم
نريد إنشاء فئة تسمح لنا بتنفيذ دالة رد نداء PHP (مثل النظام أو التنفيذ) على وسيطة مزودة.
حمولة JSON المسلحة
فيما يلي إثبات نظري للمفهوم (PoC) يوضح كيفية تشغيل RCE عن طريق حقن تعريف فئة خبيثة.
JSON
{"rce_trigger": {"class": "yii\\\\rest\\\\IndexAction", "checkAccess": "system", "id": "rce"، "وحدة تحكم": { "فئة": "yii\\\\web\\\\Controller", "id": "dummy" }، "modelClass": "yii\\\\base\\\\Model"، "تشغيل": "معرف؛ uname -a" } }
تفاصيل الحمولة:
الفئة: نوجه حاوية DI إلى إنشاءyii\\rest\\IndexAction.التحقق من الوصول: هذه هي خاصيتنا الخطيرة. في هذه الأداة المحددة، فإنالتحقق من الوصولصُممت الخاصية للاحتفاظ بخاصية قابلة للاستدعاء. نضبطها علىالنظام.- تشغيل التنفيذ: عندما يقوم التطبيق بمعالجة هذا الكائن (غالبًا خلال
تشغيل()تنفيذ الأسلوب أو التحقق من صحة الخاصية)، فإنه يستدعي رد النداء المخزن فيالتحقق من الوصولبالوسائط التي يوفرها السياق (أو المهاجم). - النتيجة: يقوم الخادم بتنفيذ
النظام('id؛ uname -a').
ملاحظة: في بيئة محصنة، قد يربط المهاجمون هذا الأمر مع yii\\التخزين\فيليكاش\فيليكاش لكتابة قذيفة ويب PHP إلى شبكة الويب/ الدليل.
لماذا تفتقد الماسحات الضوئية التقليدية
من المعروف أن الكشف عن CVE-2025-32432 أمر صعب بالنسبة لأدوات DAST القديمة.
- لا يوجد توقيع: الحمولة هي JSON صالحة. لا تحتوي على بناء جملة حقن SQL (
' أو 1=1) أو علامات XSS (<script>). - تعتمد على السياق: لا تكمن الثغرة في المدخلات نفسها، بل في كيف يفسر الإطار
الفئةالمفتاح. لا يفهم الماسح الضوئي القياسي أنالفئةالخرائط إلىYii::إنشاء كائن.
الكشف القائم على الذكاء الاصطناعي: ميزة Penligantent
هذا هو المكان Penligent.ai يغير النموذج. يستخدم Penligent وكلاء الذكاء الاصطناعي الواعي بالسياق التي تفهم المنطق الخاص بإطار العمل.
- الاعتراف الإطاري: يحدد وكلاء Penligent أن الهدف يقوم بتشغيل Craft CMS / Yii2. يعرف "الأحواض الخطرة" الخاصة بهذا الإطار (على سبيل المثال,
Yii::إنشاء كائن). - الاستدلال المنطقي: بدلاً من التشويش الأعمى، يقوم الذكاء الاصطناعي بتحليل مخطط واجهة برمجة التطبيقات. إذا رأى كائن JSON يقبل معلمات شبيهة بالتكوين، فإنه يحقن بذكاء "حمولات فحص" - مثل محاولة إنشاء فئة حميدة مثل
yii\\\helpers\\VarDumper-لاختبار ما إذا كان يمكن الوصول إلى الحاوية. - التحقق الآلي: إذا نجح المسبار (على سبيل المثال، يتصرف التطبيق بشكل مختلف أو يُرجع خطأً محددًا يشير إلى إنشاء الفئة)، يقوم Penligent بوضع علامة على نقطة النهاية على أنها عرضة ل حقن الحاوية ويُنشئ حمولة RCE المحددة للتحقق من صحة الإصلاح.
الإصلاح والدفاع
لتأمين نظام إدارة المحتوى Craft CMS ضد CVE-2025-32432 وهجمات DI المماثلة:
- التحقق الصارم من النوعية: لا تمرر أبدًا مصفوفات إدخال المستخدم الخام إلى
Yii::إنشاء كائن. تحقق دائمًا من أنالفئةإما أن يكون المفتاح غائبًا (مشفّرًا في الواجهة الخلفية) أو مدرجًا في قائمة المسموح به بشكل صارم. - تحديث نظام إدارة المحتوى الحرفية: قم بتطبيق أحدث التصحيحات على الفور. من المحتمل أن يكون البائع قد قام بتشديد
العملمنطق المعالجة لرفض تعريفات الفئات الاعتباطية. - تعطيل الوظائف الخطرة: في
php.ini، استخدمتعطيل_الوظائفلحجبالنظام,التنفيذ,باسسترووproc_openللتخفيف من تأثيرات الاحتكار الاحتكاري.
الخاتمة
CVE-2025-32432 هو تذكير صارخ بأن أطر عمل PHP الحديثة، رغم قوتها، إلا أنها تقدم أسطح هجوم معقدة. حقن الحاويات هو "حقن SQL في عشرينيات القرن العشرين" - وهو عيب منطقي يمنح التحكم الكامل.
بالنسبة لمهندسي الأمان، الدرس واضح: إذا سمحت للمستخدمين بتحديد الكائنات، فسوف يحددون تدميرك. لم يعد التحقق من صحة "شكل" البيانات كافياً؛ يجب عليك التحقق من صحة "النوع".

