آسیب‌پذیری Django – hijack حساب کاربری از طریق فرم ریست پسورد

آسیب‌پذیری Django – hijack حساب کاربری از طریق فرم ریست پسورد

تاریخ ایجاد

Django یک فریمورک وب سطح بالا به زبان پایتون است. این فریمورک در 18 دسامبر 2018 از رفع #‫آسیب‌پذیری با شناسه CVE-2019-19844 با حساسیت بالا (CVSS 9.8) خبر داد.

1. درباره‌ی این آسیب‌پذیری
کوئری استفاده شده در فرم ریست پسورد Django، برای بازیابی حساب‌های منطبق با ایمیلی که درخواست ریست شدن پسورد را دارد، به بزرگ و کوچک بودن حروف حساس نیست. با توجه به اینکه در بازیابی اطلاعات از پایگاه داده معمولا حروف کوچک به بزرگ و بالعکس تبدیل می‌شوند مهاجمی که ایمیل مربوط به یک حساب کاربری را بداند می‌تواند با ایمیلی که در ظاهر از ایمیل آن حساب کاربری متمایز است ولی در عمل (به دلیل تبدیلات Unicode) بعد از تبدیل حروف بزرگ به کوچک و بالعکس برای تطبیق با اطلاعات پایگاه داده دیگر متمایز نخواهد بود، استفاده کرده و یک توکن معتبر برای ریست کردن پسورد مربوط به حساب کاربری دریافت کند.

2. رفع این آسیب‌پذیری
برای رفع این آسیب پذیری تغییرات زیر در فریمورک Django صورت گرفت:

  • در ریست کردن پسورد بعد از بازیابی حساب‌های کاربری مربوط به ایمیل وارد شده در فرم، برابری آدرس ایمیل در پایتون نیز با استفاده از فرآیند شناسایی-مقایسه پیشنهاد شده در «گزارش فنی Unicode » چک می‌شود.
  • ایمیلهای مربوط به ریست کردن پسوردها به ایمیلی که از پایگاه داده بازیابی شده است ارسال می‌شود نه ایمیلی که در فرم درخواست ریست وارد شده است.

3. نسخه‌های آسیب‌پذیر
نسخه های 3.0، 2.2 و 1.11 و همچنین master branch این فریمورک آسیب‌پذیر هستند. وصله های امنیتی در آدرس https://www.djangoproject.com/weblog/2019/dec/18/security-releases موجود است. به تمامی کاربران Django توصیه می‌شود تا در اسرع وقت به روز رسانی‌های لازم را انجام دهند.