رأس القلم
كالي
ل AMD64
ماك
ل ARM64
ماك
قريباً
النوافذ
قريباً

تشريح CVE-2025-32432: تسليح حقن حاوية Yii2 في نظام إدارة المحتوى الحرفية

في التسلسل الهرمي لثغرات الويب، هناك القليل من الأشياء التي تسترعي الانتباه الفوري لمشغل الفريق الأحمر مثل حقن كائن PHP (POI) نقطة النهاية المكشوفة للمستخدمين غير المصادق عليهم.

CVE-2025-32432 هو ذلك بالضبط. مع درجة CVSS v3.1 من 10.0، فإن هذه الثغرة في نظام إدارة المحتوى Craft CMS ليست مجرد خطأ آخر؛ بل هي درس رئيسي في كيفية استخدام حاويات حقن الاعتمادية الحديثة (DI) كسلاح ضد التطبيقات التي تدعمها.

بالنسبة للمهندس الأمني المتمرس في مجال الأمن الإلكتروني، فإن ما يهمه هنا ليس فقط آلية الإنفاذ من قبل RCE - بل الآلية. إنه يسلط الضوء على فشل أساسي في كيفية إطار عمل Yii2 (التي تشغل Craft) تتعامل مع مصفوفات التكوين التي يتم تمريرها عبر مدخلات المستخدم. سيحلل هذا التحليل تتبع مكدس الثغرات، وسلاسل الأدوات المحددة المطلوبة للاستغلال، ولماذا يمثل هذا النوع من مكافحة التطرف العنيف نقطة الانهيار بالنسبة للماسحات الضوئية التقليدية DAST، مما يستلزم ظهور عوامل هجومية تعتمد على الذكاء الاصطناعي.

العيب المعماري: عندما يخطئ التصميم المعماري: عندما يخطئ التصميم المعماري

لفهم CVE-2025-32432، يجب فهم بنية نظام إدارة المحتوى Craft CMS. تعتمد كرافت بشكل كبير على أنماط حقن التبعية ومحدد موقع الخدمة في Yii2.

تكمن نقطة الضعف في مراقب الأصولوبالتحديد إجراء توليد التحويل الطريقة. صُممت نقطة النهاية هذه للسماح للواجهة الأمامية بطلب تحويلات الصور (الاقتصاص وتغيير الحجم) أثناء التنقل.

الحوض الضعيف

يتبع تدفق التعليمات البرمجية مسارًا خطيرًا من إدخال المستخدم مباشرةً إلى إنشاء الكائن.

  1. الابتلاع: تقبل وحدة التحكم طلب POST يحتوي على التحويل المصفوفة.
  2. التطبيع: يتم تمرير البيانات إلى الحرف اليدوية::$app->getAssetTransforms() ->normalizeTransform().
  3. التنفيذ (الحوض): تستدعي الطريقة في النهاية حرفة::إنشاء كائن($config).

في Yii2, إنشاء كائن غلافًا قويًا. إذا كان $config تحتوي المصفوفة على الفئة سيحاول Yii2 إنشاء ذلك الصنف المحدد، وملء خصائصه العامة بمفاتيح المصفوفة المتبقية.

PHP

'/// تدفق الثغرة المبسط التدفق العام الدالة العامة actionGenerateTransform() {$transformId = Craft::$app->getRequest()--getBodyParam('transformId')؛ // يتحكم المهاجم في مصفوفة التكوين بالكامل $transformConfig = Craft::$app->getRequest()--getBodyParam('transform');

// خطأ فادح: لا يوجد تحقق من صحة القائمة البيضاء على معلمة "الفئة
$object = Craft::createObject($transformConfig);

إرجاع $object->transform();

}`

هذا هو تعريف إلغاء التسلسل غير الآمن (CWE-502)، على الرغم من أنه يستخدم تكوين JSON/Array بدلاً من التكوين الأصلي إلغاء التسلسل(). والنتيجة متطابقة: المهاجم يملي تدفق التحكم.

تشريح CVE-2025-32432: تسليح حقن حاوية Yii2 في نظام إدارة المحتوى الحرفية

سلسلة الاستغلال صياغة الأداة

ستفشل البرامج النصية في هذا CVE لأن مجرد توجيه حمولة إلى نقطة النهاية يُرجع 400 طلب سيء. يتطلب الاستغلال الناجح فهمًا دقيقًا لحالة التطبيق.

المرحلة 1: الاستطلاع السياقي (معرّف الأصول)

إن إجراء توليد التحويل الدالة لها تبعية صلبة: فهي تتطلب وجود معرف الأصل (عدد صحيح يمثل صورة تم تحميلها إلى نظام إدارة المحتوى).

إذا كان معرف الأصل غير موجود، يقوم الرمز بإلقاء استثناء قبل تصل إلى الفئات الضعيفة إنشاء كائن اتصل بنا.

  • المصيدة تطلق الماسحات الضوئية التقليدية (Nessus، Nuclei) حمولات عمياء. فهي تستخدم معرفات عشوائية أو لا تستخدم أي معرفات. تتلقى أخطاءً وتضع علامة "آمن" على الهدف.
  • الممر الجانبي يقوم مهاجم (أو عميل) متطور بكشط شفرة مصدر HTML العامة، باحثًا عن أنماط الأصول الحرفية النموذجية (مثل /assets/images/1042/logo.png). العدد الصحيح 1042 هو مفتاح فتح مسار التنفيذ.

المرحلة 2: سلسلة الأدوات

بمجرد إلغاء قفل البوابة باستخدام معرّف أصل صالح، يجب على المهاجم توفير الحمولة. بما أنه يمكننا إنشاء أي نحتاج إلى "أداة" - وهي فئة تُطلِق نشاطًا خبيثًا خلال دورة حياتها (عادةً ما تكون __ البناء, __التدميرأو ابدأ).

في سياق CVE-2025-32432، حدد الباحثون السلاسل التي تستخدم \\غازلة \ عميل \ عميل (إذا كان مثبتًا) أو فئات التخزين المؤقت Yii2 الأصلية.

يتضمن المتجه الشائع استخدام yii\\rbac\PhpManager أو إساءة استخدام عرض العارض لتضمين الملفات المحلية. ومع ذلك، فإن أكثر طرق RCE المباشرة تتضمن الاستفادة من كرافت\\كونفيج كائن مدمج مع أغلفة بروتوكول PHP.

هيكل حمولة الاستغلال:

JSON

{"assetId": "1042"، "تحويل": {"class": "Craft\\\\base\\\\ImageTransform", "العرض": "100"، "الارتفاع": "100"، "التنسيق": "php"، "الجودة": {"الفئة": "yii\\\\rest\\\\IndexAction", "checkAccess": "نظام"، "معرف": "whoami" } } }

ملاحظة: قد تختلف سلسلة الأداة الفعلية بناءً على تبعيات Composer المحددة المثبتة على الخادم، مما يتطلب تعديلًا ديناميكيًا للحمولة.

تسليح حقن حاوية Yii2 في نظام إدارة المحتوى الحرفية

فشل أدوات الأمن الثابتة

تكشف هذه الثغرة عن محدودية الجيل الحالي من أدوات الأمان.

  1. انعدام الجنسية: الماسحات الضوئية التقليدية عديمة الحالة. فهي لا "تتذكر" أنها عثرت على معرّف الأصل على الصفحة الرئيسية و"تقرر" استخدامه في طلب POST بعد 10 دقائق.
  2. عمى السياق: لا يمكنهم استنتاج منطق العمل. فهم يرون أن معرّف الصورة مجرد رقم، وليس مفتاحًا أساسيًا لسلسلة استغلال.

هذا هو المكان الذي تتجه فيه الصناعة نحو الأمن العميل.

الاستدلال الآلي: نهج Penligent

عندما حللنا CVE-2025-32432 في بنليجنت، وجدنا أن معدل نجاح التشويش القياسي كان 0%. وللتحقق من صحة هذه الثغرة بشكل موثوق، كان علينا نشر وكيل ذكاء اصطناعي قادر على التفكير متعدد الخطوات.

إن بنليجنت يوضح سير العمل الخاص بمكافحة التطرف العنيف هذا الفرق بين "المسح" و "اختبار الاختراق":

  1. أخذ البصمات يقوم الوكيل بتحديد X-Powered-By: كرافت CMS الرأس.
  2. التحليل الدلالي: بدلاً من التشويش، يقوم الوكيل بتحليل DOM لصفحة الهبوط. يتعرّف على <img src="..."> ومطابقة بنية عنوان URL لاستخراج معرّفات الأصول المحتملة.
  3. اختبار الفرضيات: يحاول الوكيل طلب تحويل حميد مع المعرف المستخرج. إذا تلقى 200 موافق أو الاستثناء المنطقي (بدلاً من 404)، فإنه يؤكد أن المعرف صالح.
  4. طفرة الحمولة: يقوم الوكيل ببناء حمولة JSON. إذا كان الخادم يقوم بتشغيل إصدار PHP أحدث يقوم بإهمال أغلفة معينة، يقوم الوكيل بتعديل سلسلة الأداة في الوقت الفعلي لمحاولة حقن كائنات بديلة.

هذه القدرة على منطق السلسلة-العثور على مفتاح في الخطوة (أ) واستخدامه في الخطوة (ب)- هو ما يفصل بين القراصنة البشريين (والوكلاء) عن البرامج النصية الآلية.

الإصلاح والدفاع

إذا كنت تدافع عن تثبيت نظام إدارة المحتوى Craft CMS، فيجب اتخاذ إجراء فوري.

1. الترقيع

أصدر البائع التحقق الصارم من الصحة في الإصدارات التالية. تأكد من أنك تقوم بتشغيل:

  • كرافت CMS 3.x -> 3.9.15+
  • كرافت CMS 4.x-4.x -> 4.14.15+
  • كرافت CMS 5.x -> 5.6.17+

2. تهيئة WAF

إذا لم يكن الترقيع ممكنًا على الفور (بسبب تجميد التعليمات البرمجية القديمة)، فيجب عليك حظر ناقل الهجوم المحدد على مستوى WAF.

مثال على قاعدة ModSecurity:

أباتشي

SecRule REQUEST_URI "يحتوي على/إجراءات/الأصول/إنشاء تحويل" \\"المعرف:100001، المرحلة:2، الطور:2، ر:لا شيء، ر:حرف صغير، رفض، الحالة:403، رسالة:'Block Craft CMS RCE CVE-2025-32432'، \\\ سلسلة" SecRule ARGS_POST:تحويل "فئة @rx"

تحظر هذه القاعدة أي طلب لنقطة نهاية التحويل يحاول تحديد معلمة "فئة" في نص POST.

مقارنة قابلية التأثر الشديد (2024-2025)

ولوضع CVE-2025-32432 في سياقها الصحيح، من المفيد مقارنتها مع غيرها من الإخفاقات المعمارية الحديثة في الأطر الرئيسية.

معرّف CVEالهدفالمتجهاتالتعقيدما أهمية ذلك
CVE-2025-32432حرفة CMSحقن الكائناتمتوسطيوضح فشل حاويات DI غير المصادق عليها.
CVE-2024-21626رانكهروب الحاوياتعاليةعيب أساسي في عزل وقت تشغيل الحاوية.
CVE-2024-23897جينكينزقراءة الملفات التعسفيةمنخفضةإساءة استخدام ميزات محلل CLI (args4j).
CVE-2024-3400نظام التشغيل PAN-OS من بالو ألتوحقن الأوامرمنخفضةRCE غير المصادق عليه على أجهزة الأمان الطرفية.

الخاتمة

CVE-2025-32432 هو تذكير بأنه في تطوير الويب الحديث، غالبًا ما تعني كلمة "غني بالميزات" في تطوير الويب الحديث "غني بالميزات". راحة Yii2's Yii2 إنشاء كائن وفرت للمطورين المرونة لكنها سلمت المهاجمين سلاحًا محشوًا.

بالنسبة لمهندس الأمن، تؤكد هذه الثغرة الأمنية على نهاية عصر المسح "التصويب والتصوير". أصبحت الثغرات الأمنية أكثر منطقية وأكثر سياقاً وأكثر اعتماداً على الحالة. يتطلب الدفاع ضدها أدوات يمكنها التفكير والتفكير والتكيف بنفس سرعة المهاجمين.

المراجع والمزيد من القراءة:

شارك المنشور:
منشورات ذات صلة
arArabic