OWASP Top 10
OWASP Top Ten یک فهرست بسیار شناختهشده از خطرات امنیتی اپلیکیشنهای وب است و توسط مدل تضمین تکامل نرمافزار OWASP (SAMM) در بخش آموزش و راهنمایی (Education & Guidance) در زیرمجموعه عملکرد تجاری حاکمیت (Governance) گنجانده شده است.
نمای کلی
پروژه ۱۰ ریسک امنیتی برتر اپلیکیشنهای وب OWASP احتمالاً شناختهشدهترین مفهوم امنیتی در جامعه امنیت است که اندکی پس از انتشارش در سال ۲۰۰۳ به پذیرش و شهرت گستردهای دست یافت. این فهرست که اغلب فقط «OWASP Top Ten» نامیده میشود، لیستی است که مهمترین تهدیدات برای اپلیکیشنهای وب را شناسایی کرده و به دنبال رتبهبندی آنها بر اساس اهمیت و شدت است.
این فهرست با گذشت زمان تغییر کرده است؛ با تغییر فناوریها، برخی از انواع تهدیدات به مشکل بزرگتری برای اپلیکیشنهای وب تبدیل شده و برخی دیگر به ریسک کمتری مبدل شدهاند. آخرین نسخه در سال ۲۰۲۱ منتشر شد و هر دسته در ادامه به طور خلاصه شرح داده شده است.
توجه داشته باشید که پروژههای مختلف «OWASP Top Ten» وجود دارد، به عنوان مثال «۱۰ مورد برتر OWASP برای اپلیکیشنهای مدلهای زبان بزرگ»، بنابراین برای جلوگیری از سردرگمی، هنگام ارجاع به این لیستها باید به زمینه (context) توجه شود.
A01:2021 کنترل دسترسی ناقص (Broken Access Control)
کنترل دسترسی شامل استفاده از مکانیسمهای حفاظتی است که میتوان آنها را به دستههای زیر طبقهبندی کرد:
- احراز هویت (Authentication): اثبات هویت یک عامل.
- مجوزدهی (Authorization): اطمینان از اینکه یک عامل معین میتواند به یک منبع دسترسی داشته باشد.
- پایش (Accountability): رصد و ردیابی فعالیتهایی که انجام شده است.
کنترل دسترسی ناقص زمانی رخ میدهد که محصول، دسترسی یک عامل غیرمجاز یا مخرب به یک منبع را محدود نمیکند یا به اشتباه محدود میکند.
هنگامی که یک کنترل امنیتی شکست میخورد یا اعمال نمیشود، مهاجمان میتوانند با به دست آوردن امتیاز دسترسی، خواندن اطلاعات حساس، اجرای دستورات، فرار از شناسایی و غیره، امنیت محصول را به خطر بیندازند.
کنترل دسترسی ناقص میتواند اشکال مختلفی داشته باشد، مانند پیمایش مسیر (path traversal) یا ارتقاء امتیاز دسترسیهای امنیتی (elevation of privilege)، بنابراین به هر دو منبع شمارش ضعفهای متداول CWE-284 و A01 کنترل دسترسی ناقص مراجعه کرده و همچنین Cheat Sheetهای مختلف OWASP مربوط به کنترلهای دسترسی را دنبال کنید.
A02:2021 نقصهای رمزنگاری (Cryptographic Failures)
با ارجاع به OWASP Top 10 A02:2021، دادههای حساس باید هنگام ذخیرهسازی (at rest) و انتقال (in transit) محافظت شوند.
نقصهای رمزنگاری زمانی رخ میدهند که کنترل امنیتی رمزنگاری شکسته شده یا اعمال نشده باشد و دادهها در معرض عوامل غیرمجاز - چه مخرب و چه غیرمخرب - قرار گیرند.
مهم است که دادهها هم در حالت سکون، یعنی زمانی که در بخشی از حافظه ذخیره شدهاند، و هم در حالت انتقال، مانند زمانی که از طریق یک کانال ارتباطی منتقل یا در حال تبدیل هستند، محافظت شوند. یک مثال خوب از حفاظت در حین تبدیل داده توسط A02 نقصهای رمزنگاری ارائه شده است که در آن دادههای حساس به درستی در یک پایگاه داده رمزگذاری شدهاند، اما تابع صدور (export) به طور خودکار دادهها را رمزگشایی میکند که منجر به افشای دادههای حساس میشود.
نقصهای کریپتو میتوانند اشکال مختلفی داشته باشند و ممکن است ظریف باشند - یک کنترل امنیتی که امن به نظر میرسد ممکن است به راحتی شکسته شود. برای پیادهسازی کنترلهای اولیه رمزنگاری، Cheat Sheetهای کریپتو OWASP را دنبال کنید و در نظر داشته باشید که یک ممیزی رمزنگاری را نیز اجرا کنید.
A03:2021 تزریق (Injection)
فقدان اعتبارسنجی و پاکسازی ورودیها میتواند به اکسپلویتهای تزریق منجر شود و این ریسک از زمان انتشار اولین نسخه OWASP Top Ten در سال ۲۰۰۳ یک ویژگی ثابت در این فهرست بوده است.
این آسیبپذیریها زمانی رخ میدهند که دادههای متخاصم مستقیماً در اپلیکیشن استفاده شوند و میتوانند منجر به استفاده از دادههای مخرب برای منحرف کردن اپلیکیشن شوند؛ برای توضیحات بیشتر به A03 Injection مراجعه کنید.
کنترل امنیتی واضح است: تمام ورودیها از منابع غیرقابل اعتماد باید پاکسازی و اعتبارسنجی شوند.
برای انواع مختلف ورودیها و کنترلهای آنها به Cheat Sheetهای تزریق مراجعه کنید.
A04:2021 طراحی ناامن (Insecure Design)
مهم است که امنیت از ابتدا در اپلیکیشنها گنجانده شود و نه به عنوان یک فکر ثانویه به آن اضافه گردد. دستهبندی A04 طراحی ناامن این موضوع را به رسمیت میشناسد و توصیه میکند که استفاده از مدلسازی تهدید (threat modeling)، الگوهای طراحی امن و معماریهای مرجع باید در فعالیتهای طراحی و معماری اپلیکیشن گنجانده شود.
در عمل، این شامل ایجاد یک چرخه عمر توسعه امن است که شناسایی نیازمندیهای امنیتی، استفاده دورهای از مدلسازی تهدید و در نظر گرفتن کتابخانهها و فریمورکهای امن موجود را تشویق میکند. این دسته در نسخه ۲۰۲۱ معرفی شد و در حال حاضر Cheat Sheetهای پشتیبان آن فقط مدلسازی تهدید را پوشش میدهند؛ انتظار میرود با جا افتادن بیشتر این دسته، اطلاعات پشتیبانی بیشتری در دسترس قرار گیرد.
A05:2021 پیکربندی نادرست امنیتی (Security Misconfiguration)
سیستمها و اپلیکیشنهای بزرگ میتوانند قابل پیکربندی باشند و این پیکربندی اغلب برای امنسازی سیستم/اپلیکیشن استفاده میشود.
اگر این پیکربندی به اشتباه اعمال شود، ممکن است اپلیکیشن دیگر امن نباشد و در عوض در برابر اکسپلویتهای شناختهشده آسیبپذیر شود.
صفحه A05 Security Misconfiguration یک مثال رایج از پیکربندی نادرست را شامل میشود که در آن حسابهای کاربری پیشفرض و رمزهای عبور آنها همچنان فعال و بدون تغییر باقی ماندهاند.
این رمزهای عبور و حسابها معمولاً به خوبی شناخته شدهاند و راهی آسان برای عوامل مخرب جهت نفوذ به اپلیکیشنها فراهم میکنند.
هر دو منبع OWASP Top 10 A05:2021 و Cheat Sheetهای OWASP مرتبط، استراتژیهایی را برای ایجاد یک فرآیند پیکربندی امنیتی هماهنگ و تکرارپذیر برای اپلیکیشن ارائه میدهند تا پیکربندیهای نادرست به حداقل برسد.
A06:2021 مؤلفههای آسیبپذیر و قدیمی (Vulnerable and Outdated Components)
شاید یکی از سادهترین و مؤثرترین فعالیتهای امنیتی، بهروز نگه داشتن تمام وابستگیهای نرمافزاری شخص ثالث باشد.
اگر یک وابستگی آسیبپذیر توسط یک عامل مخرب در مرحله شناسایی (reconnaissance) یک حمله شناسایی شود، پایگاههای دادهای مانند Exploit Database وجود دارند که شرح هر اکسپلویت را ارائه میدهند. این پایگاههای داده همچنین میتوانند اسکریپتها و تکنیکهای آمادهای برای حمله به یک آسیبپذیری خاص فراهم کنند، که بهرهبرداری از وابستگیهای نرمافزاری شخص ثالث آسیبپذیر را آسان میسازد.
ریسک A06 مؤلفههای آسیبپذیر و قدیمی بر اهمیت این فعالیت تأکید میکند و توصیه میکند که اصلاحات و ارتقاء پلتفرم، فریمورکها و وابستگیهای زیربنایی بر اساس ارزیابی ریسک و به «شیوهای به موقع» انجام شود. ابزارهای متعددی میتوانند برای تجزیه و تحلیل وابستگیها و شناسایی آسیبپذیریها استفاده شوند؛ برای این ابزارها به Cheat Sheetها مراجعه کنید.
A07:2021 نقصهای شناسایی و احراز هویت (Identification and Authentication Failures)
تأیید هویت کاربر، احراز هویت و مدیریت جلسه برای محافظت از سیستم یا اپلیکیشن در برابر حملات مرتبط با احراز هویت حیاتی است. با ارجاع به ریسک A07 نقصهای شناسایی و احراز هویت، مجوزدهی میتواند به روشهای مختلفی با شکست مواجه شود که اغلب شامل سایر ریسکهای OWASP Top Ten است:
- کنترلهای دسترسی ناقص (A01)
- نقص رمزنگاری (A02)
- رمزهای عبور پیشفرض (A05)
- کتابخانههای قدیمی (A06)
برای چندین رویه خوب که برای مجوزدهی امن لازم است، به Cheat Sheetها مراجعه کنید.
همچنین تأمینکنندگان شخص ثالثی برای مدیریت هویت و دسترسی (IAM) وجود دارند که این را به عنوان یک سرویس ارائه میدهند؛ هزینه و فایده استفاده از این تأمینکنندگان را در نظر بگیرید.
A08:2021 نقصهای یکپارچگی نرمافزار و داده (Software and Data Integrity Failures)
نقصهای یکپارچگی نرمافزار و داده به کد و زیرساختی مربوط میشود که در برابر نقض یکپارچگی محافظت نمیکنند.
این یک دستهبندی گسترده است که به عنوان مثال حملات زنجیره تأمین، بهروزرسانی خودکار به خطر افتاده و استفاده از مؤلفههای غیرقابل اعتماد را توصیف میکند.
A08 Software and Data Integrity Failures یک دسته جدید بود که در سال ۲۰۲۱ معرفی شد، بنابراین اطلاعات کمی از Cheat Sheetها در دسترس است، اما با توجه به اهمیت این تهدید، این وضعیت قطعاً تغییر خواهد کرد.
A09:2021 نقصهای ثبت وقایع و نظارت امنیتی (Security Logging and Monitoring Failures)
ثبت وقایع و نظارت به شناسایی، تشدید و پاسخ به نفوذهای فعال کمک میکند؛ بدون آن، نفوذها شناسایی نخواهند شد. A09 نقصهای ثبت وقایع و نظارت امنیتی تکنیکهای مختلف ثبت وقایع و نظارت را فهرست میکند که باید آشنا باشند، اما همچنین موارد دیگری که ممکن است چندان رایج نباشند را نیز شامل میشود؛ به عنوان مثال، نظارت بر زنجیره تأمین DevOps ممکن است به همان اندازه نظارت بر اپلیکیشن یا سیستم مهم باشد.
Cheat Sheetها راهنماییهایی در مورد ثبت وقایع کافی ارائه میدهند و همچنین یک واژگان مشترک برای ثبت وقایع فراهم میکنند. هدف از این واژگان مشترک، ارائه ثبت وقایعی است که از مجموعهای مشترک از اصطلاحات، فرمتها و کلمات کلیدی استفاده میکند؛ و این امر نظارت، تحلیل و هشداردهی را آسانتر میکند.
A10:2021 جعل درخواست سمت سرور (Server-Side Request Forgery)
با ارجاع به A10 جعل درخواست سمت سرور (SSRF)، این آسیبپذیریها میتوانند هر زمانی که یک اپلیکیشن وب در حال واکشی یک منبع از راه دور بدون اعتبارسنجی URL ارائهشده توسط کاربر باشد، رخ دهند. این اکسپلویتها به یک مهاجم اجازه میدهند تا اپلیکیشن را وادار به ارسال یک درخواست دستکاریشده به یک مقصد غیرمنتظره کند، حتی زمانی که توسط یک فایروال، VPN یا نوع دیگری از لیست کنترل دسترسی شبکه محافظت میشود. واکشی یک URL به یک سناریوی رایج برای اپلیکیشنهای وب مدرن تبدیل شده و در نتیجه، وقوع SSRF به ویژه برای سرویسهای ابری و معماریهای پیچیدهتر اپلیکیشن در حال افزایش است.
این یک دسته جدید است که در سال ۲۰۲۱ با یک Cheat Sheet (در حال حاضر) که به SSRF میپردازد، معرفی شد.
لیستهای ده مورد برتر OWASP
پروژههای مختلف «۱۰ مورد برتر» توسط OWASP ایجاد شدهاند که بسته به زمینه، ممکن است به آنها نیز «OWASP Top 10» گفته شود. در اینجا لیستی از پروژههای پایدار «OWASP Top 10» آمده است:
- ۱۰ مورد برتر امنیت API
- ۱۰ مورد برتر امنیت داده
- ۱۰ مورد برتر Low-Code/No-Code
- ۱۰ مورد برتر موبایل
- ۱۰ مورد برتر بدون سرور (Serverless)
- ۱۰ ریسک امنیتی برتر CI/CD
- ۱۰ مورد برتر برای اپلیکیشنهای مدلهای زبان بزرگ
- ۱۰ ریسک برتر حریم خصوصی
- ۱۰ کنترل پیشگیرانه برتر
- ۱۰ ریسک امنیتی برتر اپلیکیشنهای وب
سایر لیستهای ده مورد برتر OWASP پروژههای «انکوباتور» هستند که در حال انجام میباشند، بنابراین این لیست با گذشت زمان تغییر خواهد کرد.
راهنمای توسعهدهنده OWASP یک تلاش اجتماعی است؛ اگر چیزی نیاز به تغییر دارد، لطفاً یک ایشو ثبت کنید یا در گیتهاب ویرایش کنید.