تحميل ملف عشوائي مُصادَق عليه يؤدي إلى تنفيذ تعليمات برمجية عن بُعد — تحليل تقني وإعادة إنتاج مُتحكَّم بها لـ CVE-2026-38526 في Webkul Krayin CRM 2.2.x.
رفع ملف عشوائي بعد المصادقة يؤدي إلى تنفيذ تعليمات برمجية عن بُعد — تحليل تقني وإعادة إنتاج مُتحكَّم بها لثغرة CVE-2026-38526 في Webkul Krayin CRM 2.2.x.
CVE-2026-38526 هي ثغرة رفع ملف عشوائي بعد المصادقة تؤثر على Webkul Krayin CRM 2.2.x.
تتعرّض الوظيفة المصابة للاستغلال عبر نقطة نهاية رفع الملفات الخاصة بـ TinyMCE في التطبيق:
POST /admin/tinymce/upload
لا يقيّد التطبيق نوع الملف الذي يمكن رفعه بالقدر الكافي. يمكن لمستخدم مُصادَق عليه إرسال ملف بامتداد قابل للتنفيذ على الخادم، مثل .php. يخزّن التطبيق الملف المرفوع ويعيد عنوان URL الخاص به القابل للوصول.
عندما يسمح النشر بتنفيذ PHP من موقع الرفع، يمكن بعد ذلك طلب الملف المرفوع عبر خادم الويب، مما يؤدي إلى تنفيذ تعليمات برمجية عن بُعد في سياق عملية تطبيق الويب.
يُصنّف سجل CVE المنشور الثغرة بتقييم CVSS 3.1: 9.9 (حرجة).
يحتوي هذا المستودع على تحليلي التقني وإعادة إنتاجي المُتحكَّم بها للثغرة.
كانت الثغرة قد أُفصِح عنها علنًا بالفعل تحت CVE-2026-38526. لا يدّعي هذا العمل اكتشاف الثغرة. كان الغرض من هذا البحث هو فهم التنفيذ المصاب، وإعادة إنتاج مسار الاستغلال في بيئة مُتحكَّم بها، ودراسة الظروف التي تحوّل مشكلة رفع الملفات إلى تنفيذ تعليمات برمجية عن بُعد.
استُخدمت الثغرة أيضًا في جهاز Hack The Box GCSB 2026 Nexus، مما وفّر بيئة عملية لدراسة المشكلة.
المنتج: Webkul Krayin CRM الإصدارات المتأثرة: 2.2.x الثغرة: رفع ملف عشوائي الأثر الناتج: تنفيذ تعليمات برمجية عن بُعد المصادقة: مطلوبة متجه الهجوم: الشبكة CWE: CWE-434 — الرفع غير المقيّد لملف من نوع خطير CVSS: 9.9 حرجة CVE: CVE-2026-38526
تتولّى الوظيفة المصابة ما يلي:
/admin/tinymce/upload
تقبل نقطة النهاية ملفًا مرفوعًا عبر المعامل file. تستمد منطقية التطبيق ذات الصلة اسم الملف المخزَّن من اسم الملف الأصلي وتحتفظ بامتداده الأصلي.

هذا السلوك مهم لأن التطبيق لا يقبل ببساطة كائنًا مرفوعًا؛ بل يحتفظ بامتداد قابل للتنفيذ يتحكم به المهاجم ويجعل الكائن الناتج قابلًا للوصول عبر آلية تخزين التطبيق.
المشكلة الأساسية هي عدم كفاية التحقق من جانب الخادم على الملفات المرفوعة.
يستخدم التطبيق الامتداد الأصلي المقدَّم من العميل عند إنشاء اسم الملف المخزَّن. لا توجد قائمة سماح مقيّدة بالقدر الكافي تمنع أنواع الملفات القابلة للتنفيذ من الوصول إلى طبقة التخزين.
التدفق ذو الصلة هو

لا يعالج استخدام اسم ملف مُولَّد المشكلة الجوهرية.
على سبيل المثال، تحويل shell.php إلى اسم ملف مُولَّد مثل .php لا يجعل الملف المرفوع آمنًا إذا استمر الخادم في تفسير ملفات .php كتعليمات PHP برمجية قابلة للتنفيذ.
لا يعني الرفع غير المقيّد تلقائيًا تنفيذ تعليمات برمجية عن بُعد.
يعتمد مسار التنفيذ على تعامل الخوادم مع الملف المرفوع.
في سيناريو النشر المصاب، تصبح السلسلة
