مخزن akashtalole/python-flask-restful-api در GitHub تا نسخه 2019-09-16 دارای #آسیبپذیری بحرانی (9.3 از 10) است. این آسیبپذیری در تابع send_file کتابخانه flask یافت میشود. چنانچه فراخوانی این تابع در ماژول /app/api/exports.py با ورودی نامناسب (دنبالهای از "dot-dot-slash (../)" یا مسیرهای کامل فایلها) انجام شود، میتواند باعث حمله پیمایش مسیر شده و دسترسی به فایلها و دایرکتورهای اختیاری را که خارج از پوشه ریشه وب قرار دارند، میسر سازد.
ریشه این مساله در قطعه کد زیر نشان داده شده است؛ فراخوانی os.path.join برای استفاده با ورودی نامطمئن، امن نیست. هنگامی که os.path.join با استفاده از یک "مسیر کامل" فراخوانی میشود، تمام پارامترهای قبلی را نادیده گرفته و شروع به کار با مسیر کامل جدید میکند.
فراخوانی os.path.join با ورودی نامناسب
مشخصات آسیبپذیری CVE-2022-31571
برای رفع این آسیبپذیر بایستی از اعمال ورودی نامطمئن به تابع آسیبپذیر send_file جلوگیری کرد و در صورتی که مطابق با منطق برنامه، این کار ضرورت داشته باشد، میتوان از werkzeug.utils.safe_join برای استفاده از مسیرهای نامطمئن بهره برد یا فراخوانیهای flask.send_file را با flask.send_from_directory جایگزین نمود.
منابع خبر:
https://nvd.nist.gov/vuln/detail/CVE-2022-31571#range-8131144
https://github.com/akashtalole/python-flask-restful-api/issues/2
- 179