روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ جامعه آنلاین OWASP (پروژه امنیت وب برنامه باز[1]) برای کمک به پیدا کردن آسیبپذیریهای اپ وبی، OWASP Top Ten را ساخته است. با دنبال کردن رتبهبندیهای این جامعه متوجه شدیم که امتیازدهیمان به آسیبپذیریهای اصلی متفاوت بوده است. از سر کنجکاوی تصمیم گرفتیم بدانیم این تفاوت چقدر فاحش است. برای همین امتیازبندی خود را باری دیگر مورد بررسی قرار دادیم.
مشخصات شرکت کنندگان و اپها
ما دادهها را از نمونهای از پروژههای ارزیابی امنیت برنامه که تیممان در سالهای 2021-2023 انجام داده بود، جمعآوری کردیم. اکثر اپهای وب متعلق به شرکتهای مستقر در روسیه، چین و خاورمیانه بود. تقریباً نیمی از برنامه ها (44٪) به زبان جاوا نوشته شده اند و پس از آن NodeJS (17٪) و PHP (12٪) قرار دارند. بیش از یک سوم (39%) از معماری میکروسرویس استفاده کردند.
ما دادههای بهدستآمده از طریق ارزیابی اپهای وب که از رویکردهای جعبه سیاه، خاکستری و سفید پیروی میکردند، تجزیه و تحلیل کردیم. تقریباً هر برنامهای که با جعبه خاکستری ارزیابی شده بود با جعبه سیاه نیز تجزیه و تحلیل شد، بنابراین ما این دو رویکرد را در آمار خود ترکیب کردیم. در نتیجه اکثریت قریب به اتفاق (83٪) از پروژههای اپ وبی از روشهای جعبه سیاه و خاکستری استفاده کردند.
اختلافات ناشی از رویکردهای متفاوت تحلیل
از آنجایی که روشهای جعبه سیاه، خاکستری و سفید مستلزم سطوح مختلف دسترسی به برنامهها بود، انواع آسیبپذیریهایی که به احتمال زیاد یافت میشد نیز متفاوت بودند. ما آسیبپذیریهای کشف شده را با و بدون دسترسی به کد منبع برنامه مقایسه کردیم. در نتیجه، چهار آسیبپذیری از پنج آسیبپذیری گسترده مطابقت داشتند، اما تفاوتهایی نیز وجود داشت. علاوه بر این، آمار نشان داد که رویکرد جعبه سفید امکان یافتن تعداد بیشتری از آسیبپذیریهای شدید مانند SQL Injection را میدهد. به طور متوسط، تجزیه و تحلیل جعبه سیاه/خاکستری 23 آسیب پذیری و تجزیه و تحلیل جعبه سفید 30 آسیب پذیری را نشان داد. اگرچه رویکرد جعبه سفید امکان یافتن تعداد بیشتری از آسیبپذیریها را در هر برنامه فراهم میکند، اما از رویکردهای جعبه سیاه و خاکستری میتوان برای نگاه کردن به برنامه از دیدگاه عامل مخرب استفاده و آسیبپذیریهایی را که ابتدا باید اصلاح شوند شناسایی کرد.
10 آسیبپذیری اپ وبی
ما نتایج پروژههای ارزیابی اپهای وبی را برای شناسایی گستردهترین و شدیدترین آسیبپذیریهایی که دنیای دیجیتال طی سه سال گذشته با آن مواجه شده بود، تجزیه و تحلیل کردیم.
Broken Access Control
70 درصد از اپهای وب که ما آنالیز کردیم حاوی آسیب پذیریهای مرتبط با مسائل کنترل دسترسی بودند.تقریباً نیمی از آسیبپذیریهای Broken Access Control دارای سطح ریسک متوسط و 37 درصد از سطح ریسک بالا هستند. آسیبپذیریهای پرخطر میتوانند باعث ایجاد خطا در برنامهها شوند و بر کسبوکار مشتریان تأثیر بگذارند. در یک برنامه، اعتبار ناکافی دادههای ارائه شده به ما اجازه میدهد به سرویسهای داخلی دسترسی پیدا کنیم و به طور بالقوه حملاتی را اجرا کنیم که منجر به ضرر مالی میشود.
راهکاری برای مهار: کنترلهای احراز هویت و مجوز را با توجه به مدل دسترسی مبتنی بر نقش پیاده سازی کنید. بهطور پیشفرض، دسترسی را رد کنید، مگر اینکه منبع در دسترس عموم باشد.
Sensitive Data Exposure
این نوع آسیبپذیری یکی دیگر از مواردی است که اغلب در اپهای وب یافت میشود. در مقایسه با کنترل دسترسی شکسته، قرار گرفتن در معرض دادههای حساس حاوی تعداد بیشتری از آسیب پذیریهای کم خطر بود، اما آسیب پذیریهای پرخطر نیز وجود داشت.در میان دادههای حساسی که در طول تجزیه و تحلیل خود شناسایی کردیم، رمزهای عبور و اعتبارنامههای یکبار مصرف متن ساده، مسیرهای کامل به دایرکتوریهای انتشار برنامههای وب و سایر اطلاعات داخلی بود که میتوان از آنها برای درک معماری برنامه استفاده کرد.
راهکاری برای مهار: فایل های حاوی دادههای حساس مانند رمز عبور یا نسخه پشتیبان را در فهرست ای انتشار برنامه های وب ذخیره نکنید. هنگام دسترسی به عملکردهای برنامه، از افشای دادههای حساس خودداری کنید، مگر اینکه خود تابع برای دسترسی به دادههای حساس استفاده شود.
Server-Side Request Forgery (SSRF)
محبوبیت معماری کلود و میکروسرویس در حال افزایش است. معماری میکروسرویس سطح حمله برای بهرهبرداری SSRF را به دلیل ارتباط بیشتر سرویس ها از طریق HTTP (یا سایر پروتکل های سبک وزن) در مقایسه با معماری سنتی گسترش میدهد. بیش از نیمی (57%) از برنامههایی که ما آنالیز کردیم حاوی آسیبپذیری بودند که به یک عامل مخرب اجازه میداد پس از دور زدن منطق برنامه با سرویسهای داخلی ارتباط برقرار کند: جعل درخواست سمت سرور.به طور خاص، یک عامل مخرب میتواند از SSRF در زنجیرهای با آسیبپذیریهای دیگر برای توسعه حمله به وب سرور یا خواندن کد منبع برنامه استفاده کند.
راهکاری برای مهار: در صورت امکان، یک لیست مجاز از منابعی که برنامه میتواند درخواست کند ایجاد کنید. از درخواست به منابعی که در آن لیست نیستند جلوگیری کنید. درخواست هایی که حاوی URL کامل هستند را نپذیرید. فیلترهای فایروال را برای جلوگیری از دسترسی به دامنه های غیرمجاز تنظیم کنید.
SQL Injection
بیشتر آسیبپذیریهای پرخطر در سالهای 2021-2023 با SQL Injection مرتبط بودند. با این حال، ما این دسته را در رده چهارم قرار دادیم زیرا تنها 43 درصد از برنامههایی که تجزیه و تحلیل کردیم در برابر آن آسیبپذیر بودند.آسیب پذیریهایی از این نوع می تواند منجر به سرقت اطلاعات حساس یا اجرای کد از راه دور شود. در طی یکی از پروژهها، تزریق SQL به برنامهای که برای ثبتنام توسط هر کاربر اینترنتی باز بود، به ما اجازه میدهد تا اعتبار یک مدیر سیستم داخلی را دریافت کنیم.
راهکاری برای مهار: از پرس و جوهای SQL پارامتری شده در کد منبع برنامه به جای ترکیب آنها با یک قالب پرس و جو SQL استفاده کنید. اگر نمی توانید از پرس و جوهای SQL پارامتری استفاده کنید، مطمئن شوید که هیچ داده ای که توسط کاربر وارد شده و در ایجاد پرس و جوهای SQL استفاده می شود، نمی تواند برای اصلاح منطق پرس و جو استفاده شود.
Cross Site Scripting (XSS)
آسیبپذیریهای Cross-Site Scripting در 61 درصد از اپهای وب که آنالیز کردیم، کشف شد. در بیشتر موارد، این آسیبپذیری دارای ریسک متوسطی بود، بنابراین ما آن را در رتبه پنجم قرار دادیم، حتی اگر بسیار گسترده بود.بیش از نیمی (55٪) از تمام آسیب پذیریهای XSS مربوط به اپهای مورد استفاده توسط شرکت های فناوری اطلاعات و پس از آن بخش عمومی (39٪) بود.حمله XSS علیه کلاینت های برنامه می تواند برای به دست آوردن اطلاعات احراز هویت کاربر، مانند کوکی ها، فیشینگ یا انتشار بدافزار استفاده شود. در یک سناریوی حمله، XSS در زنجیرهای با آسیبپذیریهای دیگر اجازه میدهد رمز عبور کاربر را به یک مقدار شناختهشده تغییر داده و به این ترتیب با امتیازات آن کاربر به برنامه دسترسی پیدا کند.
راهکاری برای مهار: پردازش ورودی کاربر برنامه وب را با جایگزین کردن کاراکترهای بالقوه ناامن که میتوان برای قالببندی صفحات HTML به معادلهای آنها که کاراکترهای قالببندی نیستند، مورد استفاده قرار داد، ارائه میکند. این باید برای هر دادهای که از منابع خارجی به دست می آید و در مرورگر نمایش داده میشود (از جمله سرصفحه های HTTP، مانند User-Agent و Referer)انجام شود.
Broken Authentication
اگرچه تقریباً نیمی از آسیبپذیریهایی که در این دسته کشف کردیم دارای سطح ریسک متوسط (47٪) بودند، اما موارد پرخطر نیز وجود داشت که امکان دسترسی به برنامه وب را از طرف مشتریان مشتریان فراهم میکرد.به عنوان مثال، یک برنامه خاص فاقد JWT (Jason Web Token) است، بنابراین عامل مخرب می تواند JWT خود را (با مشخص کردن شناسه کاربر دیگر) تغییر دهد و از توکن به دست آمده برای انجام اقدامات مختلف در داخل حساب استفاده کند.
راهکاری برای مهار: اعتبار سنجی مناسب دادههای احراز هویت مورد استفاده برای دسترسی به برنامه را اجرا کنید. هنگام استفاده، امضاهای رمز و شناسه جلسه را تأیید کنید. اطلاعات مورد استفاده برای احراز هویت (کلیدهای رمزگذاری، امضا و غیره) باید منحصر به فرد بوده و دارای درجه بالایی از آنتروپی باشند. اسرار را در کد برنامه ذخیره نکنید.
Security Misconfiguration
کمی کمتر از نیمی از برنامههایی که آنالیز کردیم، دارای آسیبپذیری تنظیمات اشتباه امنیتی بودند. این دسته طیفی از آسیب پذیریها را از حالت اشکال زدایی فعال تا احراز هویت غیرفعال را پوشش میدهد.سرور Nginx یکی از برنامههایی که ما آنالیز کردیم، اجازه دسترسی به فایلهای موجود در فهرست اصلی (نسبت به دایرکتوری مشخص شده در دستورالعمل مستعار) را میداد. این می تواند برای دسترسی به فایل هایی که حاوی داده های محرمانه هستند استفاده شود.
راهکاری برای مهار: هنگام پیکربندی سیستم های مورد استفاده در زیرساخت فناوری اطلاعات، بهترین شیوههای امنیتی را دنبال کنید. فرآیند راهاندازی را خودکار کنید تا خطاها هنگام راهاندازی سیستمهای جدید حذف شوند. از اعتبارنامه های مختلف برای سیستمهای تست و تولید استفاده کنید. اجزای استفاده نشده را غیرفعال کنید.
Insufficient Protection from Brute Force Attacks
بیش از یک سوم از برنامههای آنالیزشده توسط ما، اجازه حملات brute force یا همان جستجوی فراگیر را می دادند. گذرواژههای یکبار مصرف و احراز هویت در برابر منابع مختلف، مانند حسابها یا سیستمهای فایل، برخی از مکانیسمهایی بودند که ما متوجه شدیم آسیبپذیر هستند. به طور خاص، پیادهسازی ضعیف OTP میتواند به مهاجم اجازه دهد تا OTP را به صورت brute-force، دور زدن این عامل احراز هویت و در نتیجه دسترسی غیرمجاز به برنامه آسانتر کند.
راهکاری برای مهار: از CAPTCHA استفاده کنید تا کار مهاجم را سختتر کنید. همچنین میتوانید از کنترلهای پیشگیری (WAF، IPS)برای مسدود کردن سریع تلاشهای بیرحمانه، هم در مورد ورود ناموفق چندگانه به یک حساب و هم ورود ناموفق چندگانه به حسابهای مختلف که از یک منبع منشا میگیرند، استفاده کنید.
Weak User Password
رمز عبورهای ضعیف برای 22 درصد از اپهای وب که ما آنالیز کردیم تنظیم شد.توضیح برای درصد نسبتاً پایین آسیبپذیریها در این دسته، این واقعیت است که تحلیلگران امنیتی اغلب به جای سیستمهای زنده، با میزهای تست مشتری کار میکنند. اگرچه تعداد برنامههای حاوی این نوع آسیب پذیری کم است، اما پیامدهای سوء استفاده از اعتبار ضعیف میتواند قابل توجه باشد. بسته به نوع حساب، مهاجم میتواند به ویژگیهای اصلی برنامه یا سناریوهای اداری دسترسی داشته باشد که میتواند بر فرآیندهای تجاری تأثیر بگذارد.
راهکاری برای مهار: برای مثال، با اجرای گذرواژههای جدید یا تغییر یافته در برابر فهرستی از 10000 ضعیفترین رمز عبور، بررسیهای رمز عبور ضعیف را اجرا کنید. الزامات طول رمز عبور، پیچیدگی و انقضا را همراه با سایر سیاستهای رمز عبور مبتنی بر شواهد مدرن اعمال کنید.
Using Components with Known Vulnerabilities
آخرین اما نه کماهمیت ترین دسته، استفاده از مؤلفههایی با آسیبپذیریهای شناخته شده است.در میان مؤلفههای آسیبپذیر، چارچوبها و وابستگیهای کاربردی مختلف، مانند کتابخانهها و ماژولها بودند. برخی از این موارد به ما امکان دسترسی به سرورهای مورد استفاده برنامهها را میدهند و در نتیجه به شبکههای داخلی مشتریان نفوذ میکنند.
راهکاری برای مهار: به طور منظم از اجزای نرم افزاری که استفاده می کنید موجودی تهیه نموده و در صورت نیاز به روز رسانی کنید. فقط از اجزای قابل اعتمادی استفاده کنید که تست های امنیتی را با موفقیت پشت سر گذاشتهاند. اجزای استفاده نشده را غیرفعال کنید.
نتیجهگیری
رفع گستردهترین آسیبپذیریهای برنامههای وبی که در این مطالعه توضیح داده شدهاند، به شما کمک میکند تا از دادههای محرمانه خود محافظت و از به خطر افتادن برنامههای کاربردی وب و سیستمهای مرتبط جلوگیری کنید. برای بهبود امنیت اپهای وبی و تشخیص به موقع حملات، توصیه میکنیم موارد زیر را انجام دهید:
- چرخه عمر توسعه نرم افزار امن (SSDLC) را دنبال کنید.
- ارزیابی امنیتی برنامه منظم را اجرا کنید.
- از ثبت و نظارت برای ردیابی فعالیت برنامه استفاده کنید.
به نوبه خود، میتوانیم برای کشف آسیبپذیریها نه تنها در برنامههای وب، بلکه در دستگاههای خودپرداز، زیرساخت فناوری اطلاعات و ICS کمک کنیم. از طریق آگاهی از آسیب پذیریها و تهدیدات مرتبط، میتوانید بهتر از داراییهای اطلاعاتی خود محافظت کنید.
[1] Open Web Application Security Project
منبع: کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.