آسیب‌پذیری ارتقای سطح دسترسی در فریمورک DJANGO

آسیب‌پذیری ارتقای سطح دسترسی در فریمورک DJANGO

این ‫آسیب‌پذیری با درجه حساسیت بالا در فریمورک معروف DJANGO با شناسه CVE-2019-19118 در 11 آذر 1398 منتشر شد. مهاجم با بهره‌برداری از این آسیب‌پذیری می‌تواند سطح دسترسی‌ خود را ارتقا داده و دست به عملیات غیرمجاز بزند. نسخه‌های قبل از 2.2.8 و 2.1.5 این فریمورک آسیب‌پذیر هستند. از نسخه 2.1 DJANGO به بعد در یک مدل ادمین DJANGO که یک مدل PARENT با مدل‌های INLINE مرتبطش را نمایش می‌دهد، کاربر اجازه تغییر در مدل PARENT را ندارد اما می‌تواند مدل INLINE را ویرایش کند؛ در نتیجه یک VIEW فقط-خواندنی برای مدل PARENT و یک فرم قابل ویرایش برای مدل INLINE نمایش داده می‌شود. این فرم‌ها اجازه تغییرات مستقیم در مدل PARENT را نمی‌دهد اما تابع ()SAVE مدل PARENT را فراخوانی می‌کند و متعاقباً سبب فراخوانی سیگنال HANDLERهای قبل و بعد از ذخیره‌سازی می‌شوند. به عنوان کاربری که اجازه‌ تغییر یک مدل خاص را ندارد و به دنبال آن نباید اجازه فراخوانی سیگنال‌های مربوط به ذخیره‌سازی را داشته باشد، این یک ارتقای سطح دسترسی محسوب می‌شود. برای رفع این آسیب‌پذیری کد رابط ادمین DJANGO که مجوزها را کنترل می‌کند تغییر کرده است. آن دسته از برنامه نویسانی که برنامه‌هایشان تحت تاثیر این تغییر قرار گرفته است بایستی INLINEهای استفاده شده در مدل‌های PARENTرا با فرم‌ها و VIEW هایی که عملکردشان بطور صریح پیاده‌سازی شده است، جایگزین کنند.