ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.
الملخص
Shopper هي لوحة إدارية بدون واجهة خلفية (Headless) للتجارة الإلكترونية. في الإصدارات من 2.0.0 وقبل 2.10.1 وفي الإصدارات المسبقة 3.0.0 beta.1 و beta.2، يمكن لموظفي المكتب الخلفي المصادق عليهم والذين يمتلكون إذن رفع المحتوى تخزين وسائط قابلة للتنفيذ على الأصل الخاص بالمسؤول نفسه. في تطبيق 2.x، تتضمن أذونات الرفع ذات الصلة `edit_products` أو `add_brands`، ويسمح `packages/admin/config/media.php` بنوع `image/svg+xml` في كل مجموعة وسائط، بما في ذلك حقول الصور التي يقبل التحقق من صحتها image/* ملفات SVG أيضًا. لا تحتوي مجموعة ملفات المنتجات في `packages/admin/src/Livewire/Components/Products/Form/Files.php` على قيود MIME وتُقبل ملفات `text/html` أيضًا. يتم تقديم الوسائط مضمنة من قرص `public` تحت المسار `/storage/` بنوع المحتوى الخاص بها، دون وجود `Content-Disposition: attachment` أو `Content-Security-Policy`. عندما يفتح المسؤول ملف HTML أو SVG مرفوعًا، يتم تنفيذ الشيفرة البرمجية المخزنة داخل جلسة ذلك المسؤول. في الإصدار 2.x، يمكن للشيفرة استدعاء `packages/admin/src/Livewire/SlideOvers/CreateTeamMember.php` الذي يتحقق دالة `store()` فيه من إذن `access_setting` الذي يمتلكه المسؤول المشاهد، لكنه يثق في `role_id` المُقدم من العميل، لإنشاء حساب مسؤول جديد يخضع لسيطرة المهاجم مع كلمة سر مختارة. يستمر هذا الحساب بعد حذف الملف المرفوع ويمنح إمكانية الوصول إلى بيانات العملاء والطلبات والإعدادات وإدارة المستخدمين والأدوار؛ كما يمكن لنفس الشيفرة تسريب البيانات أو منح أذونات لحساب المهاجم. يتم حظر إنشاء الحساب المباشر بواسطة مستخدم الرفع ذي الصلاحيات المنخفضة، لذا يتطلب استغلال الثغرة فتح الملف بواسطة المسؤول. تلغي سلسلة الإصدارات المسبقة 3.x بالفعل ملفات SVG ولكنها لا تزال تسمح بملفات المنتجات القابلة للتنفيذ. تم إصلاح هذه المشكلة في الإصدارات 2.10.1 و 3.0.0-beta.3.
المعالجة
المراجع
- مرجعhttps://github.com/shopperlabs/shopper/security/advisories/GHSA-vmvv-x5cp-2qv6
- مرجعhttps://github.com/shopperlabs/shopper/pull/595
- مرجعhttps://github.com/shopperlabs/shopper/pull/597
- مرجعhttps://github.com/shopperlabs/shopper/commit/12be681db5f603a364d5f03f1974ff2a20e99b99
- مرجعhttps://github.com/shopperlabs/shopper/commit/ad2c5b9b968ff49c37130c6b9d1dba7f20eebbf6
- مرجعhttps://github.com/shopperlabs/shopper/compare/v3.0.0-beta.1...v3.0.0-beta.3
- مرجعhttps://github.com/shopperlabs/shopper/releases/tag/v2.10.1
- مرجعhttps://github.com/shopperlabs/shopper/releases/tag/v3.0.0-beta.3