
این آسیبپذیری در تابع send_file کتابخانه flask میباشد. چنانچه فراخوانی این تابع در ماژول /app/api/exports.py با ورودی نامناسب (دنبالهای از "dot-dot-slash (../)" یا مسیرهای کامل فایلها[1]) انجام شود، میتواند باعث حمله پیمایش مسیر[2] شده و دسترسی به فایلها و دایرکتورهای اختیاری را که خارج از پوشه ریشه وب قرار دارند، میسر سازد.
ریشه این مساله در قطعه کد زیر نشان داده شده است؛ فراخوانی os.path.join برای استفاده با ورودی نامطمئن، امن نیست. هنگامی که os.path.join با استفاده از یک "مسیر کامل" فراخوانی میشود، تمام پارامترهای قبلی را نادیده گرفته و شروع به کار با مسیر کامل جدید میکند.
قطعه کد 1- فراخوانی os.path.join با ورودی نامناسب
مشخصات آسیبپذیری CVE-2022-31571 [1]
ردیف |
عنوان |
مقدار |
1 |
تاریخ انتشار آسیبپذیری |
2022-07-10 |
2 |
تاریخ بروزسانی آسیبپذیری |
2022-07-15 |
2 |
شدت آسیبپذیری (طبقcvss نسخه 3) |
بحرانی (9.3 از 10) |
4 |
نسخه آسیبپذیر |
تا 2019-09-16 |
5 |
نوع ضعف |
Path Traversal |
برای رفع این آسیبپذیر بایستی از اعمال ورودی نامطمئن به تابع آسیبپذیر send_file جلوگیری کرد و در صورتی که مطابق با منطق برنامه این کار ضرورت داشته باشد، میتوان از werkzeug.utils.safe_join برای استفاده از مسیرهای نامطمئن بهره برد یا فراخوانیهای flask.send_file را با فراخوانیهای flask.send_from_directory جایگزین نمود
منابع