OWASP Top 10 چیست؟ ده آسیبپذیری مهم وب و راههای مقابله
OWASP Top 10 چیست؟ توضیح ده دسته آسیبپذیریهای وب در نسخه 2021 با مثال و راهکار، نقش SAST و DAST، امنیت API و جایگاه اسکن وب در امنیت وبسایت.
نویسنده: نتگاردبهروزرسانی: ۸ دقیقه مطالعهRead in English

OWASP Top 10 فهرستی از ده دسته مهمترین ریسکهای امنیتی برنامههای وب است که بنیاد OWASP (Open Worldwide Application Security Project) منتشر میکند. این فهرست یک «سند آگاهیبخش» است، نه یک استاندارد کامل؛ اما به زبان مشترک توسعهدهندگان، تیمهای امنیت و ممیزان تبدیل شده و بسیاری از چارچوبها و قراردادها برای امنیت وبسایت به آن ارجاع میدهند.
اهمیت OWASP Top 10 در این است که بیشتر حملات به وبسایتها و سامانههای آنلاین از همین دستهها شروع میشود: کنترل دسترسی ناقص، تزریق، پیکربندی نادرست و کتابخانههای قدیمی. در این مقاله هر ده دسته نسخه 2021 را با مثال و راهکار توضیح میدهیم، تفاوت SAST و DAST را بررسی میکنیم و میبینیم اسکن وب و امنیت API چه جایگاهی در کاهش آسیبپذیریهای وب دارند.
OWASP Top 10 چیست و چگونه تهیه میشود؟
OWASP یک جامعه باز و غیرانتفاعی در حوزه امنیت نرمافزار است. فهرست Top 10 بر پایه ترکیبی از دادههای آزمون برنامهها که سازمانهای مختلف در اختیار پروژه میگذارند و نظرسنجی از متخصصان امنیت تهیه میشود و OWASP آن را بهصورت دورهای بهروز میکند. نسخه 2021 تغییرات مهمی نسبت به نسخه قبلی داشت:
- سه دسته جدید اضافه شد: طراحی ناامن (A04)، خطاهای یکپارچگی نرمافزار و داده (A08) و جعل درخواست سمت سرور یا SSRF (A10).
- کنترل دسترسی ناقص به رتبه اول رسید.
- XSS در دسته تزریق ادغام شد، XXE زیر پیکربندی نادرست قرار گرفت و «افشای داده حساس» با تمرکز بر علت اصلی به «خطاهای رمزنگاری» تغییر نام داد.
هر دسته مجموعهای از ضعفهای CWE را در بر میگیرد، نه یک آسیبپذیری منفرد. متن کامل و راهنماهای هر دسته را میتوانید در وبسایت رسمی OWASP Top 10 ببینید.
ده آسیبپذیری وب در OWASP Top 10 2021
جدول زیر هر دسته را با یک مثال واقعی و راهکار اصلی مقابله نشان میدهد:
| کد | دسته | نمونه | راهکار اصلی |
|---|---|---|---|
| A01 | کنترل دسترسی ناقص | کاربر با تغییر شناسه در آدرس، فاکتور کاربر دیگری را میبیند (IDOR) | رد پیشفرض، بررسی مالکیت هر شیء در سمت سرور |
| A02 | خطاهای رمزنگاری | ذخیره رمزهای عبور با MD5 یا ارسال داده حساس روی HTTP | TLS بهروز، درهمسازی رمز با Argon2 یا bcrypt، مدیریت کلید |
| A03 | تزریق (Injection) | تزریق SQL در فرم جستجو یا XSS در بخش نظرات | کوئری پارامتری، اعتبارسنجی ورودی، کدگذاری خروجی |
| A04 | طراحی ناامن | فرایند بازیابی رمز با سؤال امنیتی قابل حدس یا نبود محدودیت تعداد درخواست | مدلسازی تهدید و الگوهای طراحی امن از ابتدای پروژه |
| A05 | پیکربندی امنیتی نادرست | حساب پیشفرض فعال، فهرستشدن دایرکتوریها، پیام خطای مفصل | مقاومسازی، حذف قابلیتهای اضافه، بررسی خودکار پیکربندی |
| A06 | مؤلفههای آسیبپذیر و قدیمی | استفاده از نسخه آسیبپذیر Log4j (Log4Shell، CVE-2021-44228) | فهرست وابستگیها، SCA و وصله منظم |
| A07 | خطاهای شناسایی و احراز هویت | حمله پرکردن اعتبارنامه (Credential Stuffing) به دلیل نبود MFA و محدودیت تلاش | MFA، محدودسازی تلاش ورود، مدیریت امن نشست |
| A08 | خطاهای یکپارچگی نرمافزار و داده | بهروزرسانی بدون امضا یا Deserialization ناامن داده کاربر | امضای دیجیتال، بررسی یکپارچگی، امنسازی خط CI/CD |
| A09 | خطاهای ثبت رویداد و پایش | ورودهای ناموفق متعدد ثبت نمیشوند و هشداری تولید نمیشود | لاگ متمرکز، هشدار، برنامه پاسخ به رخداد |
| A10 | جعل درخواست سمت سرور (SSRF) | برنامه آدرس دلخواه کاربر را واکشی میکند و مهاجم به سرویسهای داخلی میرسد | فهرست مجاز مقصدها، مسدودکردن بازههای داخلی، جداسازی شبکه |

نکات کلیدی درباره چند دسته
کنترل دسترسی ناقص (A01) رایجترین مشکل است، چون اسکنرهای خودکار بهسختی منطق «چه کسی اجازه دیدن چه چیزی را دارد» را درک میکنند. بررسی دسترسی باید همیشه در سمت سرور و برای هر درخواست انجام شود، نه با پنهان کردن دکمه در رابط کاربری.
تزریق (A03) با وجود قدمت زیاد هنوز خطرناک است. استفاده از کوئری پارامتری یا ORM و پرهیز از ساختن دستورها با الحاق رشته، بیشتر موارد تزریق SQL را حذف میکند.
طراحی ناامن (A04) با هیچ ابزاری بهطور کامل پیدا نمیشود؛ ضعف در خود طراحی است و باید با مدلسازی تهدید و بازبینی معماری پیش از نوشتن کد برطرف شود.
مؤلفههای قدیمی (A06) مستقیماً به مدیریت وصله مربوط است: کتابخانهها، فریمورکها و وبسرورها هم مانند سیستمعامل باید فهرست و بهروز شوند.
پیکربندی نادرست (A05) را میتوان با مقاومسازی سیستم و بررسی خودکار تنظیمات وبسرور، سرآیندهای امنیتی و سرویسهای ابری کاهش داد.
SAST و DAST؛ دو نگاه مکمل به امنیت برنامههای وب
برای یافتن آسیبپذیریهای وب چند رویکرد آزمون وجود دارد که هر کدام بخشی از تصویر را نشان میدهند:
- SAST (آزمون ایستا): کد منبع را بدون اجرا تحلیل میکند. مزیت آن یافتن مشکل در مراحل اولیه توسعه و اشاره به خط دقیق کد است؛ اما به زبان برنامهنویسی وابسته است و ممکن است مثبت کاذب زیادی تولید کند.
- DAST (آزمون پویا): برنامه در حال اجرا را از بیرون و مانند یک مهاجم آزمایش میکند. به کد منبع نیازی ندارد و مشکلات پیکربندی و زمان اجرا را هم میبیند، اما محل دقیق مشکل در کد را نشان نمیدهد.
- SCA (تحلیل ترکیب نرمافزار): کتابخانهها و وابستگیهای متنباز را شناسایی و با CVEهای شناختهشده مقایسه میکند و برای دسته A06 ضروری است.
- آزمون دستی و تست نفوذ: برای ضعفهای منطقی، کنترل دسترسی و طراحی که ابزارها بهخوبی تشخیص نمیدهند.
بهترین نتیجه از ترکیب این روشها در چرخه توسعه به دست میآید: SAST و SCA در خط CI/CD، DAST روی محیط آزمایشی و عملیاتی، و تست نفوذ دورهای برای برنامههای حساس.
امنیت API
بخش بزرگی از برنامههای امروزی، از اپلیکیشن موبایل تا سامانههای بانکی، بر پایه API کار میکنند. بسیاری از دستههای OWASP Top 10 برای API هم صادق است، اما API ریسکهای ویژه خود را دارد و به همین دلیل OWASP پروژه جداگانهای با عنوان API Security Top 10 نیز دارد. مهمترین نکات امنیت API:
- کنترل دسترسی در سطح شیء: هر درخواست باید بررسی کند که کاربر مالک شیء درخواستی است (ضعف BOLA شایعترین مشکل API است).
- احراز هویت قوی: استفاده از استانداردهایی مانند OAuth 2.0 و اعتبارسنجی کامل توکنها.
- محدودسازی نرخ و منابع: جلوگیری از سوءاستفاده و حملات پرکردن اعتبارنامه.
- عدم بازگرداندن داده اضافه: پاسخ API فقط فیلدهای لازم را برگرداند.
- فهرست کامل APIها: نسخههای قدیمی و APIهای مستندنشده (Shadow API) شناسایی و غیرفعال شوند.
جایگاه اسکن وب در امنیت وبسایت
اسکنر برنامه وب (DAST) سایت را پیمایش (Crawl) میکند، فرمها، پارامترها و نقاط ورودی را شناسایی میکند و برای هر کدام الگوهای حمله کنترلشده میفرستد. برای بهرهگیری درست از آن:
- اسکن احراز هویتشده: بخش عمده برنامه پشت صفحه ورود است؛ اسکنر باید بتواند با حساب آزمایشی وارد شود.
- تعریف API: برای پوشش APIها، فایل OpenAPI یا مجموعه درخواستها را به اسکنر بدهید.
- محیط مناسب: اسکن فعال را ابتدا روی محیط آزمایشی اجرا کنید و در محیط عملیاتی از پروفایل امن استفاده کنید.
- تکرار منظم: پس از هر انتشار مهم و بهصورت دورهای اسکن کنید.
- شناخت محدودیتها: اسکنر در یافتن تزریق، پیکربندی نادرست و مؤلفههای قدیمی قوی است، اما ضعفهای طراحی و منطق کسبوکار را باید با بازبینی و آزمون دستی پوشش داد.
برای آشنایی بیشتر با انواع اسکنرها، مقاله اسکنر آسیبپذیری چیست را بخوانید.
نتگارد چگونه کمک میکند
نتگارد برنامههای وب و APIها را بر پایه دستههای OWASP Top 10 اسکن میکند و در کنار آن، سرورها، وبسرورها و پایگاههای داده پشت برنامه را هم از نظر آسیبپذیری و پیکربندی بر اساس CIS Benchmark بررسی میکند. کشف سطح حمله خارجی، دامنهها، زیردامنهها، پورتهای باز و گواهیهای TLS در معرض اینترنت را پیدا میکند تا برنامه وبی از قلم نیفتد. یافتهها بر اساس ریسک اولویتبندی و در گزارشهای فارسی و انگلیسی ارائه میشوند و اسکن مجدد، رفع آنها را تأیید میکند. برای جزئیات صفحه اسکنر آسیبپذیری را ببینید.
سوالات متداول
OWASP Top 10 چیست؟
OWASP Top 10 فهرستی از ده دسته مهمترین ریسکهای امنیتی برنامههای وب است که بنیاد غیرانتفاعی OWASP بر پایه دادههای آزمون برنامهها و نظر متخصصان منتشر و بهصورت دورهای بهروز میکند. این فهرست سندی آگاهیبخش است و به نقطه شروع رایج برای آموزش توسعهدهندگان، طراحی آزمونهای امنیتی و گزارشدهی یافتههای اسکن وب تبدیل شده است.
مهمترین آسیبپذیری وب در OWASP Top 10 کدام است؟
در نسخه 2021، کنترل دسترسی ناقص (Broken Access Control) در رتبه اول قرار دارد. این دسته شامل مواردی است که کاربر میتواند به داده یا عملکردی خارج از مجوز خود دسترسی پیدا کند؛ مثلاً با تغییر شناسه در آدرس، اطلاعات کاربر دیگری را ببیند. راهکار اصلی آن بررسی مجوز در سمت سرور برای هر درخواست و رد پیشفرض دسترسی است.
تفاوت SAST و DAST چیست؟
SAST کد منبع را بدون اجرای برنامه تحلیل میکند و مشکل را در مراحل اولیه توسعه و در خط دقیق کد نشان میدهد. DAST برنامه در حال اجرا را از بیرون و مانند یک مهاجم آزمایش میکند، به کد منبع نیاز ندارد و مشکلات پیکربندی و زمان اجرا را هم پیدا میکند. این دو مکمل هم هستند و بهتر است هر دو در چرخه توسعه به کار روند.
آیا اسکنر وب همه موارد OWASP Top 10 را پیدا میکند؟
خیر. اسکنرهای وب در یافتن تزریق، پیکربندی نادرست، مشکلات رمزنگاری در ارتباط و مؤلفههای قدیمی قوی هستند، اما دستههایی مانند طراحی ناامن و بخش زیادی از کنترل دسترسی به درک منطق کسبوکار نیاز دارند. برای پوشش کامل، اسکن خودکار را با بازبینی کد، مدلسازی تهدید و تست نفوذ دستی ترکیب کنید.
برای امنیت وبسایت از کجا شروع کنیم؟
ابتدا فهرست کامل وبسایتها، زیردامنهها و APIهای در معرض اینترنت را تهیه کنید. سپس با اسکن وب احراز هویتشده و اسکن سرورهای میزبان، آسیبپذیریهای آشکار را پیدا و بر اساس ریسک رفع کنید. در کنار آن، وبسرور و چارچوبها را مقاومسازی و بهروز نگه دارید، MFA را برای پنلهای مدیریتی فعال کنید و لاگ و هشدار مناسب راهاندازی کنید.
- #OWASP Top 10 چیست
- #OWASP Top 10
- #امنیت وبسایت
- #آسیبپذیریهای وب
- #امنیت برنامههای وب
- #اسکن امنیتی وبسایت
- #web application security




