آسیب پذیری در python-flask-restful-api

آسیب پذیری در python-flask-restful-api آسیب‌پذیری CVE-2022-31571 در python-flask-restful-api مخزن akashtalole/python-flask-restful-api در GitHub تا 2019-09-16 یک آسیب‌پذیری بحرانی (9.3 از 10) دارد.

این آسیب‌پذیری در تابع 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  جایگزین نمود

 

 

  منابع

https://cert.ir/news/13409