در نرمافزار مدیریت منابع انسانی و مدیریت ارتباط با مشتری (CRM) موسوم به Horilla، یک آسیبپذیری امنیتی در نسخههای پیش از 2.0.0 شناسایی شده است که به مهاجمان اجازه میدهد از طریق حملات CSRF (جعل درخواست بینسایتی)، تغییرات غیرمجاز در سیستم ایجاد کنند.
جزئیات فنی آسیبپذیری
این نقص امنیتی در مسیر /attendance/approve-validate-attendance-request/ و در تابع approve_validate_attendance_request رخ میدهد. در این بخش از برنامه، تغییراتی در وضعیتهای attendance_validated، is_validate_request_approved و approved_by از طریق متد HTTP GET اعمال میشود. از آنجایی که این عملیات پیش از فراخوانی attendance.save() انجام میگیرد، فریمورک Django نیازی به اعتبارسنجی CSRF برای این اکشن نمیبیند.
سناریوی حمله
یک مهاجم بدون نیاز به احراز هویت (Unauthenticated Attacker) میتواند با طراحی یک درخواست سطح بالا (Top-level request)، مدیرانی که دارای دسترسی attendance.change_attendance هستند و در سیستم وارد شدهاند (Logged-in) را هدف قرار دهد تا بدون اطلاع آنها، درخواستهای حضور و غیاب تایید یا تغییر وضعیت یابند.
راهکار مقابله
- بهروزرسانی نرمافزار Horilla به نسخه 2.0.0 یا نسخههای جدیدتر.
- اطمینان از اینکه تمامی عملیاتی که منجر به تغییر وضعیت دادهها در دیتابیس میشوند، از متدهای ایمن مانند POST استفاده کرده و دارای توکنهای CSRF معتبر باشند.