آخرین لیست OWASP پیرامون تهدیدهای رایج برای شرکتها در سال 2022 و چگونگی محافظت در برابر آنهاست.
OWASP بهتازگی لیست اصلاحشده خود را از ده مورد آسیبپذیری مهم برای مشاغل در سالهای 2021-2022، پنج سال پس از آخرین اطلاعیه خود منتشر کرده است.
OWASP Top 10 مدل 2021-2022 در مقایسه با مدل 2017
Open Web Application Security Project (OWASP) یک سازمان غیردولتی است که هدف آن بهبود امنیت نرمافزار است. OWASP یک فروشگاه چندمنظوره برای افراد، شرکتها، سازمانهای دولتی و سایر سازمانهای جهانی است که به دنبال عیبیابی و دانش واقعی در مورد امنیت application هستند. OWASP خدمات یا محصولات تجاری را تبلیغ نمیکند، اما مجموعهای از دوره های خود را در مورد امنیت برنامهها و حوزههای مرتبط ارائه میدهد.
علاوه بر این، مفهوم “open community” را مطرح میکند، به این معنی که هرکسی آزاد است در مکالمات آنلاین OWASP، طرحها و سایر فعالیتها شرکت کند. OWASP تضمین میکند که تمام منابع خود، ازجمله ابزارهای آنلاین، ویدیوها، انجمنها و رویدادها، از طریق وبسایت خود در دسترس عموم قرار گیرد. با افزایش جرائم سایبری، حملات (DDoS)، کنترل دسترسی معیوب و فاش شدن اطلاعات به دفعات اتفاق میافتد. بنیاد OWASP، OWASP Top 10را برای جلوگیری از این نگرانیهای امنیتی ایجاد کرد. OWASP Top 10 یک رتبهبندی از ده خطر جدی امنیتی برای برنامههای آنلاین موجود است که بر اساس اولویت آورده شده است. آخرین لیست OWASP Top 10در سال 2017 منتشر شد که اخیراً در سهماهه چهارم سال 2021 بهروزرسانی شده است.
در اینجا برخی از تغییرات مهم قابل مشاهده است:
A03: SQL Injections 2021 گستردهتر میشوند
اولین اصلاحات در ارتباط با SQL Injections است. حملات SQL Injections زمانی اتفاق میافتد که یک هکر سعی میکند دادهها را به یک برنامه وب ارسال کند، بهطوریکه برنامه وب یک عمل ناخواسته را انجام دهد. اینها ممکن است شامل اشکالات SQL Injections، سیستمعامل و پروتکل (LDAP) باشد. ازآنجاییکه این نقص نیز injectable است، بهروزرسانی فعلی OWASP Top 10 حملات(XSS) A07:2017 را تشدید میکند.
A05: پیکربندی اشتباه امنیتی 2021 در اولویت قرار دارد
با توجه به افزایش تعداد گزینههای پیکربندی، این دسته در OWASP Top 10 ارتقا یافته است. حمله XXE یک برنامه client-sideرا هدف قرار میدهد که ورودی XML را پردازش میکند. یک XML-External-Entities-Attack زمانی اتفاق میافتد که ارجاعات ورودی XML ناامن، به موجودیتهای خارجی تفسیر و پردازش شوند. بااینحال، این حمله تنها با یک تجزیهکننده XML معیوب یا پیکربندی نامناسب موفقیتآمیز است؛ بنابراین، A04:2017-XML External Entities (XXE) در A05:2021-Security misconfiguration بهعنوان یک نوع خاص از پیکربندی نادرست ادغامشده است.
10 آسیبپذیری برتر OWASP برای سال 2022 چیست؟
سه دستهبندی جدید در OWASP Top 10 سال 2021 با تغییرات و ادغام دامنه و نامگذاری اضافه شده است. برای شروع و محافظت در برابر این تهدیدها، در اینجا مهمترین آسیبپذیریهای امنیتی که باید در سال 2022 مراقب آنها بود، آورده شده است:
- کنترل دسترسی خراب Broken access control
کنترل دسترسی استراتژیهایی را برای جلوگیری از عملکرد کاربران فراتر از محدوده مشخصشده خود پیادهسازی میکند. به دلیل آسیبپذیریهای دسترسی، کاربران احراز هویت نشده ممکن است به دادهها و فرآیندهای طبقهبندیشده و تنظیمات امتیاز کاربر دسترسی داشته باشند.
دستکاری metadata، ازجمله دستکاری یا اجرای مجدد یک نشانه کنترل دسترسی JSON (JWT)، یا تغییر cookies یا فیلدهای مخفی برای افزایش امتیازات یا سوء استفاده از باطل شدن JWT، نمونهای از آسیبپذیری کنترل دسترسی است. مثال دوم نقض اصل denial بهطور پیشفرض است. دسترسی باید فقط به نقشها، قابلیتها یا کاربران خاصی داده شود، اما برای همه قابلدسترسی است. چنین خطاهایی ممکن است دسترسی Attackers به همه جا را آسان کنند.
بااینحال، ممکن است با استفاده از رویکردهای کدگذاری ایمن و انجام اقدامات احتیاطی مانند غیرفعال کردن حسابهای admin و محدودیتها و نصب احراز هویت چندعاملی، از مکانیسمهای امنیتی دسترسی ناکافی و مسائل مربوط به مدیریت هویت یا رمز عبور جلوگیری کنید.
تکنیکهای پیشگیری تکمیلی عبارتاند از:
- مکانیسمهای کنترل دسترسی را فقط یکبار اجرا کنید و برای کاهش اشتراکگذاری منابع متقاطع (CORS) از آنها برای مدتزمان برنامه مجددا استفاده کنید.
- مدلهای Domain باید موانع محدود تجاری یک application متفاوت را اعمال کنند.
- دسترسی به رابطهای برنامهنویسی برنامه (API) و کنترلکنندهها را محدود کنید تا اثرات ابزارهای حمله خودکار را کاهش دهید.
- هر گونه اشکال در کنترل دسترسی را یادداشت کرده و در صورت لزوم به مدیران اطلاع دهید.
- بهجای ارائه دسترسی به کاربر برای ایجاد، مشاهده، اصلاح یا پاک کردن هرگونه اطلاعات، کنترلهای دسترسی model باید از مالکیت رکورد تبعیت کنند.
- مشکلات رمزنگاری(Cryptographic Failures)
مشکلات رمزنگاری که قبلاً بهعنوان قرار گیری در معرض دادههای حساس شناخته میشد، به جایگاه دوم رسید. این بیشتر یک علامت است تا اینکه علت اصلی باشد. در اینجا تأکید بر خطاهای رمزنگاری یا عدم وجود آنها است که اغلب دادههای حساس را در معرض دید قرار میدهد. موارد زیر نمونههای متداولی از قرار گرفتن در معرض اطلاعات حساس هستند:
- توکنهای Session
- شناسههای ورود و رمز عبور
- معاملات آنلاین
- اطلاعات شخصی (شبکه سرویس سوئیچ شده یا SSN، health records و غیره)
بهعنوانمثال، یک application ممکن است بهطور ایمن دادههای کارت اعتباری را با رمزگذاری خودکار پایگاه داده انجام دهد. متأسفانه، هنگامیکه به این اطلاعات دسترسی پیدا میشود، رمزگذاری بلافاصله انجام نمی گیرد و یک خطای Injection SQL را قادر میسازد تا اطلاعات کارت اعتباری را در قالب یک متن مشخص استخراج کند که ممکن است یک فرد خاطی از آن سوءاستفاده کند. با استفاده از تکنیکهای پیشگیری زیر میتوان از این مشکلات جلوگیری کرد:
- شما باید از الگوریتمهای hashing قوی، salted و تطبیقی با ضریب تأخیر برای ذخیره رمزهای عبور از قبیل scrypt، Argon2، PBKDF2 یا bcrypt استفاده کنید.
- هنگام انتقال دادههای حساس باید از پروتکلهای قدیمیتر مانند پروتکل انتقال فایل (FTP) و پروتکل انتقالنامه ساده (SMTP) اجتناب شود.
- بهجای استفاده صرف از رمزگذاری، توصیه میشود رمزگذاری تأییدشده را پیادهسازی کنید.
- کلیدهای تصادفی رمزنگاری باید بهصورت آرایه بایت تولید و ذخیره شوند. اگر از رمزهای عبور استفاده میشود، باید با استفاده از الگوریتمی برای ایجاد کلید مبتنی بر رمز عبور، به چیزی شبیه به یک کلید تبدیل شود.
- SQL Injection
SQL Injection (یا Injection) یک حمله پایگاه داده علیه وبسایتی است که از زبان (SQL) برای به دست آوردن اطلاعات یا انجام فعالیتهایی استفاده میکند که معمولاً به یک حساب کاربری تأییدشده نیاز دارند. تفسیر این کدها برای برنامه از روی کد خود دشوار است و به مهاجمان این امکان را میدهد که حملات SQL Injection را انجام دهند تا به مناطق محافظتشده دسترسی داشته باشند و دادههای حساس را بهعنوان کاربران قابلاعتماد پنهان کنند. SQL Injection شامل SQL Injection، SQL Injection فرمان، SQL Injection CRLF و SQL Injection LDAP و غیره است.
با حداکثر بروز تخمینی 19 درصد، میانگین میزان بروز 3 درصد و 274000 مورد، 94 درصد از برنامهها برای SQL Injection غربالگری شدند. درنتیجه، Injection به رتبه سوم در لیست اصلاحشده سقوط کرد.
برخی از تکنیکهای پیشگیری عبارتاند از:
یک جایگزین ترجیحی استفاده از یک API است که بهطور کامل از مفسر اجتناب میکند، یک API پارامتری ارائه میدهد، یا به ابزارهای نگاشت شی – رابطه (ORM) منتقل میشود.
استفاده از ورودی اعتبارسنجی مثبت سمت سرور توصیه میشود. برنامههای کاربردی متعدد، ازجمله فیلدهای متنی و API برای برنامههای تلفن همراه، به کاراکترهای ویژهای نیاز دارند.
استفاده از LIMIT و سایر محدودیتهای SQL در داخل پرسوجوها راهی عالی برای جلوگیری از قرار گرفتن در معرض دادههای عظیم در مورد SQL Injection است.
بیشتر بخوانید: فایروال چیست؟ تعریف، مؤلفههای کلیدی و بهترین روشها
- طراحی ناامن
اینیک مقوله کاملاً جدید برای سال 2021 است که بر روی اشکالات طراحی و معماری تمرکز دارد و نیاز به استفاده بیشتر از مدلسازی تهدید، توصیههای ایمنی طراحی و معماریهای مرجع دارد. طراحی ناایمن مقوله وسیعی است که شامل مشکلات گوناگونی است، مانند «نقص یا ناکافی بودن طراحی کنترل.» این بدان معنا نیست که طراحی ناامن ریشه تمام 10 دسته خطر اصلی دیگر است.
طراحی ناایمن با اجرای ناایمن یکسان نیست. نقصهای پیادهسازی میتواند منجر به آسیبپذیریها شود، حتی زمانی که طراحی امن باشد. از سوی دیگر، یک طراحی معیوب را نمیتوان با اجرای بیعیب و نقص جبران کرد زیرا تدابیر امنیتی لازم برای دفاع در برابر تهدیدات خاص وجود ندارد.
میتوان با استفاده از تکنیکهای پیشگیری زیر از این تهدیدات جلوگیری کرد:
با کمک متخصصان AppSec یک چرخه حیات توسعه ایمن را برای ارزیابی و ایجاد تدابیر امنیتی و حریم خصوصی تنظیم و استفاده کنید.
- راهاندازی و استفاده از Lifecycle توسعه ایمن با کمک متخصصان AppSec برای ارزیابی و ایجاد تدابیر امنیتی و حفظ حریم خصوصی توصیه میشود.
- اصطلاحات امنیتی و کنترلها را در Story های کاربر قرار دهید.
- Tenant segregation بر اساس طراحی در تمام سطوح نیز بهعنوان یک رویکرد پیشگیرانه عملی دیده میشود.
- تنظیمات اشتباه امنیتی
مسائل اجرای امنیت عمومی، مانند کنترلهای دسترسی نادرست پیکربندیشده، با فراهم کردن دسترسی سریع و آسان Attackers به دادههای حیاتی و Site Regions، خطرات قابلتوجهی ایجاد میکند.
OWASP با نرخ متوسط بروز 4% و بیش از 208000 رخداد[1] (CWE) در این دسته، 90% برنامهها را برای پیکربندی نادرست بررسی کرد. «پیکربندی CWE-16 و محدودیت نامناسب CWE-611 مرجع خارجی XML، دو CWE قابلتوجه هستند». برای جلوگیری از پیچیدگیهای پیکربندی، باید از تکنیکهای نصب ایمن استفاده کرد که عبارتاند از:
- یک فرآیند تقویت سیستماتیک امکان استقرار سریع و آسان یک محیط امن را فراهم میکند. پیکربندی محیطهای توسعه، کنترل کیفیت و عملیاتی باید مشابه و دارای امتیازات کاربر متمایز باشد.
- برای خودکارسازی فرآیندها در جهت ایجاد یک محیط امن جدید، صرفهجویی در زمان و تلاش لازم، ایده آل است. ویژگیها و فریمورک های استفادهنشده باید حذف شوند یا نصب نشوند. یک پلتفرم اصلی بدون ویژگیها، مؤلفهها، مستندات یا نمایشهای غیرضروری، احتمال آسیبپذیریهای پیکربندی را کاهش میدهد.
- اجزای آسیبپذیر و قدیمی
اکثر برنامههای آنلاین با کمک چارچوبهای شخص ثالث ایجاد میشوند. کدهای برنامه ناشناخته ممکن است منجر به نتایج نامطلوب و موقعیتهای ناخواسته مانند Accent Control Violations، SQL Injection و غیره شود.
اگر برنامه ناامن، پشتیبانی نشده یا قدیمی باشد، ممکن است خطرات مربوط به آسیبپذیری وجود داشته باشد. این بسته شامل Application / وب سرور، سیستمعامل، Applications، سیستم مدیریت پایگاه داده (DBMS)، API ها، عناصر دیگر، کتابخانهها و محیطهای زمان اجرا میباشد.
رویکردهای خودکار برای کمک به Attackers دریافتن ماشینهایی که بهدرستی پیکربندی نشده یا وصله نشدهاند، در دسترس هستند. برای مثال، موتور جستجوی IoT Shodan ممکن است به کاربران در کشف دستگاههایی که در معرض تهدید Heartbleed هستند که در آوریل 2014 رفع شد، کمک کند. برخی از تکنیکهای پیشگیری عبارتاند از:
- بهتر است قطعات را از منابع معتبر از طریق کانالهای امن خریداری کنید.
- مراقب ماژولها و عناصری باشید که کاربردی نیستند یا بهروزرسانیهای امنیتی را برای نسخههای قدیمیتر ارائه نمیکنند. اگر نمیتوان Patching را انجام داد، برای مشاهده، شناسایی یا محافظت در برابر آسیبپذیری مشاهدهشده، Patching مجازی ایجاد کنید.
- هرگونه الزامات، قابلیتها، عناصر، پوشهها یا اسناد اضافی را حذف کنید.
- مشکلات شناسایی و احراز هویت
این دسته که قبلاً بهعنوان احراز هویت ناقص شناخته میشد، از رتبه دوم سقوط کرد و اکنون حاوی CWE های مرتبط با مشکلات شناسایی است. هنگامیکه یک Attacker اطلاعات کاربر، بازیابی رمز عبور، جلسات ID و سایر اعتبارنامههای ورود را به دست میآورد، مشکلات امنیتی ایجاد میکند. همانطور که از نام آن پیداست، مشکلات احراز هویت و شناسایی شامل هکرهایی است که از چنین آسیبپذیریهایی برای استفاده از احراز هویت نادرست سوءاستفاده میکنند.
اگر برنامه اجازه حملات خودکار مانند پر کردن اعتبار – زمانی که Attacker به لیست کاربران واقعی و گذرواژهها دسترسی دارد – یا گذرواژههای از پیش تعریفشده، ضعیفتر و رایج مانند «Password1» یا «Admin/Admin» را میدهد، اینها میتواند نشانهای از نقصهای احراز هویت باشد.
برای جلوگیری از چنین نقصهایی، باید اقدامات پیشگیرانه زیر را در نظر گرفت:
- احراز هویت چندعاملی باید هر جا که امکانپذیر باشد برای جلوگیری از پر کردن خودکار اعتبار، حملات brute-force و استفاده مجدد از اعتبارنامههای سرقت شده استفاده شود.
- با بررسی گذرواژههای جدید یا اصلاحشده در برابر پایگاه دادهای از 10000 مورد از ضعیفترین رمز عبورها، میتوان امنیت رمز عبور را افزایش داد.
- استفاده از پیامهای مشابه برای هر نتیجه، به جلوگیری از حملات شمارش حساب در بازیابی رمز عبور، ثبتنامها و مسیرهای API کمک میکند.
- هیچ اعتبار پیشفرضی را نصب نکنید، بهخصوص برای کاربران اداری.
- نقص نرمافزار و یکپارچگی دادهها
ازآنجاییکه اطلاعات حساستر در پایگاههای داده ذخیره میشوند و در برابر نقضهای امنیتی آسیبپذیر هستند، نگرانیهای یکپارچگی دادهها برای نرمافزار ضروری میشود.
اینیک مقوله جدید است و برفرض یکپارچگی بهروزرسانیهای نرمافزار، دادههای حیاتی و رویههای CI/CD بدون تأیید آنها، تمرکز دارد. یک مثال زمانی است که برنامهها از افزونهها، ماژولها یا مخازن از شبکههای تحویل محتوا (CDN) یا منابع غیرمجاز استفاده میکنند. یک فرآیند یکپارچهسازی/تحویل پیوسته (CI/CD) که محافظت نشده است ممکن است خطر کد مخرب، به خطر افتادن سیستم یا دسترسی غیرمجاز را افزایش دهد.
تکنیکهای پیشگیری عبارتاند از:
- میتوان از معیارهایی مانند امضای دیجیتال برای تأیید اینکه دادهها یا نرمافزار از منابع مورد انتظار بدون هیچگونه دستکاری تهیهشدهاند، استفاده کرد.
- یک ابزار امنیتی برای زنجیرههای تأمین نرمافزار، مانند OWASP CycloneDX یا OWASP Dependency-Check، ممکن است برای تضمین عدم وجود ایرادات طراحی در اجزا استفاده شود.
- لازم است تضمین شود که گردش کار CI/CD دارای بخشبندی، کنترل دسترسی و پارامتر سازی لازم برای محافظت از یکپارچگی کد در طول عملیات راهاندازی و استقرار است.
- دادههای جمعآوریشده بدون امضا یا رمزگذاری نشده نباید به مشتریان غیرقابلاعتماد ارسال شوند، مگر اینکه آزمایش یکپارچگی یا امضای دیجیتالی برای شناسایی تغییر یا تکرار دادهها وجود داشته باشد.
- مشکلات logging و monitoring امنیتی
عدم ردیابی اقدامات و رویدادهای مشکوک میتواند شکافهای زمانی نظارتنشده را افزایش دهد و اجازه میدهد نقضهای امنیتی برای مدت طولانیتری بهواسطه logging مناسبتر نادیده گرفته شوند. این بخش OWASP Top 10 2021 بهمنظور کمک به شناسایی، تشدید و حلوفصل نقضهای اخیر است. تشخیص نقض امنیتی احتمالاً بدون ثبت و کنترل است.
یک شرکت هواپیمایی بزرگ اروپایی برای نشان دادن این شکست، یک رویداد گزارشی(GDPR) داشت. احتمالاً متخلفان از نقایص امنیتی app پرداخت برای به دست آوردن اطلاعات بیش از 400000 پرداختی مصرفکنندگان سوءاستفاده کردهاند. در پاسخ، متصدیان حریم خصوصی، این شرکت هواپیمایی را به دلیل دادههای نادرست، 20 میلیون پوند جریمه کردند. برای جلوگیری از چنین حملاتی، لازم است کاربران نکات زیر را در نظر بگیرند:
- بررسی تمامی مشکلات authentication، سیستمهای امنیتی دسترسی و اعتبارسنجی دادههای server-side با استفاده از اطلاعات کافی کاربر برای شناسایی حسابهای مشکوک یا کلاهبردار ثبتشده که برای یک دوره مناسب ذخیره میشوند تا تحقیقات جامعی در زمان مناسب صورت گیرد.
- کسب اطمینان از ایجاد log ها در فرمتهای قابلقبول توسط سیستمهای مدیریت log
- بهکارگیری یک استراتژی برای اعمال بازیابی رویدادها و تلاشهای پاسخ، مانند NIST 800-61r2 یا نسخه جدیدتر.
- کسب اطمینان از کدگذاری صحیح دادههای گزارش برای جلوگیری از نفوذ یا تهدیدات سایبری برای سیستمهای نظارتی
[1] Common Weakness Enumeration
این نوشته در حال به روزرسانی است.