در قسمت اول مقاله در مورد 5 مورد OWASP Top 10 در نرمافزارها صحبت کردیم و بیان کردیم که یک فهرست از ده مورد اصلی امنیتی در نرمافزارها است که توسط OWASP یا Open Web Application Security Project تهیه شده است. این فهرست به توسعهدهندگان و مدیران امنیت کمک میکند تا به تهدیدات اصلی و آسیبپذیریهای رایج در برنامههای کاربردی وب توجه کنند. آخرین نسخه OWASP Top 10 شامل موارد زیر است
Broken Access Control – A1: کنترل دسترسی ناقص.
Cryptographic Failures – A2: شکستهای رمزنگاری.
Injection – A3: حملات تزریقی مثل SQL Injection.
Insecure Design – A4: طراحی ناامن.
Security Misconfiguration – A5: پیکربندی نادرست امنیتی.
Vulnerable and Outdated Components – A6: استفاده از اجزای آسیبپذیر و قدیمی.
Identification and Authentication Failures – A7: شکست در شناسایی و احراز هویت.
Software and Data Integrity Failures – A8: شکست در یکپارچگی نرمافزار و دادهها.
Security Logging and Monitoring Failures – A9: شکست در لاگگذاری و نظارت بر امنیت.
Server-Side Request Forgery (SSRF) – A10: جعل درخواستهای سرور از سمت کاربر.
در ادامه به شرح 4 مورد باقیمانده خواهیم پرداخت.
بیشتر بخوانید: معرفی 12 شیوه کدنویسی ایمن توسط OWASP
6. تنظیمات نادرست امنیتی
پیکربندی نادرست امنیتی رایجترین آسیبپذیری در 10 OWASP Top در نظر گرفته میشود. آنها اغلب توسط سازمانهایی ایجاد میشوند که از پیکربندیهای پیشفرض وبسایت یا سیستم مدیریت محتوا یا CMS استفاده میکنند، که میتواند بهطور ناخواسته آسیبپذیریهای برنامه را آشکار کند. پیکربندیهای نادرست رایج همچنین شامل عدماصلاح نقصهای نرمافزار، صفحات وب استفادهنشده، دایرکتوریها و فایلهای محافظت نشده، مجوزهای اشتراکگذاری پیشفرض در سرویسهای ذخیرهسازی ابری، و سرویسهای استفادهنشده یا غیرضروری است. پیکربندی نادرست امنیتی میتواند در سراسر Stack برنامه رخ دهد: برنامهها و سرورهای وب، پایگاههای داده، سرویسهای شبکه، کد سفارشی، چارچوبها، ماشینهای مجازی از پیش نصبشده و containerها.
با تغییر تنظیمات پیشفرض مدیر وبسایت یا CMS، حذف ویژگیهای کدهای استفادهنشده، و کنترل نظرات کاربر و مشاهده اطلاعات آن، میتوان از پیکربندیهای نادرست امنیتی جلوگیری کرد. توسعهدهندگان همچنین باید اسناد، ویژگیها، چارچوبها و نمونههای غیرضروری را حذف کنند، معماری برنامهها را بخشبندی کنند، و کارایی تنظیمات و تنظیمات محیط وب را به شکل خودکار درآورند.
برای مشاوره رایگان جهت (باز)طراحی امنیت شبکه و یا انجام تست نفوذ مطابق با الزامات افتا با کارشناسان شرکت APK تماس بگیرید. |
7. برنامهنویسی بین سایتی یا XSS
آسیبپذیری اسکریپت بین سایتی زمانی رخ میدهد که برنامههای کاربردی تحت وب کاربران را قادر میسازند کد سفارشی را در مسیرهای URL یا وبسایتهای عمومی ارسال کنند. حملات XSS زمانی اتفاق میافتد که مجرمان سایبری اسکریپتهای مخرب را به یک وبسایت INJECT میکنند که به آنها این امکان را میدهد تا وبسایت را تغییر دهند. سپس مهاجم برای اجرای کد خود به قربانیانی که از یک مرورگر از صفحه بازدید میکنند، تکیه میکند که معمولاً از طریق Social Engineering یا جاسازی پیوندهای مخرب در ایمیلهای فیشینگ به آن دست مییابند. بهرهبرداری از یک آسیب پذیری XSS می تواند به مهاجم کنترل کامل مرورگرها را بدهد و آنها را قادر می سازد کدهای مخرب جاوا اسکریپت را به وب سایت ها INJECT کنند.
سازمانها میتوانند با استفاده از WAF برای کاهش و مسدود کردن حملات، از آسیبپذیریهای XSS جلوگیری کنند، در حالی که توسعهدهندگان میتوانند با جدا کردن دادههای غیرقابلاعتماد از مرورگرهای فعال، شانس حملات XSS را کاهش دهند. این شامل استفاده از چارچوبهایی است که با طراحی از XSS اجتناب میکنند،بهکارگیری پاکسازی و اعتبارسنجی دادهها، اجتناب از دادههای درخواستی پروتکل انتقال HTTP و استقرار یک policy امنیتی محتوا یا CSP.
بیشتر بخوانید: منظور از OWASP Top 10 چیست و چگونه کار میکند؟ – قسمت اول
8. Deserialization ناایمن
در شرایط ذخیرهسازی داده و علوم کامپیوتر، زنجیره سازی به معنای تبدیل اشیاء یا ساختارهای داده به رشتههای بایتی است. Deserialization به معنای تبدیل آن رشتههای بایتی به اشیا است. زنجیره زدایی ناامن شامل دستکاری دادهها از سوی مهاجمان قبل از اینکه Deserialize شود، میشود. اگر مهاجمان بتوانند با موفقیت یکشی را Deserializ کنند، ممکن است بتوانند به خود یک نقش مدیریت بدهند، دادهها را Deserialize کنند و کل برنامههای وب را در معرض خطر قرار دهند. با ممنوع کردن اشیاء Deserialize شده و ممنوع کردن Deserialization دادههایی که از منابع نامعتبر حاصل میشوند، میتوان از این امر جلوگیری کرد. OWASP همچنین نظارت بر فعالیت deserialization، اجرای بررسی یکپارچگی در برابر هر شیء سریالی برای جلوگیری از دستکاری دادهها، جداسازی کد deserialized در محیطهای کم امتیاز،و اینکه حصول اطمینان از ثبت همه استثناها و خرابیهای deserialization، و محدود کردن و نظارت بر اتصال شبکه از کانتینرها و سرورهایی که دادهها را deserialize میکنند.
9. استفاده از مؤلفههایی با آسیبپذیریهای شناختهشده
اجزای نرمافزاری مانند frameworkها و کتابخانهها اغلب در برنامههای کاربردی تحت وب برای ارائه قابلیتهای خاص، مانند اشتراکگذاری نمادها و آزمودن A/B استفاده میشوند. بااینحال، این مؤلفهها اغلب میتوانند منجر به آسیبپذیریهایی شوند که برای توسعهدهندگان ناشناخته، حفرهای امنیتی را برای مهاجم ایجاد میکنند تا حمله سایبری را انجام دهد.
این اغلب به دلیل بهروز نگه نداشتن برنامهها توسط توسعهدهندگان، کار نکردن کدهای قدیمی روی بهروزرسانیهای جدید، و نگرانی مدیران وبسایتها در مورد خرابی بهروزرسانیها در وبسایتهایشان یا نداشتن تخصص لازم برای اعمال بهروزرسانیها، ایجاد میشود. بااینحال، مهاجمان دائماً به دنبال آسیبپذیریهای احتمالی هستند که توسط توسعهدهندگان شناسایی نشدهاند، که معمولاً بهعنوان حملات zero-day شناخته میشوند و میتوانند از آنها سوءاستفاده کنند.
سازمانها میتوانند از طریق Patching مجازی، که وبسایتهای قدیمی را از سوءاستفاده از آسیبپذیریهایشان با استفاده از فایروال و دستگاههای تشخیص نفوذ یا IDS و WAF محافظت میکند، اجتناب کنند. همچنین میتوان با حفظ موجودی اجزاء و حذف هرگونه مؤلفه استفادهنشده یا نگهداری نشده، تنها با استفاده از مؤلفهها از منابع مطمئن، و اطمینان از بهروز بودن همه مؤلفهها در هر زمان، از آسیبپذیریها جلوگیری کرد.
10. ثبت و نظارت ناکافی
بسیاری از برنامههای کاربردی تحت وب بهاندازه کافی برای شناسایی نقض دادهها کارساز نیستند، که باعث میشود مهاجمان نهتنها به دستگاهها دسترسی غیرمجاز پیدا کنند، بلکه آنها را قادر میسازد تا ماهها و سالها منتظر بمانند. سازمانها باید برنامههای خود را برای رفتار غیرعادی یا مخرب ثبت و نظارت کنند تا از به خطر افتادن وبسایتهایشان جلوگیری کنند. کسبوکارها همچنین باید گزارشهای حسابرسی را نگهدارند که به آنها امکان میدهد هرگونه تغییر مشکوک را ردیابی کنند، فعالیتهای غیرعادی را ثبت کنند، و دسترسی غیرمجاز یا به خطر افتادن حساب را ردیابی کنند.