در نرمافزار InvoicePlane، که یک اپلیکیشن متنباز (Open Source) برای مدیریت صورتحسابها، مشتریان و پرداختها است، یک نقص امنیتی جدی در مدیریت نشستها (Sessions) شناسایی شده است.
جزئیات فنی آسیبپذیری
در نسخههای پیش از 1.7.2، این سامانه در ابطال привиلیجهای مدیریتی پس از کاهش نقش کاربر (Role Downgrade) شکست میخورد. دلیل این اتفاق این است که Admin_Controller به جای اعتبارسنجی مجدد فیلد ip_users.user_type در پایگاه داده، به مقدار user_type ذخیره شده در Snapshot نشست فعلی کاربر اعتماد میکند.
سناریوی حمله
- زمانی که یک مدیر (Administrator)، سطح دسترسی حساب کاربری مدیر دیگری را کاهش میدهد، نشست فعال (Active Session) کاربر هدف همچنان درخواستهای مدیریتی را مجاز میشمارد.
- کاربری که سطح دسترسی او کاهش یافته است، میتواند همچنان از توابع مدیریتی مانند
Users::form()برای تغییر تنظیمات کاربران یا بازیابی دسترسیهای خود استفاده کند.
راهکار اصلاحی
کاربران و مدیران سیستمهای مبتنی بر InvoicePlane باید سریعاً نرمافزار خود را به نسخه 1.7.2 یا بالاتر بهروزرسانی کنند تا این نقص در منطق احراز هویت برطرف شود.