OWASP Top 10 یک استاندارد جهانی برای امنیت برنامههای وب است که توسط پروژه OWASP منتشر میشود. این استاندارد رایجترین و حیاتیترین آسیبپذیریهای امنیتی در برنامههای وب را شناسایی و معرفی میکند.
هدف اصلی این پروژه افزایش آگاهی عمومی و کمک به توسعهدهندگان و سازمانها برای تقویت امنیت برنامههای خود است. OWASP منابع رایگان و باز بسیاری ارائه میدهد، از جمله:
- ابزارها و استانداردهای امنیتی برنامهها
- تحقیقات پیشرفته
- کنترلها و کتابخانههای استاندارد امنیتی
- کتابهای جامع در مورد آزمون امنیتی برنامهها، توسعه کد امن و بازبینی کد امن
- ارائهها و ویدئوها
- چکلیستها و جلسات فصلی
OWASP به عنوان یک سازمان مستقل و بدون وابستگی به شرکتهای فناوری، اطلاعات بیطرفانه و مقرونبهصرفهای درباره امنیت برنامهها ارائه میدهد. بنیاد OWASP به عنوان یک نهاد غیرانتفاعی، موفقیت بلندمدت پروژه را تضمین میکند و تحقیقات امنیتی نوآورانه را با کمکهای مالی و زیرساختی حمایت میکند.
نحوه استفاده از OWASP Top 10 به عنوان یک استاندارد
OWASP Top 10 عمدتاً یک سند آگاهیبخشی است، اما بسیاری از سازمانها از آن به عنوان یک استاندارد امنیتی برای برنامههای کاربردی استفاده میکنند. این لیست، حداقل الزامات امنیتی را مشخص میکند و نقطه شروع مناسبی برای بررسیهای امنیتی است.
استفاده از استاندارد ASVS توصیه میشود زیرا این استاندارد قابل آزمون و تأیید است، و میتواند در تمام مراحل توسعه امن مورد استفاده قرار گیرد. ابزارها نمیتوانند به طور کامل همه خطرات OWASP Top 10 را پوشش دهند، به ویژه خطراتی مانند طراحی ناامن (A04:2021).
آخرین تغییرات OWASP Top 10
نسخه 2021 شامل سه دسته جدید، چهار دسته با تغییرات در نام و حوزه، و برخی ادغامها است. تغییرات انجام شده به جای تمرکز بر علائم، بیشتر بر علت اصلی مشکلات متمرکز شدهاند.
این نسخه از Top 10 بیشتر بر اساس دادهها استوار است. هشت دسته از ده دسته، از دادههای موجود انتخاب شده و دو دسته دیگر با نظرسنجی از جامعه امنیت بدست آمده است. با این روش دیدگاههای کارشناسان امنیتی نیز در نظر گرفته شده است.
A01 – کنترل دسترسی ناکافی (Broken Access Control)
- 94٪ از برنامهها نوعی از این ضعف را داشتهاند.
- نرخ وقوع متوسط: 3.81٪
- مجموع وقوعها: 318,000+
این دسته به دلیل شدت و تعداد وقوعها، از رتبه پنجم به رتبه اول منتقل شده است. دادهها نشان میدهد که به طور متوسط 3.81% از برنامههای آزمایش شده دارای یک یا چند ضعف مشترک (CWE) در این دسته هستند.
94٪ از برنامههای مورد آزمایش دارای این ضعف بودند. از جمله ضعفهای رایج میتوان به افشای اطلاعات حساس، جعل درخواست بینسایتی (CSRF) و دسترسی غیرمجاز به دادهها اشاره کرد.
کنترل دسترسی تضمین میکند که کاربران تنها در چارچوب مجوزهای خود عمل کنند. شکستهای این کنترل منجر به افشای اطلاعات، تغییر یا نابودی دادهها و انجام وظایف غیرمجاز میشود.
نحوه پیشگیری:
- محدود کردن دسترسی به منابع عمومی به صورت پیشفرض
- استفاده از مکانیسمهای کنترل دسترسی یکسان
- اعمال کنترلهای دسترسی مالکیت رکوردها
- غیرفعال کردن لیست دایرکتوری وب سرور و حذف فایلهای پشتیبان
- ثبت و هشدار شکستهای کنترل دسترسی
برای مطالعه بیشتر: https://owasp.org/Top10/A01_2021-Broken_Access_Control
A02 – خرابیهای رمزنگاری (Cryptographic Failures)
- تعداد ضعفهای ثبت شده: 233,788
- نرخ وقوع متوسط: 4.49٪
- حداکثر نرخ وقوع: 46.44٪
این دسته از رتبه سوم به رتبه دوم منتقل شده است و نام جدید آن بر شکستهای مرتبط با رمزنگاری تمرکز دارد.
خرابیهای رمزنگاری (که قبلاً به عنوان افشای اطلاعات حساس شناخته میشد) شامل استفاده از الگوریتمهای رمزنگاری ضعیف، مدیریت نامناسب کلیدهای رمزنگاری، و ارسال اطلاعات حساس به صورت متنی است.
نحوه پیشگیری:
- طبقهبندی دادههای حساس
- رمزنگاری دادههای حساس در حالت انتقال و استراحت
- استفاده از الگوریتمها و پروتکلهای استاندارد و قوی
- مدیریت صحیح کلیدهای رمزنگاری
- استفاده از توابع هش قوی و تطبیقی برای ذخیره رمزهای عبور
برای مطالعه بیشتر: https://owasp.org/Top10/A02_2021-Cryptographic_Failures
A03– تزریق (Injection)
- نرخ وقوع حداکثر: 19.09٪
- نرخ وقوع متوسط: 3.37٪
- مجموع وقوعها: 274,228
- تعداد ضعفهای ثبت شده: 33
تزریق زمانی رخ میدهد که دادههای کاربر به درستی اعتبارسنجی، فیلتر یا پاکسازی نشوند و مستقیماً در دستورات یا پرسوجوهای پویا استفاده شوند. این نقص میتواند شامل Cross-site Scripting و SQL Injection و External Control of File Name or Path باشد.
نحوه پیشگیری:
- استفاده از API امن که از پارامترسازی استفاده میکند.
- اعتبارسنجی ورودیهای سمت سرور
- استفاده از فرار از کاراکترها برای پرسوجوهای پویا
- استفاده از محدودیتها و کنترلهای SQL برای جلوگیری از افشای دستهای اطلاعات
برای مطالعه بیشتر: https://owasp.org/Top10/A03_2021-Injection/
A04 – طراحی ناامن (Insecure Design)
- نرخ وقوع حداکثر: 24.19٪
- نرخ وقوع متوسط: 3.00٪
- مجموع وقوعها: 262,407
یک دسته جدید در سال 2021 است، که بر خطرات مرتبط با نقصهای طراحی تمرکز دارد.
طراحی ناامن یک دسته گسترده از ضعفهاست که به دلیل عدم وجود یا ناکارآمدی کنترلهای طراحی ایجاد میشود. این نوع طراحی نمیتواند با یک پیادهسازی بینقص اصلاح شود، زیرا کنترلهای امنیتی لازم از ابتدا وجود نداشتهاند.
نحوه پیشگیری:
- استفاده از چرخه عمر توسعه امن با مشارکت متخصصان امنیتی
- استفاده از الگوهای طراحی امن و کتابخانههای کامپوننت آماده
- مدلسازی تهدید برای جریانهای کلیدی
- افزودن کنترلهای امنیتی به داستانهای کاربر
- جداسازی لایهها و مصرف منابع کاربران
برای مطالعه بیشتر: https://owasp.org/Top10/A04_2021-Insecure_Design
A05 – پیکربندی ناامن (Security Misconfiguration)
- نرخ وقوع حداکثر: 19.84٪
- نرخ وقوع متوسط: 4.51٪
- مجموع وقوعها: 208,387
این دسته از رتبه ششم به رتبه پنجم منتقل شده است.
پیکربندی ناامن شامل نقصهای امنیتی مانند تنظیمات پیشفرض ناامن، عدم سختسازی امنیتی، فعال بودن ویژگیها و خدمات غیرضروری، حسابهای پیشفرض با رمزهای عبور تغییر نیافته، و افشای اطلاعات حساس از طریق پیامهای خطا است.
نحوه پیشگیری:
- پیادهسازی فرآیند سختسازی تکرارپذیر
- استفاده از پلتفرم حداقلی
- بررسی و بهروزرسانی منظم پیکربندیها
- معماری برنامه تقسیمشده
- ارسال دستورات امنیتی به کلاینتها
- فرآیند خودکار برای بررسی پیکربندیها
برای مطالعه بیشتر: https://owasp.org/Top10/A05_2021-Security_Misconfiguration
A06 – کامپوننتهای آسیبپذیر و قدیمی (Vulnerable and Outdated Components)
- نرخ وقوع حداکثر: 27.96٪
- نرخ وقوع متوسط: 8.77٪
- مجموع وقوعها: 30,457
این دسته قبلاً با عنوان “استفاده از اجزای با آسیبپذیریهای شناخته شده” شناخته میشد و اکنون از رتبه نهم به رتبه ششم منتقل شده است.
کامپوننتهای آسیبپذیر یک مشکل شناخته شده هستند که آزمایش و ارزیابی ریسک آنها دشوار است و تنها دستهای هستند که هیچ آسیبپذیری عمومی (CVE) به ضعفهای مشترک (CWE) آنها نسبت داده نشده است.
اگر از نسخههای کامپوننتهای خود اطلاع ندارید، یا از نرمافزارهای آسیبپذیر، قدیمی یا بدون پشتیبانی استفاده میکنید، به احتمال زیاد آسیبپذیر هستید. این شامل سیستمعامل، سرورهای وب/برنامه، سیستمهای مدیریت پایگاه داده، برنامهها، APIها و تمام مؤلفهها، محیطهای اجرایی و کتابخانهها میشود.
نحوه پیشگیری:
- حذف وابستگیها و ویژگیهای غیرضروری
- پایش مداوم نسخهها و آسیبپذیریهای کامپوننتها
- دریافت کامپوننتها از منابع رسمی
- پایش و وصله کامپوننتهای قدیمی
برای مطالعه بیشتر: https://owasp.org/Top10/A06_2021-Vulnerable_and_Outdated_Components
A07 – نقصهای شناسایی و احراز هویت (Identification and Authentication Failures)
- نرخ وقوع حداکثر: 14.84٪
- نرخ وقوع متوسط: 2.55٪
- مجموع وقوعها: 132,195
این دسته قبلاً با عنوان “Broken Authentication” شناخته میشد و اکنون به رتبه هفتم منتقل شده است.
این دسته شامل ضعفهایی مانند اعتبارسنجی نادرست گواهی، احراز هویت نامناسب، و تثبیت نشست است. تایید هویت کاربران و مدیریت نشستها برای مقابله با حملات مرتبط با احراز هویت ضروری است.
نحوه پیشگیری:
- پیادهسازی احراز هویت چندمرحلهای
- عدم استفاده از اعتبارنامههای پیشفرض
- بررسی و بهروزرسانی سیاستهای رمز عبور
- مدیریت صحیح نشستها و احراز هویت
برای مطالعه بیشتر: https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures
A08 – خرابیهای نرمافزار و یکپارچگی دادهها (Software and Data Integrity Failures)
- نرخ وقوع حداکثر: 16.67٪
- نرخ وقوع متوسط: 2.05٪
- مجموع وقوعها: 47,972
یک دسته جدید برای سال 2021 است که بر فرضیات مربوط به بهروزرسانیهای نرمافزار و دادههای حیاتی، بدون تایید تمامیت آنها تمرکز دارد.
خرابیهای نرمافزار و یکپارچگی دادهها به وضعیتهایی اشاره دارد که نرمافزار و زیرساخت آن از نظر نقض یکپارچگی محافظت نشدهاند. این دسته یکی از بالاترین تأثیرات وزنی را از دادههای CVE/CVSS دارد. ضعفهای رایج قابل توجه در این دسته شامل استفاده از افزونهها و کتابخانههای نامطمئن، خطوط CI/CD ناامن و بروزرسانیهای خودکار بدون تأیید صحت است.
نحوه پیشگیری:
- استفاده از امضای دیجیتال
- اطمینان از استفاده از مخازن معتبر
- استفاده از ابزارهای امنیتی زنجیره تأمین نرمافزار
- بررسی و ارزیابی تغییرات کد و پیکربندی
- جداسازی و کنترل دسترسی در خط لوله CI/CD
- عدم ارسال دادههای سریالنشده بدون بررسی یکپارچگی
برای مطالعه بیشتر: https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures
A09 – خرابیهای ثبت و نظارت امنیتی (Security Logging and Monitoring Failures)
- نرخ وقوع حداکثر: 19.23٪
- نرخ وقوع متوسط: 6.51٪
- مجموع وقوعها: 53,615
خرابیهای ثبت و نظارت امنیتی شامل عدم ثبت و نظارت مناسب بر رویدادهای امنیتی است. این امر منجر به ناتوانی در تشخیص و پاسخ به حملات فعال میشود. اگرچه دادههای CVE/CVSS برای این دسته محدود است، تشخیص و پاسخ به نقضها حیاتی است و تأثیر زیادی در پاسخگویی، دیدهبانی، هشدار حوادث و تحلیلهای قانونی دارد.
نحوه پیشگیری:
- ثبت رویدادهای حیاتی مانند ورودها و تراکنشهای مهم
- نظارت بر لاگهای برنامهها و APIها
- ایجاد هشدارهای مناسب و فرایندهای پاسخ به حوادث
- استفاده از ابزارهای مدیریت لاگ و نظارت
برای مطالعه بیشتر: https://owasp.org/Top10/A09_2021-Security_Logging_and_Monitoring_Failures
A10 – جعل درخواست سمت سرور (Server-Side Request Forgery (SSRF))
- نرخ وقوع حداکثر: 2.72٪
- نرخ وقوع متوسط: 2.72٪
- مجموع وقوعها: 9,503
این دسته با توجه به نظرسنجی از جامعه امنیت اضافه شده است و دادهها نشان میدهد که نرخ وقوع نسبتاً پایین اما پوشش آزمایشی بالایی دارد.
SSRF زمانی رخ میدهد که یک برنامه وب بدون اعتبارسنجی URL ارائه شده توسط کاربر، یک منبع راه دور را بازیابی میکند. این ضعف به مهاجمان اجازه میدهد تا برنامه را مجبور کنند درخواستهای ساخته شده را به مقصدهای ناخواسته ارسال کند، حتی اگر پشت یک فایروال یا VPN محافظت شده باشد. دادهها نشان میدهند که نرخ وقوع نسبتاً پایین است، اما پوشش تست و پتانسیل بهرهبرداری و تأثیر بالاتری دارد.
نحوه پیشگیری:
- جداسازی عملکرد دسترسی به منابع راه دور در شبکههای جداگانه
- استفاده از پالیسیهای“deny by default” در فایروال
- تصفیه و اعتبارسنجی تمام دادههای ورودی
- اعمال لیست اجازه مثبت برای URL، پورت و مقصد
- غیرفعال کردن تغییر مسیر HTTP
برای مطالعه بیشتر: https://owasp.org/Top10/A10_2021-Server-Side_Request_Forgery_%28SSRF%29