افزونه GeoDirectory برای وردپرس با یک آسیبپذیری از نوع Stored Cross-Site Scripting (XSS) مواجه شده است که میتواند منجر به اجرای کدهای مخرب در مرورگر کاربران دیگر شود.
جزئیات فنی آسیبپذیری
این نقص امنیتی (CWE-79) در نحوه پردازش ویژگیهای مربوط به استایل (style attributes) در shortcode نقشههای GeoDirectory ریشه دارد. مهاجم با داشتن یک حساب کاربری با سطح دسترسی Contributor یا بالاتر، میتواند یک کد مخرب را در ویژگیهای استایل این shortcode تزریق کند. از آنجایی که این دادهها قبل از نمایش در خروجی، پاکسازی (Sanitization) یا Escape نمیشوند، کد تزریق شده در پایگاه داده ذخیره میگردد.
سناریوی حمله
حمله زمانی تکمیل میشود که یک کاربر دیگر (مانند مدیر سایت یا بازدیدکننده) محتوای حاوی این shortcode را مشاهده کند. در این لحظه، اسکریپت مخرب در محیط مرورگر قربانی اجرا شده و میتواند منجر به موارد زیر شود:
- سرقت کوکیها و نشستها (Session/Cookie Theft)
- انجام اقدامات غیرمجاز در سطح مدیر (Admin-level actions)
- تغییر محتوای صفحه یا هدایت کاربران به سایتهای مخرب
راهکارهای مقابله و رفع مشکل
سازنده این افزونه وصلهای برای رفع این مشکل منتشر کرده است. اقدامات زیر توصیه میشود:
- ارتقای فوری: افزونه GeoDirectory را به نسخه 2.8.194 یا بالاتر بهروزرسانی کنید. این تنها راه حل قطعی برای رفع نقص در مسیر رندرینگ shortcode است.
- بازرسی محتوا: پس از بهروزرسانی، حتماً پستها، پیشنویسها و نسخههای ذخیره شده (Revisions) را از نظر وجود shortcodeهای مشکوک که دارای ویژگیهای استایل غیرعادی هستند، بازرسی کنید؛ زیرا بهروزرسانی خود به تنهایی کدهای مخرب از پیش ذخیره شده در پایگاه داده را پاک نمیکند.
- محدودسازی دسترسی: تا زمان بهروزرسانی، دسترسی به نقشهای Contributor و بالاتر را تنها به کاربران بسیار مورد اعتماد محدود کنید و پیشنویسهای آنها را پیش از انتشار توسط مدیر بازبینی کنید.