جديد: تقرير SANS ICS/OT للأمن السيبراني لعام 2025 متاح الآن

احصل على التقرير
نستخدمُ الذكاء الاصطناعي في ترجمات الموقع، ومع أننا نسعى جاهدين لبلوغ الدقة قد لا تكون هذه الترجمات دقيقةً بنسبة 100% دائمًا. تفهّمك لهذا الأمر هو موضع تقدير لدينا.

CVE-2025-32432: تنفيذ رمز عن بُعد غير مصدق في Craft CMS

ب OPSWAT
شارك هذا المنشور
باحثان من برنامج زمالة الدراسات العليا في مجال أمن البنية التحتية OPSWAT على خلفية زرقاء

في أبريل 2025، اكتشفت Orange Cyberdefense ثغرة أمنية خطيرة في Craft CMS أثناء التحقيق في حادثة، والتي يتم تتبعها الآن تحت الرمز CVE-2025-32432. تتيح هذه الثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) غير مصدق عليها، مع درجة خطورة قصوى تبلغ 10.0 (حرجة) وفقًا لمقياس CVSS v3.1 من قاعدة بيانات الثغرات الأمنية الوطنية (NVD).

كجزء من برنامج زمالة الخريجين في مجال أمن البنية التحتيةOPSWAT أجرى زملاؤنا دراسة شاملة لهذه الثغرة الأمنية، بما في ذلك إعادة إنتاج الاستغلال، والتحقق من تأثيره، وتقييم المخاطر التنظيمية، وتحليل استراتيجيات الحماية الموصى بها.

يقدم هذا المدونة تحليلاً شاملاً ومتعمقاً لـ CVE-2025-32432، حيث يحلل أسبابه الجذرية وتدفق الاستغلال وآثاره الأمنية الأوسع نطاقاً، مع تقديم إرشادات عملية للمؤسسات للدفاع ضد هذا التهديد.

CVE-2025-32432 مقدمة

يؤثر CVE-2025-32432 على إصدارات Craft CMS من 3.0.0-RC1 إلى 3.9.14، ومن 4.0.0-RC1 إلى 4.14.14، ومن 5.0.0-RC1 إلى 5.6.16. تم تصنيف هذا الخلل على أنه CWE-94: حقن التعليمات البرمجية، وينشأ عن المعالجة غير السليمة للمدخلات غير الموثوقة، مما يؤدي في النهاية إلى تمكين RCE غير المصادق عليه.  

مقاييس CVSS 3.x لثغرة أمنية في Craft CMS تسمح بتنفيذ تعليمات برمجية عن بُعد CVE-2025-32432 تظهر درجات أساسية حرجة

نظام إدارة المحتوى Craft CMS وإطار عمل Yii

Craft CMS هو نظام حديث لإدارة المحتوى يمكّن المطورين وفرق المحتوى من إنشاء مواقع ويب مرنة ومخصصة بالكامل بدلاً من الاعتماد على قوالب جامدة ومحددة مسبقًا. مع اعتماده في أكثر من 46,000 موقع ويب حول العالم، فهو مستخدم على نطاق واسع ويشكل هدفًا متكررًا للمهاجمين الباحثين عن نقاط ضعف ذات تأثير كبير.

تم بناء Craft CMS على أساس Yii Framework، وهو إطار عمل PHP سريع وقوي مصمم لتطوير الويب الحديث. يوفر Yii الهيكل الأساسي والأدوات، بينما يوسع Craft CMS نطاقه لتقديم نظام إدارة محتوى مرن.

شعارا Craft CMS و Yii Framework جنبًا إلى جنب، فيما يتعلق بثغرة أمنية في تنفيذ التعليمات البرمجية عن بُعد CVE-2025-32432

إحدى الميزات الأساسية لإطار عمل Yii هي حاوية Dependency Injection (DI). Dependency Injection هو نمط تصميم يزود المكونات بالموارد التي تحتاجها، بدلاً من مطالبتهم ببناء تلك الموارد بأنفسهم. تتميز حاوية DI في Yii بمرونة عالية، وهي قادرة على بناء كائنات معقدة من قواعد تكوين بسيطة نسبيًا.

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

تعمق في CVE-2025-32432

يتضمن Craft CMS ميزة تسمى Image Transforms، وهي مصممة لتحسين الأداء عن طريق إنشاء صور بحجم مختلف مباشرة على الخادم. بدلاً من تقديم صورة كبيرة بحجم 4.5 ميجابايت لعرضها كصورة مصغرة بحجم 300×300، يقوم Craft CMS تلقائيًا بإنشاء وتقديم نسخة أصغر حجمًا ومحسّنة. يقلل هذا النهج من استخدام النطاق الترددي ويحسن سرعة تحميل الصفحة بشكل كبير.

لجعل هذه الوظيفة متاحة على نطاق واسع، يعرض Craft CMS نقطة النهاية actions/assets/generate-transform دون الحاجة إلى المصادقة. وفي حين أن هذا يضمن أن المستخدمين المصادق عليهم والمجهولين على حد سواء يمكنهم الاستفادة من الصور المحسّنة، فإنه يوفر أيضًا سطح هجوم يمكن الوصول إليه بشكل عام حيث يمكن لأي شخص تقديم مدخلات مصممة خصيصًا للتطبيق.

مقتطف من كود Craft CMS AssetsController يوضح منطق allowAnonymous ذي الصلة بثغرة CVE-2025-32432

من خلال تحليل مفصل لسير العمل هذا، توصل زملاؤنا إلى أن الطريقة AssetsController::actionGenerateTransform يتم استدعاؤها كلما تم إرسال طلب POST إلى نقطة النهاية المكشوفة. تسترد هذه الوظيفة معلمة المقبض مباشرة من نص الطلب وتقوم بإعادة توجيهها إلى المرحلة التالية لمزيد من المعالجة.

لقطة شاشة لرمز PHP الخاص بـ Craft CMS المتعلق بتحليل ثغرة أمنية في تنفيذ التعليمات البرمجية عن بُعد CVE-2025-32432

في الخطوة التالية، يتم استدعاء الأسلوب ImageTransforms::normalizeTransform(). يأخذ هذا الأسلوب المعلمة handle التي يوفرها المستخدم ويحولها إلى كائن ImageTransform. ونظرًا لأن الكائن يتم إنشاؤه مباشرةً من مدخلات غير موثوقة، فإن هذا يمثل نقطة خطر حرجة في تدفق التنفيذ.

مقتطف من كود PHP من Craft CMS يتعلق بتحليل ثغرة أمنية في تنفيذ الكود عن بعد CVE-2025-32432

خلال هذه العملية، يتم دمج جميع أزواج القيم الرئيسية من المصفوفة $transform التي يتحكم فيها المستخدم (والتي تنشأ من معلمة handle) في مصفوفة تكوين. ثم تقوم طريقة normalizeTransform بتمرير هذه المصفوفة إلى Craft::createObject()، المسؤولة عن إنشاء مثيل جديد لكائن ImageTransform.

مقتطف من الكود يوضح منطق Craft CMS ذي الصلة بثغرة تنفيذ الكود عن بُعد CVE-2025-32432

تنبع هذه الثغرة الأمنية من الطريقة التي تعالج بها Craft::createObject() ( التي تغلف Yii::createObject() في Yii) مصفوفات التكوين. ونظرًا لأن هذه الآلية تستخدم حاوية DI لإنشاء وتكوين الكائنات مباشرةً من المصفوفة غير المصدق عليها، فقد يتمكن المهاجمون من السيطرة على عملية إنشاء الكائنات.

رمز PHP مميز يوضح وظيفة createObject ذات الصلة بثغرة CVE-2025-32432 في Craft CMS التي تسمح بتنفيذ التعليمات البرمجية عن بُعد.

عندما يتم تمرير حمولة ضارة، يقوم منشئ الكائن (الموروث من فئة Model ) باستدعاء طريقة App::configure().

كود PHP مميز يوضح منطق منشئ Craft CMS المتعلق بثغرة تنفيذ الكود عن بعد CVE-2025-32432

تكرر هذه الطريقة كل خاصية في المصفوفة التي يتحكم فيها المهاجم وتعيّنها إلى الكائن الجديد.

مقتطف من كود PHP يوضح وظيفة التهيئة، ذات الصلة بثغرة أمنية في Craft CMS تسمح بتنفيذ كود عن بعد CVE-2025-32432

When App::configure() assigns properties from the attacker-controlled configuration array, most keys are mapped directly onto the object. However, if a key begins with the prefix as, the assignment is routed through Component::__set, Yii’s magic setter. This method interprets as <name> as an instruction to attach a behavior (mixin) to the object.

يمكن تصميم أحد هذه الحمولات الضارة لاستغلال الطريقة التي يعالج بها Component::__set الخصائص المسبوقة بـ as، مثل as exploit:

لقطة شاشة للكود تظهر الحمولة الاستغلالية لثغرة CVE-2025-32432 في نظام Craft CMS التي تسمح بتنفيذ الأكواد عن بُعد

من تحليلنا، يتضمن تنفيذ Component::__set إجراءً وقائياً: عندما يتم إرفاق سلوك من خلال خاصية كهذه، يتحقق الإطار من أن الفئة المحددة في مصفوفة التكوين هي فئة فرعية صالحة لـ yii\base\Behavior. يهدف هذا الفحص إلى منع إرفاق فئات عشوائية مباشرة بالمكونات.

رمز PHP مميز من Craft CMS يظهر المنطق المرتبط بثغرة CVE-2025-32432 في تنفيذ التعليمات البرمجية عن بُعد

ومع ذلك، فإن هذه الحماية ليست فعالة كما تبدو. وتكمن نقطة الضعف في كيفية تعامل Yii::createObject مع مصفوفات التكوين.

عند إنشاء مثيل لكائن، يعطي Yii::createObject الأولوية للمعلمة الخاصة __class. إذا كان هذا المفتاح موجودًا، يتم استخدام قيمته كفئة هدف لإنشاء المثيل، ويتم تجاهل مفتاح الفئة القياسي في مصفوفة التكوين.

مقتطف من كود PHP يوضح منطق إنشاء الكائنات المتعلق بثغرة CVE-2025-32432 في Craft CMS التي تسمح بتنفيذ كود عن بُعد

يمكن للمهاجم إنشاء حمولة لسلوك الاستغلال تتضمن مفتاحين:

  1. 'class' => '\craft\behaviors\FieldLayoutBehavior' - فئة شرعية تمتد yii\base\Behavior. توجد هذه القيمة فقط لتلبية متطلبات فحص is_subclass_of في Component::__set، مما يسمح باستمرار التنفيذ دون إثارة أي خطأ.
  2. '__class' => '\yii\rbac\PhpManager' - الهدف الفعلي للمهاجم. هذه هي فئة "الأداة" التي يريدون إنشاء مثيل لها.

عند تنفيذ الكود، يجتاز Component::__set فحص الأمان لأنه يفحص مفتاح الفئة فقط. ومع ذلك، عندما يستدعي إطار العمل لاحقًا Yii::createObject لإرفاق السلوك، فإنه يعطي الأسبقية لـ __class، مما يؤدي إلى إنشاء مثيل الكائن \yii\rbac\PhpManager الذي اختاره المهاجم بدلاً من ذلك.

استخدام \yii\rbac\PhpManager هو أمر مقصود. لا يكفي إنشاء كائن فقط للاستغلال؛ لتحقيق RCE، يلزم وجود فئة أداة ذات آثار جانبية يمكن استخدامها كسلاح. يعد PhpManager هدفًا شائعًا في هجمات POI (PHP Object Injection) بسبب تدفق التهيئة الخاص به. عند الإنشاء، تستدعي طريقة init() الخاصة به load()، والتي تستدعي بدورها loadFromFile($this->itemFile). من خلال التحكم في $this->itemFile، يمكن للمهاجم إجبار التطبيق على تحميل ملف ضار، وتحويل إنشاء الكائن إلى تنفيذ كود.

تدفق كود PHP مميز يوضح ثغرة CVE-2025-32432 Craft CMS في تنفيذ الكود عن بُعد مع تضمين الملفات

يكمن الخطر في طريقة loadFromFile. في PHP، يقوم require بتنفيذ الملف المستهدف كرمز، لذا إذا كان المهاجم يتحكم في مسار الملف، فيمكنه تشغيل تنفيذ رمز عشوائي.

لوضع رمز ضار على الخادم، يستغل المهاجم ملفات جلسة PHP. عن طريق حقن PHP في معلمة الطلب، يقوم Craft CMS بحفظ الحمولة في ملف جلسة أثناء عملية إعادة التوجيه. لاحقًا، عندما يقوم PhpManager بتحميل هذا الملف، يمكن تنفيذ رمز المهاجم.

مخطط انسيابي يوضح عملية استغلال ثغرة أمنية في نظام Craft CMS تسمح بتنفيذ تعليمات برمجية عن بُعد (CVE-2025-32432)

تعمل سلسلة الهجوم الكاملة على ثلاث مراحل. أولاً، يزرع المهاجم PHP ضارًا عن طريق إرسال عنوان URL مصمم خصيصًا، والذي يحفظه Craft CMS في ملف جلسة. بعد ذلك، يستغلون تجاوز __class في نقطة نهاية تحويل الصورة لتحميل أداة PhpManager وتوجيهها نحو ملف الجلسة الملوث. أخيرًا، عندما يقوم PhpManager بتحميل الملف، يتم تنفيذ حمولة المهاجم، مما يمنحه RCE والتحكم الكامل في الخادم — غالبًا من خلال webshell أو reverse shell.

مخطط انسيابي يوضح ثغرة CVE-2025-32432 في نظام Craft CMS التي تسمح بتنفيذ التعليمات البرمجية عن بُعد باستخدام JSON وخطوات الهجوم
إخراج المحطة الطرفية يظهر خطوات استغلال الثغرة الأمنية CVE-2025-32432 في نظام Craft CMS التي تسمح بتنفيذ التعليمات البرمجية عن بُعد.
محطة طرفية تظهر استغلال CVE-2025-32432 Craft CMS لتنفيذ التعليمات البرمجية عن بُعد مع وصول إلى shell كمستخدم www-data

التخفيف والمعالجة

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

تقوم OPSWAT وهي تقنية خاصةبمنصة MetaDefender®، بتلبية هذه الحاجة من خلال توفير قائمة بجميع مكونات البرامج والمكتبات وحاويات Docker والتبعيات المستخدمة. وهي تتيح للمؤسسات تتبع مكوناتها وتأمينها وتحديثها بشكل استباقي.

واجهة مستخدم الفحص الأمني تظهر أرشيف Craft CMS المحظور الذي يحتوي على ثغرات أمنية خطيرة لتخفيف CVE-2025-32432
لوحة معلومات الأمان التي تعرض تفاصيل الثغرة الأمنية CVE-2025-32432 في Craft CMS المتعلقة بتنفيذ التعليمات البرمجية عن بُعد وإجراءات الإصلاح

في المثال أعلاه، قامتتقنية SBOM في MetaDefender بمسح حزمة nginx-ingress-controller التي تحتوي على الثغرة الأمنية CVE-2025-32432. قام النظام تلقائيًا بتمييز المشكلة على أنها حرجة وقدم إرشادات حول الإصدارات الثابتة المتاحة، مما مكن الفرق من تحديد الأولويات بسرعة وتصحيح الثغرة الأمنية قبل أن يتم استغلالها.

OPSWAT متوفر في MetaDefender Core و MetaDefender Software Chain™،مما يتيح لفرق الأمن تحديد الثغرات الأمنية والتصرف بشأنها بشكل أسرع. باستخدام OPSWAT يمكن لفرق الأمن:

  • تحديد المكونات المعرضة للخطر بسرعة - تحديد المكونات مفتوحة المصدر المتأثرة بهجمات إزالة التسلسل على الفور. وهذا يضمن اتخاذ إجراءات سريعة إما لتصحيح أو استبدال المكتبات المعرضة للخطر. 
  • ضمان إجراء التصحيحات والتحديثات بشكل استباقي - مراقبة المكونات مفتوحة المصدر باستمرار من خلال OPSWAT للبقاء في صدارة مكافحة ثغرات إزالة التسلسل. يمكن لـ OPSWAT اكتشاف المكونات القديمة أو غير الآمنة، مما يتيح إجراء التحديثات في الوقت المناسب وتقليل التعرض للهجمات. 
  • الحفاظ على الامتثال وإعداد التقارير – يساعد OPSWAT المؤسسات على تلبية متطلبات الامتثال، حيث تفرض الأطر التنظيمية بشكل متزايد الشفافية في سلاسل توريد البرمجيات.

هل أنت مستعد لتعزيز سلسلة توريد البرامج الخاصة بك ضد التهديدات الناشئة؟

العلامات:

ابق على اطلاع دائم OPSWAT!

اشترك اليوم لتلقي آخر تحديثات الشركة, والقصص ومعلومات عن الفعاليات والمزيد.