یک آسیبپذیری از نوع Cross-Site Scripting (XSS) در کامپوننت dmWidget از سیستم مدیریت محتوای (CMS) مبتنی بر PHP به نام Diem شناسایی شده است. این نقص امنیتی به کاربران دارای حساب کاربری با سطح دسترسی پایین (Low-privilege) اجازه میدهد تا از طریق دستکاری آرگومان text در تابع dmBaseLinkTag::text، کدهای مخرب خود را تزریق کنند.
جزئیات فنی و نحوه حمله
این آسیبپذیری (CWE-79) زمانی رخ میدهد که ورودیهای کاربر بدون اعتبارسنجی یا کدگذاری (Sanitization) مناسب در مرورگر قربانی رندر میشوند. برای اجرای موفقیتآمیز این حمله، دو شرط اصلی لازم است:
- احراز هویت (Authentication): مهاجم باید از قبل یک حساب کاربری با سطح دسترسی پایین در سیستم داشته باشد.
- تعامل کاربر (User Interaction): قربانی (که میتواند یک مدیر یا کاربر دیگر باشد) باید با لینک مخرب ساخته شده تعامل داشته باشد یا آن را مشاهده کند.
پس از اجرای اسکریپت در مرورگر قربانی، مهاجم میتواند اقداماتی نظیر سرقت کوکیها (Cookie Theft)، سرقت نشستها (Session Hijacking) یا انجام عملیات غیرمجاز در رابط کاربری (UI) را انجام دهد. با توجه به اینکه Diem از مدل انتشار Rolling Release استفاده میکند، تمامی نسخههای فعال تا کامیت 116974edfb9a5b8bd69cb13586dc62bcdbb485ad در معرض خطر هستند.
وضعیت اصلاحیه و اقدامات پیشنهادی
در حال حاضر، توسعهدهندگان پروژه Diem به این گزارش پاسخ ندادهاند و هیچ اصلاحیه یا پچ (Patch) رسمی برای این مشکل منتشر نشده است. با توجه به نبود اصلاحیه، اقدامات زیر توصیه میشود:
- محدود کردن دسترسی ویرایش متن در
dmWidgetتنها به مدیران مورد اعتماد. - پیادهسازی سیاست امنیت محتوا (Content-Security-Policy یا CSP) برای جلوگیری از اجرای اسکریپتهای Inline و منابع ناشناس.
- استفاده از قوانین WAF برای شناسایی و مسدودسازی Payloadهای مربوط به اسکریپت در پارامترهای ویجت لینک.
- اعمال کدگذاری خروجی (Output Encoding) در قالبها یا افزونههای سفارشی.