یک آسیبپذیری بحرانی در PYTHON-FLASK-RESTFUL-API وجود دارد.
منبع : مرکز ماهر
یک آسیبپذیری بحرانی در PYTHON-FLASK-RESTFUL-API وجود دارد.
به گزارش افتانا (پایگاه خبری امنیت فناوری اطلاعات)، مخزن akashtalole/python-flask-restful-api در GitHub تا نسخه ۲۰۱۹-۰۹-۱۶ دارای آسیبپذیری بحرانی (۹.۳ از ۱۰) است.
این آسیبپذیری در تابع send_file کتابخانه flask یافت میشود. چنانچه فراخوانی این تابع در ماژول /app/api/exports.py با ورودی نامناسب (دنبالهای از "dot-dot-slash (../)" یا مسیرهای کامل فایلها) انجام شود، میتواند باعث حمله پیمایش مسیر شده و دسترسی به فایلها و دایرکتورهای اختیاری را که خارج از پوشه ریشه وب قرار دارند، میسر سازد.
ریشه این مسئله در قطعه کد زیر نشان داده شده است؛ فراخوانی os.path.join برای استفاده با ورودی نامطمئن، امن نیست. هنگامی که os.path.join با استفاده از یک «مسیر کامل» فراخوانی میشود، تمام پارامترهای قبلی را نادیده گرفته و شروع به کار با مسیر کامل جدید میکند.
فراخوانی os.path.join با ورودی نامناسب
برای رفع این آسیبپذیر باید از اعمال ورودی نامطمئن به تابع آسیبپذیر send_file جلوگیری کرد و در صورتی که مطابق با منطق برنامه، این کار ضرورت داشته باشد، میتوان از werkzeug.utils.safe_join برای استفاده از مسیرهای نامطمئن بهره برد یا فراخوانیهای flask.send_file را با flask.send_from_directory جایگزین کرد.