همونطور که قبلا در این پست بررسی کرده بودیم، OWASP یه نسخه پیش نویس برای بروزرسانی OWASP Top 10 API Security Risks 2019 داده بود و از فعالین در این حوزه خواسته بود تا نظراتشون رو در خصوص این پیش نویس بدن. در نهایت OWASP ، نسخه 2023 برای OWASP Top 10 API Security Risks رو هفته پیش منتشر کرد.
در این پست ابتدا به بررسی نسخه 2023 و در ادامه به بررسی تفاوت های بین دو نسخه 2023 و 2019 پرداختیم.
API1:2023 – Broken Object Level Authorization
APIها اغلب تمایل دارن تا نقاط پایانی که شناسه های شی رو مدیریت میکنن افشاء کنن و امکان حملات روی Object Level Access Control ها رو میدن. مهاجمین با استفاده از این آسیب پذیری ها به منابعی دسترسی دارن که نباید داشته باشن. بنابراین برای هر تابعی که با استفاده از شناسه کاربر به منبع داده دسترسی داره، بررسی مجوز سطح شیء (Object level authorization) ،باید انجام بشه.
API2:2023 – Broken Authentication :
مکانیسم های امنیتی اغلب به درستی پیاده سازی نمیشن و مهاجمین میتونن از اونها برای دور زدن مکانیسم های احرازهویت و جعل استفاده کنن.
API3:2023 – Broken Object Property Level Authorization :
فقدان یا اعتبارسنجی نامناسب مجوز در سطح ویژگی شی (object property level) امکان افشای اطلاعات و دستکاری غیرمجاز رو میده.
API4:2023 – Unrestricted Resource Consumption :
درخواست های API نیاز به یسری منابع مانند پهنای باند ، CPU ، حافظه و مموری دارن و یسری منابع هم بصورت پولی ارائه میشه، مانند خدمات پیامکی ، ایمیل و تاییدیه های بیومتریک و … که به ازای هر درخواست هزینه ای رو شامل میشن. مهاجمین میتونن با استفاده نامحدود از این منابع منجر به حملات DoS یا افزایش هزینه ها بشن.
API5:2023 – Broken Function Level Authorization :
سیاست های کنترل دسترسی پیچیده با سلسه مراتب، گروه و نقش های مختلف که تفکیک مشخصی بین عملکردهای معمولی و مدیریتی نداره، منجر به دور زدن احرازهویت میشه. مهاجم میتونه از این آسیب پذیری برای بدست آوردن منابع سایر کاربران و/یا عملکردهای مدیریتی استفاده کنه.
API6:2023 – Unrestricted Access to Sensitive Business Flows :
اگه یه عملکرد حساسی در برابر اتومیشن آسیب پذیر باشه، شامل این نوع آسیب پذیری هستش. مثلا اگه ما یه سیستمی رو داشته باشیم که امکان خرید بلیط یا ارسال نظر داشته باشه، مهاجم اگه اون ویژگی رو خودکار کنه و این خودکار کردن به فرایند کسب و کار آسیب بزنه، در این دسته قرار میگیره. یه نمونه رایج از این حملات مثلا در زمان فروش خودرو در ایران هستش، که در عرض چند دقیقه ، کل فروش انجام میشه.
API7:2023 – Server Side Request Forgery :
حملات SSRF زمانی رخ میدن که یه API ، یه منبع راه دور رو ، بدون اینکه URI اعتبارسنجی کنه، واکشی میکنه. مهاجم میتونه از این آسیب پذیری سوء استفاده کنه تا برنامه یه درخواستی رو به مسیر دلخواه مهاجم ارسال کنه.
API8:2023 – Security Misconfiguration :
APIها و سیستم هایی که از اونا پشتیبانی میکنن، معمولا برای اینکه APIها رو بیشتر شخصی سازی کنن، یسری پیکربندی پیچیده دارن. این پیچیدگی باعث میشه که مهندسین نرم افزار و DevOPS یسری از این پیکربندی ها رو انجام ندن یا طوری تنظیم کنن که از امنیت کافی برخوردار نباشن در نتیجه در رو برای هکرها باز کنن.
API9:2023 – Improper Inventory Management
سرویس های پیچیده که از چندین API به هم مرتبط استفاده میکنن، مدیریت موجودی ها رو سختتر میکنن و ریسک بالا میبرن. در نتیجه داشتن یه داکیومنت از میزبانها و موجودی ها و نسخه های API میتونه ریسک ها رو کاهش بده.
API10:2023 – Unsafe Consumption of APIs :
توسعه دهندگان اغلب به داده های دریافتی از APIهای شخص ثالث، بیشتر از ورودی کاربران اعتماد میکنن و در نتیجه اقدامات امنیتی کمتری روی اونا انجام میدن. مهاجمین هم بجای اینکه مستقیما برن سراغ APIها ، میرن سراغ این APIهای شخص ثالث.
تفاوت بین دو نسخه :
شکل زیر تفاوت بین دو نسخه رو نشون میده :
موارد بدون تغییر:
در هر دو نسخه 2023 و 2019 ، تعاریف Broken Object Level Authorization و Broken Function Level Authorization و Security Misconfiguration بدون تغییر باقی موندن.
موارد حذف شده:
گزینه های Insufficient Logging & Monitoring و Injection هم در نسخه 2023 حذف شدن. یکی از دلایلی که Injection حذف شده، با توجه به اهمیت و حملاتی که داشته، اینه که این حملات مختص API نیستن و فلسفه T10 که برای APIها هستش رو دربر نمیگیره.
موارد جدید :
مواردی که در نسخه 2019 نبودن و به تازگی در نسخه 2023 اضافه شدن :
- اولین مورد Unrestricted Access to Sensitive Business Flows هستش که به لیست اضافه شده. دلیل این امر افزایش تهدیدات خودکار هستش. تهدیدات خودکار پیشرفته تر و سودآورتر و حفاظت در برابر اونا هم چالش برانگیزتر شده. یکی از دلایل این امر اینه که روش های سنتی مانند rate limiting و کپچا تاثیر کمی در حفاظت از APIها دارن.
- با توجه به اینکه حملات SSRF به شدت افزایش یافته، این حملات در لیست TOP 10 قرار گرفتن. برنامه های کاربردی در سالهای اخیر این آسیب پذیری هارو رایج و کاهش اونارو چالش برانگیز کردن. دلیلشم اینه که توسعه دهندگان نیاز به دسترسی زیاد به منابع خارجی مانند webhookها ، SSO ، واکشی فایلهای مبتنی بر URL و … دارن. این ویژگی ها اگرچه منجر به افزایش عملکرد برنامه میشن اما از طرفی دست مهاجمین رو هم برای نفوذ باز میزارن.
- مورد آخری که به لیست، جدیدا اضافه شده، Unsafe Consumption of APIs هستش. این گزینه هم با توجه به افزایش استفاده و ارائه APIها توسط شرکت های مختلف، بخصوص شرکتهای معتبر، به لیست اضافه شده.
موارد بروزشده:
مواردی که در لیست 2019 بودن، اما در لیست 2023 بروزرسانی شدن :
- گزینه Broken User Authentication در سال 2019، در لیست 2023 تبدیل به Broken Authentication شده. حذف User این نکته رو نشون میده که توجه به تهدیدات احرازهویت گسترده تر شده و فراتر از تهدیدات مبتنی بر کاربر شده. همچنین این گزینه میکروسرویس ها رو هم، به دلیل محبوبیت اونها، مورد توجه قرار داده. با توجه به اینکه میکروسرویس ها بدون احرازهویت یا از مکانیسم های احرازهویت ضعیف برای ارتباط با هم استفاده میکنن، میتونن مورد توجه هکرها قرار بگیرن. همچنین این گزینه یسری تهدیدات جدید رو هم اضافه کرده از جمله امکان تغییر اطلاعات حساس بدون تایید کلمه عبور و عدم تأیید اعتبار تاریخ انقضای JWT .
- گزینه Broken Object Property Level Authorization ترکیبی از دو گزینه API3:2019 Excessive Data Exposure و API6:2019 – Mass Assignment شده. گزینه Excessive Data Exposure وقتی رخ میده که یه API داده هایی بیشتری رو بر میگردونه یا این داده ها رو به شکل ناایمن بر میگردونه در نتیجه میتونه منجر به افشای اطلاعات بشه. Mass Assignment یه ویژگی هستش که برای راحتی کار توسعه دهندگان هستش و امکان تزریق مستقیم داده ها از فرم های ورودی توسط کاربران به اشیاء یا دیتابیس رو میده. نقطه ضعف این ویژگی اینه که اغلب بدون لیست سفید اجرا میشه که مانع از اختصاص داده ها به فیلدهای محافظت شده توسط کاربران میشه. مهاجم ممکنه از این آسیب پذیری برای دسترسی به داده های حساس استفاده کنه.
- مورد بعدی ، Lack of resources and rate limiting هستش که به Unrestricted Resources Consumption بروز شده. تعریف قدیمی روی کمبود منابع و محدود کردن نرخ به عنوان آسیبپذیری تمرکز داشت، اما تعریف جدید روی پیامدهای اون تاکید داره که میتونه منجر به مصرف نامحدود منابع توسط عوامل تهدید بشه. در تعریف جدید همچنین بیان شده که API زمانی آسیب پذیر هستش که محدودیتی نباشه یا به درستی تنظیم نشده باشه. این محدودیتها هم عبارتند از : وقفه های اجرایی (timeout) ، حداکثر حافظه قابل تخصیص، حداکثر تعداد file descriptor ها ، حداکثر تعداد پردازش ها ، حداکثر اندازه فایل آپلودی ، محدودیت هزینه برای ارائه دهندگان خدمات شخص ثالث و تعداد عملیات برای انجام، در یه درخواست کلاینت API (مانند GraphQL batching)
- در نسخه 2023 ، عنوان Improper assets management به Improper Inventory Management تغییر کرده. با توجه به اهمیت داشتن اطلاعات از موجودی دقیق APIها در یه سازمان، دارایی به موجودی تبدیل شده. سازمانها باید فهرست جامعی از APIهایی که دارن و استفاده میکنن ، داشته باشن.
منابع: