خب تو این مقاله بطور خلاصه میخواهیم به موضوع تغییرات اخیر OWASP TOP 10 بپردازیم. برنامه Open Web Application Security Program، یا بطور مخفف OWASP یک سازمان غیر انتفاعی است که برای ارتقای امنیت نرم افزارها اختصاص یافته است. این سازمان چندین سرویس مختلف به توسعه دهندگان ارائه میدهد تا برای ارتقای ابزارها، اتفاقات اجتماعی و منابع آموزشی استفاده میشود. این سازمان معمولا راهکارهای کاربردی ارائه میدهد که شامل آپدیت کردن برنامه OWASP Top 10 Web Application Security Risks هم میشود.
اما بطور کلی این لیست Top Ten ریسک های امنیتی وب اپلیکیشن ها چگونه تعیین میشود؟ OWASP این لیست را با آنالیز کردن داده ها و جمع کردن نظرسنجی های صنعتی ارائه میدهد. دو تا از ریسک های که در لیست Top Ten قرار دارند توسط نظرسنجی هایی که توسط اعضای جامعه گردآوری شده است، منطبق داده شده است. این پروسه به توسعه دهندگان اجازه میدهد تا خطراتی را که معمولا به آن ها برخورد میکنند برجسته کنند که این خود در داده های آنالیز شده نمایان نمیشود.
در بخش بعدی میخواهم به این موضوع بپردازم که OWASP Top 10 Web Application Security risks چه موضوعاتی را شامل میشود:
این لیست که اخیرا آپدیت جدید آن منتشر شده است، با مقایسه آن با لیستی که در سال 2017 منتشر شده است، در این لیست توسعه دهندگان میتوانند مشکلات متدوال توسعه نرم افزار ها را با مشکلاتی که اخیرا شناسایی شده اند مشاهده کنند:
خب تو این بخش میخواهم درباره چندین بخش مختلف از اجزا این جدول را برایتان تشریح کنم:
Injection:
ریسک هایی که در این دامنه قرار میگیرند شامل وارد کردن داده های غیر قابل اعتماد به یک مفسر میشود که بعنوان یک درخواست یا کامند ارسال میشود. در این موضوع injection هایی همچون SQL, NoSQL, OS, LDAP, و دیگری قرار میگیرد. تزیرقات مخرب باعث میشود که کامندهای خطرناکی اجرا شوند و یا داده های حساسی لو رود. این لیست اکنون شامل cross-site scripting نیز میشود که در سال 2017 وارد این لیست شده است. یک راه برای اینکه بتوان از این نوع حملات (تزیقات -مثل آمپول ?-) جلوگیری کرد، جدا سازی داده ها از کامندها و کوئری هاست.
Broken Authentication:
همانطور که از اسمش مشخص است، این حمله زمانی اتفاق می افتد که اجرای مدیریت نشست (session) ناقص باعث میشود تا مهاجم کنترل اکانت مقابل را بدست بگیرد. اینکار به مهاجمان بد که احراز هویت را میشکانند و یا دیگر توابع(؟) مدیریتی نشست را اجازه میدهد تا به رمزها و کلیدها و توکن های نشست دسترسی داشته باشند. این ریسک در زیر مجموعه آسیب های احراز هویت و شناخت هویت در لیست 2021 لیست OWASP قرار میگیرد.
Senstive Data Exposure:
داده های حساس میتوانند توسط اپلیکیشن ها و یا API ها که حفاظت های درونی رضایت بخش ندارند، استخراج شود. برای داشتن امنیت قوی، اینکه مقداری امنیت برای انتقال یا بخشی از داده استفاده کنیم مهم است. داده های امن برای بازیگران مخرب جزئ از دسته اقلام با ارزش حساب میشود. که باعث میشود تا امنیت داده های دارای اهمیت باشد. داده دزدیده شده میتواند از طریق انجام دادن جرم، blackmailing، جرم های مربوط به هویت و فروخته شدن در وب تاریک شود. در سال 2021 این به زیر مجموعه cryptographic failures ادغام شد.
XML External Entities (XXE):
خطرات از این نوع حملات منجر به سواستفاده از مفسرهای XML میشود که برای حملات DDOS استفاده میشوند یا برای کارهای خطرناک دیگر استفاده میشوند. مفسرهای از مصرف گذشته و یا اشتباه تنظیم شده XML میتواند منجر به بازنشانی فایل های داخلی، اشتراک فایلها، port scanning داخلی و RCE (remote code execution) شود. از آنجایی که حملات XXE وابسته به تعاریف نوع سند (DTDs) که فعال هستند میشود، غیر فعال کردن آن هر زمان که ممکن باشد توصیه میشود. اگر غیرفعال کردن DTDs یک انتخاب نباشد، OWASP یک لیست جایگزین برای اینکار در نظر گرفته است (https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.md). در سال 2021 به زیر مجموعه security misconfiguration ادغام شد.
Broken access control:
این نوع ریسک شامل انواع گسترده ای از ریسک ها میشود که عمدتا خطراتی را که به مهاجمان اجازه میدهد تا محدودیت های اطراف دسترسی را شامل میشود بشکند. نمونه هایی از آن شامل حملات مخاطره آمیز سطح دسترسی، دور زدن کنترل های سطح دسترسی، و استفاده از Insecure direct object references در کنار بقیه میشود. مهاجمانی که در کنترل سطح دسترسی نفوذ میکنند میتوانند داده شخصی را بدزدند، اکانت کاربران را بربایند(؟)، حقوق کاربران را تغییر دهند، یا حرکات خطرناک بعدی صورت دهند.
Security Misconfiguration:
این نوع ریسک ها شامل انواع متدوال ریسک های امنیتی هستند که محیط وب را شامل میشوند. آنها معمولا شامل:
جلوگیری از خطاهای امنیتی وابسته به امن کردن سیستم ها و نرم افزارها و پروسه ها است.
Vulnerable and Outdated Components:
استفاده از اجزا و ابزارهای پچ نشده و آپدیت نکرده یا دارای خطا در یک برنامه موجب میشود تا امنیت آن دچار خطا شود و در برابر حملات نرم آزاد قرار میدهد. این خطاها میتوانند در کتابخانه ها، چارچوب ها و ماژول های که دسترسی های یکسانی به پیدا میکند هنگامی که برنامه ها اجرا شوند. غیرفعال کردن پیش نیازها، استفاده فقط از اجزا قابل اطمینان، و دنباله روی از یک پروسه مدیریتی پچ شده امن سبب میشود که میزان خطرات شامل ریسک کاهش یابد.
Security logging and monitoring failures:
شناسایی سریع یک تله سبب میشود که آسیب به آن کمتر شود، ولی کمبود لاگ کردن و خطاهای مانیتورینگ سبب میشود که تلاش های امنیتی بیشتری را نشان میدهد. یافته ها بطور میانگین نشان میدهد که 228 روز طول میکشد تا شناسایی شود، و این کار به مهاجامان اجازه میدهد تا ضربه شدیدی وارد کنند. برنامه ها میتوانند با مطمئن قرار دادن این ریسک ها و زمانی که بصورت تمیز و کوتاه شده خطاها و یا هشدارها لاگ میشوند. این برنامه جز زیر مجموعه های مانیتورینگ و لاگ کردن ضعیف در سال 2017 به شمار میرود.
Cryptographic Failures:
این نوع خطاها زمانی رخ میدهند که داده های حساس و رمزها بصورت ناامن قرار گرفته اند. داده های حساس نیاز دارند تا بصورت رمز شده و یا hash شده هنگام انتقال و یا بخشی از آن باشند. بعنوان مثال رمزها باید بصورت hash شده قرار گرفته باشند بجای اینکه ساده قرار گرفته باشند، و داده های اطلاعاتی شخصی باید بصورت HTTPS باشند. اشتباه در محافظت کردن از داده های شخصی میتواند منجر شود که مهاجمان مرتکب جرم شوند، blackmail کنند، دزدی هویت کنند، یا جرایم دیگری را منجر شوند. شرکت ها میتوانند منجر شوند تا خطاهایی زیادی شکل گیرد همچون منتشر کردن داده های زیاد بدلیل GDPR اروپا و یا صنعت اقتصادی PCI-DSS. این بخش مربوط sensitive data exposure در سال 2017 میشود.
Insecure Design:
این یک موضوع جدید است که شامل پشتیبانی کردن خطرات بدلیل "طراحی کنترلی ناقص باعث میشود". این با پیاده سازی ناقص که در آن طراحی ناقص نمیتواند بصورت کامل نمیتواند اجرا شود. طراحی های ناقص میتواند کنترل های امنیت های نیاز شود. یا که بصورت خطرات پترن های طراحی های امن و یا دنبال کردن مدل ها و تست های گسترده میشود.
Software Data and Integrity Failures:
اینکار منجر میشود به آپدیت های نرم افزاری میشود که، داده های حساس میشود، و پایپلاین های CI/CD میشود. این کار شامل میشود که برنامه ها که بر روی محتویات غیرامن یا سرویس هایی همچون کتابخانه ها، پلاگین ها، یا CDNها شود. این همچنین شامل insecure deserialization میشود (از 2017). که هنگامی که داده های سریال شده از یک فایل، سوکت های شبکه، یا جریان که بصورت ناامن به یک شی منتقل میشوند. این مشکلات میتوانند از طریق ریپوهای امن پیدا شوند، یا با تایید کردن پیشنیازها با تست کردن بسیار زیاد امنیتی باشد.
Server Side Request Forgery:
این نوع از ریسک ها شامل چک کردن یا بررسی کردن URL های از قبل بصورت اجزای ریموت دسترسی داشته باشند. مهاجمان میتوانند با exploit کردن این اپهای خطرناک برای فرستادن درخواست های ساخته شده برای URL های خطرناک شود، حتی با گذراندن فایروالها، VPN ها و لیستهای دسترسی کنترلها. این ریسک ها میتوانند با جز جز کردن شبکه، غیرفعال کردن redirect HTTP، و تمیز کردن لیست کاربران، و معیارهای دیگر بکار میرود.
این لیست OWASP TOP 10 Web Application Security test list خیلی کامل بررسی کنید.
امیدوارم از مطالبم خوشتون اومده باشه (این آخرشو سرهم کردم رفت ?)