گزارش Acunetix در خصوص آسیبپذیری برنامههای کاربردی وببنیان
سال ۲۰۲۰ (قسمت اول)
گزارش Acunetix در خصوص آسیبپذیری برنامههای کاربردی وب، حاصل تحلیل دادههای آماری مربوط به آسیبپذیریهای وب و شبکه میباشد. محتوای این گزارش از بین نتایج پویشهای انجام شده در فاصله زمانی مارس ۲۰۱۹ تا فوریه ۲۰۲۰ به صورت تصادفی انتخاب شده و بیشتر تمرکز بر روی آسیبپذیریهای با درجه اهمیت بالا و متوسط بوده است. مشاهدات حاکی از آن است که آسیبپذیریهای وب و شبکه در مجموع نسبت به سال گذشته کاهش اندکی داشته و اهداف جدید، آسیبپذیریهای بیشتری نسبت به سایر اهداف دارند.
به طور خلاصه میزان آسیبپذیریها بر اساس نوع آنها به صورت زیر میباشند:
- اجرای کد از راه دور (RCE) : سه درصد (در سال ۲۰۱۹ برابر با ۲% بوده است)
- تزریق بهSQL (SQLi): هشت درصد (در سال ۲۰۱۹ برابر با ۱۴% بوده است)
- دایرکتوری تراورسال : چهار درصد (در سال ۲۰۱۹ برابر با ۲% بوده است)
- تزریق اسکریپت (XSS) : بیست و پنج درصد (در سال ۲۰۱۹ برابر با ۳۳% بوده است)
- کتابخانه جاوا اسکریپت آسیبپذیر : بیست و چهار درصد (در سال ۲۰۱۹ برابر با ۳۳% بوده است)
- آسیبپذیری SSRF : یک درصد (در سال ۲۰۱۹ هم ۱% بوده است)
- آسیبپذیری CSRF : سی و شش درصد (در سال ۲۰۱۹ برابر با ۵۱% بوده است)
- تزریق بهHost header : پنج درصد (در سال ۲۰۱۹ برابر با ۴% بوده است)
- آسیبپذیریهای وردپرس : بیست و چهار درصد (در سال ۲۰۱۹ برابر با ۳۰% بوده است)
مقدمه
هر ساله Acunetix دادههای جمعآوری شده از سرویس Acunetix Online را تحلیل کرده و نتایج را در قالب یک گزارش ارزیابی آسیبپذیری ارائه میدهد. گزارش امسال حاصل بررسی آسیبپذیریهای کشف شده بر اساس ۵۰۰۰ پویش انجام شده در فاصله زمانی مارس ۲۰۱۹ تا فوریه ۲۰۲۰ میباشد که عمدتا شامل آسیبپذیریهای با درجه اهمیت بالا تا متوسط در برنامههای کاربردی وب و همچنین شبکه میباشد. علیرغم اینکه مردم باور دارند که برنامههای کاربردی وب به تدریج امنتر میشوند، اما نتایج بدست آمده نشان میدهد که برنامههایی که پویش آسیبپذیری بر روی آنها انجام میشود امنیت بیشتری دارند. ضمنا اهداف جدید دارای آسیبپذیری بیشتری نسبت به سایر اهداف هستند. این موضوع از منظر امنیتی نگران کننده است. چرا که نشان میدهد توسعهدهندگان جدید دانش لازم برای جلوگیری از بروز آسیبپذیری را ندارند و یا این موضوع، مورد توجه تیمهای توسعهدهنده نمیباشد. طبق شواهد موجود آسیبپذیریهای XSS، کتابخانههای جاوا اسکریپت آسیبپذیر و مشکلات مربوط به وردپرس در مجموع ۲۵% از اهداف را تشکیل دادهاند. هرچند که این آمار نسبت به سال گذشته ۳۰% کمتر است اما نشان میدهد که برنامههای کاربردی وب هنوز هم آسیبپذیر هستند. به نظر میرسد که توسعهدهندگان وبسایتها و مدیران سیستمها، پیشرفت قابل ملاحظه ای داشتهاند. وضعیت برای آسیبپذیری SQLi مشابه سال گذشته است.
امروزه تقاضا برای برنامههای کاربردی تعاملی تحت وب افزایش یافته و تکنولوژیهای سمت مشتری (Client-Side) بیش از گذشته مورد استفاده قرار میگیرند. در نتیجه تعداد کتابخانههای جاوا اسکریپت نیز افزایش یافته است. برخی از این کتابخانهها آسیبپذیر هستند و در مجموع ۲۵% از برنامههای کاربردی وب از این کتابخانههای آسیبپذیر استفاده میکنند. آمار مربوط به زبانهای برنامهنویسی سمت سرویسدهندهها (Server-Side) نیز جالب توجه است. PHP همچنان محبوبترین زبان برنامهنویسی است. پس از آن ASP.NET قرار دارد، اما روز به روز از محبوبیت زبانهای سمت سرور کاسته میشود.
بر اساس نمودار زیر :
- میزان آسیبپذیریهای PHP کاهش چشمگیری داشته اما آسیبپذیریهای ASP.NET در حال افزایش هستند.
- آسیبپذیریهای Apache/nginx نیز کمتر شده اما در خصوص آسیبپذیریهای IIS شاهد افزایش هستیم.
اما دلایل این موضوع:
- فرض میکنیم که بیشتر برنامههای کاربردی وب که با زبان ASP/ASP.NET نوشته شدهاند بر روی سرورهای IIS اجرا میشوند
- بیشتر برنامههای کاربردی وب که با زبان PHP نوشتهاند نیز بر روی nginx اجرا میشوند
- نمودارهای PHP و Apache/nginx شبیه به هم هستند
- نمودارهای ASP/ASP.NET و IIS نیز به هم شبیهاند
با مقایسه آمار و ارقام فوق به نظر میرسد که ترکیب PHP و Apache/nginx به مرور امنتر، بالغتر و قویتر میشود. اما از طرف دیگر ترکیب ASP/ASP.NET و IIS هنوز به اندازه کافی بالغ و قوی نیست و به آرامی در حال از دست دادن محبوبیت خود میباشد. زبان PHP همچنان زبان محبوبی است چراکه تعداد زیادی از وبسایتهای مبتنی بر PHP در واقع وبسایتهای وردپرسی هستند. وبسایتهای وردپرسی غالباً ناامن اما ایستا هستند. بعد از تنظیم تم سایت و افزونههای مورد نظر نیازی به تغییرات اضافی نیست. در واقع سطح حملات زمانی تغییر میکند که تمها و افزونهها به روز میگردند. این بهروزرسانیها غالباً شامل موارد امنیتی هستند. موارد فوق نشاندهنده این موضوع است که برنامههای کاربردی وب مبتنی بر ASP/ASP.NET فعالانه توسعه یافتهاند. درصد بالایی از این آسیبپذیریها ممکن است ناشی از توسعه فعال باشد.
روششناسی
در این پژوهش ۵۰۰۰ نمونه پویش سال گذشته به صورت تصادفی از سرویس Online Acunetix متشکل از برنامههای کاربردی وب و شبکه انتخاب شده است. البته وبسایتهایی که برای اهداف آموزشی، آسیبپذیر هستند نیز حذف شدهاند.
پویش خودکار وب چگونه انجام میشود؟
سرویس Acunetix Online قادر به انجام ارزیابی امنیتی برنامه پویا (DAST) و ارزیابی امنیتی برنامه تعاملی (IAST) میباشد. ارزیابی به شیوه DAST یا Black-Box بدین معنی است که پویشگر هیچ شناختی از ساختار وبسایت هدف و یا تکنولوژیهای مورد استفاده ندارد. اما در ارزیابی IAST، پویشگر برخی از اطلاعات سیستم داخلی و یا برنامههای کاربردی را میداند. برای اینکار میبایست برنامه AcuSensor بر روی وبسرور جاوا، ASP.NET و یا PHP نصب گردد. این برنامه اطلاعات را از سرور وب به پویشگر ارسال میکند.
مراحل زیر معمولا حین پویش انجام میشوند و در صورت نیاز تکرار میگردند:
- خزش (Crawling): خزنده Acunetix کار خود را از صفحه Home یا Index شروع میکند. سپس با خزیدن به درون صفحات و لینکها، مدل ساختاری برنامه کاربردی وب را با شبیهسازی رفتار انسان ایجاد میکند.
- پویش (Scanning): به محض تشکیل مدل سایت توسط خزنده، تمام صفحات در دسترس به صورت خودکار برای کشف آسیبپذیری، ارزیابی میگردند.
- گزارشگیری (Reporting): روند پیشرفت پویش در لحظه قابل مشاهده است. در پایان پویش نیز نتایج به صورت خلاصه به کاربر نمایش داده میشود. ضمناً امکان تهیه گزارشهای مدیریتی و سایر گزارشات از جمله OWASP Top 10 و ISO 27001 نیز تعبیه شده است.
- ترمیم آسیبپذیریها (Remediation):
- وصله کردن: ابتدا دادههای خروجی را به یک فایروال برنامههای کاربردی تحت وب (WAF) انتقال داده تا بتوانید موقتاً جلوی حملات را بگیرید.
- مدیریت مسائل: هنگامی که از پلتفرمهای ردیابی مسائل مثل JIRA، GitHub یا GitLab استفاده میکنید میتوانید آسیبپذیریها را از لحظه کشف آنها تا زمان حل شدن پیگیری کنید. همچنین میتوانید از راهکارهای دائمی مثل Jenkins نیز استفاده کنید.
- پویش مداوم: برای اطمینان از ترمیم آسیبپذیریها امکان پویشهای برنامهریزی شده توسط Acunetix وجود دارد.
دادهها
نتایج زیر بر اساس دادههای تحلیل شده از سرویس Acunetix Online بدست آمده است. تمرکز بیشتر بر روی آسیبپذیریهای با درجه اهمیت بالا و متوسط بوده است.
آسیبپذیریها در یک نگاه
در این بخش تمام آسیبپذیریهای شناسایی شده لیست شدهاند. نمودارهای زیر، آسیبپذیریها را بر اساس نوع آنها نشان میدهند که بر اساس درجه اهمیت، گروهبندی شدهاند.
- درجه اهمیت بالا
- این نمودار، انواع آسیبپذیریهایی که در دسته آسبپذیریهای با درجه اهمیت بالا جای میگیرند را نشان میدهد.
- درجه اهمیت متوسط
- این نمودار، انواع آسیبپذیریهایی که در دسته آسبپذیریهای با درجه اهمیت متوسط جای میگیرند را نشان میدهد.
- Carter Horton تحلیلگر اطلاعات Acunetix میگوید: “ما از Acunetix برای ارزیابی دقیقتر وبسایتها و سرورهای اینترنتی استفاده میکنیم. Acunetix به ما کمک میکند تا آسیبپذیریهای مشترک با سایر برنامههای پویش آسیبپذیری را شناسایی کنیم. Acunetix در مورد شناسایی آسیبپذیریهای تزریق کد (مثل SQL، HTML، CGI و …) مطمئنتر بوده است.”
شدت آسیبپذیری
آسیبپذیری یک نقص در یک برنامه یا دستگاه است که ممکن است توسط هکرها مورد سوءاستفاده قرار بگیرد. مهاجمین میتوانند با اکسپلویت نمودن یک آسیبپذیری به اطلاعات حساس دست یابند، سیستم را از دسترس خارج سازند (حمله DoS) و یا موجب تخریب اطلاعات شوند. تأثیر یک آسیبپذیری بسته به اکسپلویتی که برای آن منتشر میشود متفاوت است. Acunetix شدت یک آسیبپذیری را بر اساس تأثیر اکسپلویت آن بر روی سیستم، تعیین میکند. درجه اهمیت یک آسیبپذیری به میزان دشواری اکسپلویت شدن آن نیز بستگی دارد. ممکن است کسب و کارها چندین سیستم داشته باشند که به صورت همزمان با هم کار کنند و برخی از آنها بحرانیتر از بقیه باشند. Acunetix این امکان را فراهم میسازد تا سیستمها را بر اساس حساسیت شغلی درجهبندی کنید.
- درجه اهمیت (شدت) بالا:
- این سطح نشان میدهد که یک مهاجم میتواند محرمانگی، یکپارچکی و دردسترس پذیری یک سیستم را بدون داشتن دسترسیهای خاص و یا دخالت کاربر به خطر بیندازد. در این مرحله احتمال اینکه مهاجم بتواند دسترسی را تا سطح سیستمعامل یا سایر سیستمها بالا ببرد زیاد است.
- درجه اهمیت متوسط:
- در این سطح مهاجم تا حدودی میتواند محرمانگی، یکپارچکی و دردسترس پذیری یک سیستم را به خطر بیندازد. برای حمله ممکن است نیاز به دسترسیهای خاص، دخالت کاربر و یا شرایطی که خارج از کنترل مهاجم است، باشد. این آسیبپذیریها ممکن است همراه با سایر آسیبپذیریها برای تشدید حملات مورد استفاده قرار بگیرند.
- درجه اهمیت پایین:
- این سطح نشان میدهد که یک مهاجم میتواند محرمانگی، یکپارچکی و دردسترس پذیری یک سیستم را به صورت محدود به خطر بیندازد. برای پیشبرد این حمله نیاز به دسترسیهای خاص، دخالت کاربر و یا شرایطی که خارج از کنترل مهاجم است، میباشد. برای تشدید حمله میبایست این آسیبپذیریها را به همراه سایر آسیبپذیریها بکار برد.
- آسیبپذیریهای ترکیبی:
- در بیشتر موارد، آسیبپذیریهای متوسط و پایین در صورت ترکیب شذن با سایر آسیبپذیریها میتوانند بسیار خطرناک باشند. این آسیبپذیریها اغلب شامل حملات مهندسی اجتماعی نیز میباشند.
آرمان داده پویان ارائه دهنده تست نفوذ برنامههای کاربردی وب بنیان
برای کسب اطلاعات بیشتر با ما تماس بگیرید