یک آسیبپذیری از نوع Stored Cross-Site Scripting (XSS) در افزونه محبوب PDF Invoices & Packing Slips for WooCommerce شناسایی شده است. این نقص امنیتی در نسخههای 5.16.2 تا قبل از 5.16.5 وجود دارد و به مهاجمان اجازه میدهد بدون نیاز به احراز هویت (Unauthenticated)، کدهای مخرب خود را در سیستم ذخیره کنند.
جزئیات فنی و نحوه حمله
مهاجم میتواند با استفاده از قابلیت Guest Checkout (ثبت سفارش بدون حساب کاربری)، یک سفارش جعلی ثبت کرده و در فیلدهایی مانند آدرس صورتحساب (Billing Address)، آدرس ارسال (Shipping Address) یا یادداشت سفارش (Customer Order Note)، یک Payload مخرب جاوااسکریپت تزریق کند. این مقادیر در پایگاه داده ذخیره شده و زمانی که مدیر فروشگاه (Administrator) اقدام به مشاهده یا چاپ فاکتور یا برگه بستهبندی (Packing Slip) تولید شده میکند، کد مخرب در مرورگر مدیر اجرا میشود.
از آنجایی که کد در بستر مرورگر مدیر با دسترسیهای بالا اجرا میگردد، این حمله میتواند منجر به Session Hijacking (سرقت نشست) یا Account Takeover (تصاحب حساب کاربری) شود که در نهایت دسترسی کامل مهاجم به مدیریت فروشگاه را فراهم میکند. با وجود اینکه این حمله نیازمند تعامل کاربر (UI:R) است، اما به دلیل ماهیت ذخیره شده (Stored) بودن کد، میتواند بسیار خطرناک باشد.
راهکارهای مقابله و رفع آسیبپذیری
- بهروزرسانی فوری: بهترین راهکار، ارتقای افزونه به نسخه 5.16.5 یا بالاتر است.
- محدودسازی دسترسی: در صورت عدم امکان بهروزرسانی فوری، قابلیت Guest Checkout را غیرفعال کنید تا از ورود دادههای غیرمجاز توسط کاربران ناشناس به فیلدهای آسیبپذیر جلوگیری شود.
- استفاده از WAF: پیکربندی قوانین Web Application Firewall (WAF) برای شناسایی و مسدودسازی تلاشهای تزریق اسکریپت در فیلدهای مربوط به سفارش توصیه میشود.