
تم تحديد ثغرة من نوع البرمجة النصية عبر المواقع المخزّنة (Stored XSS) في vaahcms، وتحديدًا داخل التفاعل بين منطق رفع الملفات في MediaController.php وطريقة storeAvatar() في UserBase.php، مما يسمح لمستخدم مسجّل بمستوى منخفض برفع ملف SVG خبيث يحتوي على JavaScript مضمّنة. تنبع الثغرة من تخزين الملف قبل التحقق من المحتوى أو نوع MIME، مما يترك الملفات الخبيثة في مسار متوقّع ويمكن الوصول إليه علنًا على الخادم.
تنبع الثغرة من طريقة upload() في MediaController.php
`$path = $request->file($input_file_name) ->storeAs($request->folder_path, $upload_file_name); مما يسمح للمهاجم بتحديد مسار الدليل، وتمكينه من وضع ملفات خبيثة (مثل SVG محمّل بـ XSS) مباشرة في الدليل public/، مما يجعل الحمولة متاحة فورًا عبر متصفح الويب.
الاستغلال الناجح يسمح للمهاجم بالتحكم في محتوى واسم ملف يتم كتابته في مسار تخزين عام (/storage/media/YYYY/MM/<controlled-filename>.svg). إذا تم عرض ملف SVG العام هذا لاحقًا بواسطة متصفح المستخدم عبر `` أو <object> أو رابط مخصّص، فسيتم تنفيذ البرنامج النصي المضمّن، مما يؤدي إلى XSS دائم.
POST /backend/vaah/manage/media/upload
/storage/media/YYYY/MM/<controlled-filename>.svg.{"success": false, "errors": ["Unable to decode input"]}).POC.svg).xss.svg)./storage/media/2025/08/xss.svg.
enshrined/svg-sanitize للـ PHP)الباحث: Thaw Phone Nyo
تاريخ الإفصاح: 2025/10/8