10 برتر OWASP: آنچه که هر توسعه دهنده باید در مورد آن بداند

امنیت وب میتواند شبیه حروف الفبای کلمات اختصاری باشد: CVE، XSS، SSRF، و غیره. گم شدن در پیچ و خم اصطلاحات آسان است. با این حال، در میان همه اینها، یکی از آنها به ویژه مهم است: OWASP.
چه شما یک مهندس نرمافزار با تجربه باشید که دروازه Tannhäuser را دیدهاید یا به تازگی سفر خود را در امنیت آغاز کردهاید، احتمالاً با ارجاعاتی به OWASP و معروفترین پروژه آن مواجه شدهاید: 10 برتر.
اما دقیقا چیست؟ آیا فقط یک لیست 10 برتر قطعی وجود دارد؟ چه ارتباطی با سایر استانداردهای امنیتی دارد؟ و شاید مهمتر از همه، چگونه می توانید از آن برای ایمن تر کردن برنامه های خود استفاده کنید؟
در این غواصی عمیق، سردرگمی را از بین میبریم و دنیای امنیت برنامههای وب را از طریق لنز 10 برتر OWASP کشف میکنیم. توسعه وب مدرن
بدون اصطلاحات تخصصی، بدون پیچیدگی – فقط بینش های واضح و عملی در مورد یکی از مهمترین چارچوب های امنیتی برای ساخت محصولات نرم افزاری ایمن. بیایید شروع کنیم!
💡 توجه: این تجدید چاپ مقاله ای است که در اصل در خبرنامه امنیت معماری منتشر شده است.
اولین چیزها: OWASP چیست؟
قبل از بحث در مورد 10 برتر، اجازه دهید توضیح دهیم که OWASP در واقع چیست. این جزییاتی است که بسیاری از مردم حتی در صنعت فناوری اشتباه می کنند.
OWASP (Open Web Application Security Project) یک سازمان جهانی است که افرادی را که متعهد به ایمن سازی نرم افزار هستند متحد می کند. آن را به عنوان یک جامعه جهانی در نظر بگیرید که در آن کارشناسان امنیتی و توسعه دهندگان برای کمک به دیگران در ساختن نرم افزار امن با یکدیگر همکاری می کنند.
این چیزی است که OWASP را خاص می کند: این یک سازمان غیرانتفاعی است که تمام دانش خود را آزادانه به اشتراک می گذارد. آنها راهنماها، ابزارها و منابعی را ایجاد می کنند که هر کسی می تواند از آنها برای ایمن تر کردن نرم افزار خود استفاده کند. 10 نفر برتر تنها یکی از پروژه های متعدد آنهاست.
یک اشتباه رایج وجود دارد که من اغلب در جلسات و کنفرانس ها می شنوم. مردم به “روش شناسی OWASP” مراجعه می کنند – اما این کاملا درست نیست. وقتی منظورتان Lean یا Kanban است، مثل این است که بگویید «روش شناسی تویوتا». OWASP یک متدولوژی نیست. این سازمانی است که دستورالعمل ها و ابزارهای امنیتی را ایجاد می کند.
اکنون که متوجه شدیم OWASP چیست، بیایید به معروف ترین پروژه آنها نگاه کنیم: OWASP Top 10.
پس تاپ 10 چیست؟
OWASP Top 10 دقیقاً همان چیزی است که به نظر می رسد: لیستی از ده مشکل امنیتی بزرگ که امروزه بر برنامه های وب تأثیر می گذارد. اما چیزی بیشتر از یک شمارش معکوس ساده در آن وجود دارد.
شما می توانید آن را به عنوان یک لیست رتبه بندی شده در نظر بگیرید، جایی که موقعیت هر مشکل امنیتی نشان می دهد که چقدر برای یک مشکل جدی است معمولی سازمان
به عنوان مثال، وقتی «A1: Broken Access Control» را در بالای لیست میبینید، به این معنی است که این مشکل معمولاً نسبت به «A10: Server-Side Request Forgery» که در پایین قرار دارد، دردسر بیشتری ایجاد میکند.
اینجاست که همه چیز جالب می شود: در حالی که 10 تای برتر درباره خطرات صحبت می کنند، اما واقعاً یک لیست ریسک نیست. چرا؟ زیرا ریسک همیشه به زمینه بستگی دارد.
بگذارید یک مثال واقعی برای شما بیاورم: تصور کنید آسیبپذیری مشابهی مانند Cross-Site Scripting را در دو مکان مختلف پیدا کنید:
- در یک ابزار داخلی که فقط کارمندان می توانند به آن دسترسی داشته باشند.
- در وب سایت عمومی شما که هزاران مشتری هر روز از آن استفاده می کنند.
آسیب پذیری یکسان، شدت یکسان، اما سطوح خطر بسیار متفاوت. (نسخه عمومی وب سایت بسیار خطرناک تر است زیرا در معرض مهاجمان بالقوه بیشتری قرار می گیرد و کاربران بیشتری را تحت تأثیر قرار می دهد.)
10 مورد برتر که در طول زمان تکامل می یابند
چشم انداز امنیتی همیشه در حال تغییر است و 10 برتر با آن تغییر می کنند. از زمان اولین انتشار آن در سال 2003، این لیست به طور مرتب به روز می شود تا مشکلات امنیتی جدید و الگوهای امنیتی در حال تغییر را منعکس کند.
بگذارید با یک مثال واقعی به شما نشان دهم که چگونه این کار می کند:
- در نسخه 2017، Cross-Site Scripting (XSS) به عنوان یک مشکل جداگانه ذکر شد.
- اما در نسخه فعلی 2021، XSS بخشی از یک دسته بزرگتر به نام “A3: Injections” شد.
در حال حاضر، ما از نسخه 2021 استفاده می کنیم، که باعث می شود در سال 2025 به 4 سال برسد. بر اساس گذشته، احتمالاً امسال شاهد به روزرسانی جدیدی خواهیم بود (همانطور که شما این مطلب را می خوانید کار در حال انجام است).
10 برتر چگونه ایجاد می شود؟
روند به روز رسانی تاپ 10 بسیار جالب است. در اینجا نحوه کار آن آمده است:
- اول، جامعه امنیتی دادههای دنیای واقعی را در مورد آسیبپذیریهایی که در کارهای روزمره خود پیدا میکنند، ارائه میکند.
- سپس OWASP 8 مشکل رایج را از این داده ها انتخاب می کند.
- در نهایت، جامعه از طریق یک نظرسنجی آزاد به اضافه کردن 2 موضوع دیگر رأی میدهد.
ممکن است تعجب کنید: چرا فقط 10 مشکل رایج را انتخاب نکنید؟ خوب، حتی با داده های از بیش 200000 آسیب پذیری (این چیزی است که آنها برای نسخه 2021 داشتند)، برخی از مشکلات مهم ممکن است به اندازه کافی در آمار نشان داده نشوند.
بنابراین به نظرسنجی جامعه به عنوان یک شبکه ایمنی فکر کنید. این به شناسایی تهدیدات امنیتی جدید یا نوظهور کمک می کند که ممکن است هنوز در داده ها نشان داده نشوند اما می توانند در آینده مشکلات بزرگی باشند.
وجود ندارد یکی لیست 10 تای برتر
Top 10 در بیشتر موارد سعی می کند واقعیت را منعکس کند، اما انواع مختلف برنامه ها با چالش های امنیتی متفاوتی روبرو هستند. به عنوان مثال:
- یک برنامه PHP ممکن است با مشکلات امنیتی متفاوتی نسبت به برنامه Ruby on Rails مواجه شود.
- تیم های توسعه مختلف تمایل به انجام انواع مختلفی از اشتباهات امنیتی دارند.
به همین دلیل است که 10 برتر به سمت پشته های فناوری در سطح سازمانی منحرف شده است (این جایی است که داده ها از آنجا می آیند)، و همچنین به همین دلیل است که می توانید لیست های 10 برتر سفارشی ایجاد کنید.
در واقع، خود OWASP 10 لیست برتر اضافی را برای نیازهای مختلف ایجاد کرده است. مثالها عبارتند از:
به این لیست های تخصصی به عنوان دستورالعمل های امنیتی متمرکز برای انواع خاصی از برنامه ها فکر کنید. در حالی که 10 اصلی به عنوان یک معیار کلی خوب برای یک برنامه وب معمولی عمل می کند، این لیست های تخصصی می توانند به شما کمک کنند تا بر روی مسائل امنیتی مرتبط با دامنه خاص خود تمرکز کنید.
از ابزار آگاهی تا استاندارد صنعت؟
OWASP Top 10 داستان جالبی دارد. این به عنوان یک راه ساده برای کمک به توسعه دهندگان و مدیران در درک آسیب پذیری های امنیتی موثر بر برنامه های وب شروع شد. اما با گذشت زمان، به چیزی بزرگتر تبدیل شد – بسیاری از سازمان ها اکنون آن را به عنوان یک استاندارد صنعتی در نظر می گیرند.
با این حال، موضوع این است: قرار نیست 10 برتر یک استاندارد امنیتی کامل باشد. حتی سازندگان آن نیز در این مورد شفاف هستند. هنگامی که سازمان ها به یک استاندارد امنیتی مناسب نیاز دارند، خود OWASP استفاده از استاندارد تأیید امنیت برنامه (ASVS) را به جای آن توصیه می کند:
سازندگان همچنین پیشنهاد می کنند که سازمان ها باید:
اتفاقاً در آینده به هر دوی آنها خواهیم پرداخت. در جریان باشید!
10 تا 2021: خود فهرست
ما در مورد اینکه 10 برتر چیست صحبت کرده ایم، اما اجازه دهید به اصل آن بپردازیم: این مشکلات امنیتی برتر چیست؟ در اینجا لیست فعلی از سال 2021 با توضیحات انگلیسی ساده برای هر یک آمده است:
- کنترل دسترسی خراب شامل مدیریت اینکه چه کسی می تواند به چه چیزی در برنامه شما دسترسی داشته باشد. یک مثال خوب زمانی است که کاربران می توانند داده های خصوصی کاربران دیگر را به سادگی با تغییر اعداد در URL مشاهده کنند. این به عنوان Reference Object Direct Insecure شناخته می شود و یکی از خطرناک ترین و رایج ترین آسیب پذیری ها در برنامه های کاربردی وب است.
- خرابی های رمزنگاری مشکلات مربوط به نحوه محافظت برنامه ها از داده های حساس را پوشش دهد. یک مثال کلاسیک زمانی است که برنامهها از روشهای قدیمی مانند MD5 یا SHA-1 برای ذخیره رمزهای عبور کاربر استفاده میکنند. بله، راه های بسیار بهتری برای انجام این کار وجود دارد!
- تزریقات زمانی اتفاق میافتد که برنامهها به درستی بررسی نمیکنند که کاربران چه چیزی را تایپ میکنند. اسکریپت بین سایتی معروف (XSS) در این دسته قرار میگیرد و به مهاجمان اجازه میدهد کدهای جاوا اسکریپت مخرب را در وبسایت شما تزریق و اجرا کنند. شایان ذکر است که این مشکل خاص بیش از 20 سال است که برنامه های وب را آزار می دهد و هنوز هم ادامه دارد.
- طراحی ناامن به نقص های امنیتی که در طراحی اولیه برنامه ها وجود دارد اشاره دارد. این مشکلات عمیقتر از اشتباهات ساده کدنویسی است – به یک برنامه بانکی فکر کنید که نقل و انتقالات وجوه را به درستی تأیید نمیکند. این به جای اشکالات در لایه پیاده سازی، مربوط به نقص های اساسی طراحی است.
- پیکربندی اشتباه امنیتی زمانی رخ می دهد که تنظیمات امنیتی به درستی تنظیم نشده باشد. اغلب، اینها فقط تنظیمات پیش فرضی هستند که هیچ کس آن را تغییر نداده است. این مشکلات بر روی برنامهها و زیرساختهای آنها تأثیر میگذارد، مانند زمانی که سرصفحههای امنیتی اشتباه پیکربندی شدهاند یا به طور کامل از بین رفتهاند.
- مولفه های آسیب پذیر و قدیمی– مقوله ای جذاب که مستقیماً شامل کد برنامه نیست، بلکه شامل کتابخانه هایی است که برنامه ها استفاده می کنند. این مشکل میتواند همه چیز را تحت تأثیر قرار دهد: فرانتاند، بکاند و حتی زیرساختهایی که به آنها خدمات میدهند.
- خرابی های شناسایی و احراز هویت یک مقوله گسترده است که شامل مشکلاتی در مورد نحوه اثبات اینکه کاربران چه کسی هستند را شامل می شود. در موارد شدید، آسیبپذیریهای این دسته میتوانند عواقب واقعاً فاجعهباری داشته باشند، مانند اجازه دادن به مهاجمان برای دور زدن کامل ورود.
- نقص نرم افزار و یکپارچگی داده ها مشکلاتی در حفظ کد و داده ها از دستکاری وجود دارد. یک مثال رایج زمانی است که برنامهها اسکریپتهای خارجی را از CDNها بدون تأیید صحت آنها بارگیری میکنند و به طور بالقوه به مهاجمان اجازه میدهند کدهای مخرب را تزریق کنند.
- خرابی های ثبت و مانیتورینگ امنیتی به موضوع عدم نگهداری سوابق مناسب از فعالیت ها در برنامه خود مراجعه کنید. یک مثال معمولی زمانی است که برنامهها نمیتوانند حملات خودکار را شناسایی و مسدود کنند و آنها را در برابر فعالیتهای مخرب پایدار آسیبپذیر میکند.
- جعل درخواست سمت سرور (SSRF) تنها آسیب پذیری مستقل در لیست است، نه یک دسته وسیع. زمانی اتفاق میافتد که مهاجمان میتوانند سرور شما را وادار کنند درخواستهایی را که نباید ارسال کند، به طور بالقوه سیستمهای داخلی را در معرض حملات دنیای خارج قرار میدهد.
درک این نکته بسیار مهم است: در حالی که نسخههای قبلی Top 10 بر آسیبپذیریهای خاص تمرکز داشتند، نسخه 2021 عمدتاً با دستههای گستردهتری از مشکلات سر و کار دارد (به جز SSRF در شماره 10).
این فهرست را جامعتر میکند، اما نمیتواند به طور قطعی بگوییم که برنامهای «عاری از 10 مشکل برتر OWASP» است، زیرا هر دسته شامل آسیبپذیریهای خاصی است. برخی از دستهها، مانند طراحی ناامن، آنقدر گسترده هستند که ماهیتاً تقریباً فلسفی هستند. به نظر می رسد نویسندگان موافقند:
ساختار داخلی
وقتی به داخل نگاه می کنیم، خواهیم دید که هر موقعیت از لیست 10 برتر دارای توضیحات گسترده تری است که شامل بخش های زیر است:
- خلاصه ای از مشکل.
- توضیح گسترده تر، اما نه خیلی گسترده تر از مشکل داده شده (به عنوان مثال، لیست کوتاهی از موقعیت هایی که می تواند منجر به آسیب پذیر شدن برنامه شود).
- شرح مختصری از نحوه جلوگیری از مشکل داده شده.
- چندین نمونه از حملات معمولی (یعنی بهره برداری از آسیب پذیری ها) در قالب سناریو.
- ارجاعات، اغلب به سایر پروژه های OWASP مانند ASVS که قبلا ذکر شد، اما همچنین به سری برگه های تقلب یا کنترل های فعال.
- و در نهایت، لیستی از CWE هایی که بخشی از کلاس مشکل داده شده هستند.
و ممکن است تعجب کنید: CWE چیست؟ CWE (Common Weakness Enumeration) یک پروژه مجزا از سازمان MITER است که نویسندگان آن هدف خود را برشمردن تمام نقاط ضعف خاص و فردی که ممکن است در نرم افزار رخ دهد، تعیین کرده اند.
آیا جایگزینی وجود دارد؟
ما مهمترین جنبه های 10 برتر OWASP را پوشش داده ایم و شاید اکنون از خود بپرسید که “آیا جایگزینی وجود دارد؟” البته! قطعا لیست های غیر OWASP مشابهی وجود دارد.
یک مثال خوب HackerOne Top 10 است، که یک 10 برتر است که توسط بزرگترین پلتفرم Bug Bounty در جهان ایجاد شده است، که سالانه تقریباً 200000 گزارش از آسیب پذیری های واقعی از طریق آن ارسال می شود (به همراه احتمالاً همان مقدار مثبت کاذب …).
یکی دیگر از لیست بازار شناخته شده مشکلات امنیتی رایج که بر انواع نرم افزارها تأثیر می گذارد، CWE Top 25 است. همانطور که قبلاً اشاره کردم، مزیت قابل توجه CWE توجه آن به سطح انتزاع است. هر نقطه ضعف ذکر شده در CWE Top 25 یک مسئله خاص است، بر خلاف OWASP Top 10 که نشان دهنده دسته ای از مشکلات است. از طرف دیگر، یک نقطه ضعف این است که تمام نقاط ضعف را بدون در نظر گرفتن نوع برنامه در کنار هم قرار می دهد.
به عنوان مثال، در آخرین CWE Top 25 (که در طول زمان نیز تغییر می کند)، استفاده-پس از-رایگان را خواهید یافت. این خوب است، اما این ضعف برای برنامه هایی که به زبان های سطح پایین مانند C++ (مثلاً مرورگرها) نوشته شده اند، معمول است. بنابراین، اگر در توسعه وب کار میکنید – و بیشتر کارها در اینجا انجام میشود – استفاده پس از رایگان واقعاً به شما مربوط نمیشود زیرا بر شما تأثیری نمیگذارد.
مراحل بعدی
اکنون که می دانید 10 برتر چیست، احتمالاً یک سوال در ذهن شما شکل گرفته است: چگونه می توان از آن استفاده کرد؟ من به شما دو جهت می دهم:
- 10 برتر در این زمینه عالی عمل می کند ایجاد آگاهی اولیه در مورد مشکلات امنیتی برنامه های وب در میان تیم های توسعه. در اینجا من صحبت می کنم و پیاده روی می کنم – OWASP Top 10 یکی از پایه های برنامه های آموزشی خودم است که با آن در لهستان موفقیت زیادی کسب کرده ام.
- 10 برتر را می توان در مراحل اولیه توسعه استفاده کرد، به عنوان مثال، به عنوان یک کتابخانه حمله در جلسات مدل سازی تهدید و/یا به عنوان یک خط پایه چک لیست در مرحله اجرا در فرآیند بررسی کد امن. ابزارهای بهتری برای هر دو این زمینه وجود دارد، اما 10 برتر قطعا می تواند نقطه شروعی در آنجا باشد.
این همه برای مردم امروز است. با احترام و هفته آینده می بینمت!
PS اگر این مقاله برای شما مفید بود، لطفا هزینه را پرداخت کنید با به اشتراک گذاشتن آن با کسی که می دانید نیز از آن سود خواهد برد. خیلی ممنونم! 🙏