گزارش Acunetix در خصوص آسیبپذیری برنامههای کاربردی وببنیان، سال ۲۰۲۰
سال ۲۰۲۰ (قسمت دوم)
گزارش Acunetix در خصوص آسیبپذیری برنامههای کاربردی وب، حاصل تحلیل دادههای آماری مربوط به آسیبپذیریهای وب و شبکه میباشد. محتوای این گزارش از بین نتایج پویشهای انجام شده در فاصله زمانی مارس ۲۰۱۹ تا فوریه ۲۰۲۰ به صورت تصادفی انتخاب شده و بیشتر تمرکز بر روی آسیبپذیریهای با درجه اهمیت بالا و متوسط بوده است. مشاهدات حاکی از آن است که آسیبپذیریهای وب و شبکه در مجموع نسبت به سال گذشته کاهش اندکی داشته و اهداف جدید، آسیبپذیریهای بیشتری نسبت به سایر اهداف دارند. در این قسمت به بررسی:
- اجرای کد از راه دور (RCE) : سه درصد (در سال ۲۰۱۹ برابر با ۲% بوده است)
- تزریق بهSQL (SQLi): هشت درصد (در سال ۲۰۱۹ برابر با ۱۴% بوده است)
- دایرکتوری تراورسال : چهار درصد (در سال ۲۰۱۹ برابر با ۲% بوده است)
- تزریق اسکریپت (XSS) : بیست و پنج درصد (در سال ۲۰۱۹ برابر با ۳۳% بوده است)
- کتابخانه جاوا اسکریپت آسیبپذیر : بیست و چهار درصد (در سال ۲۰۱۹ برابر با ۳۳% بوده است)
پرداختهایم.
آسیبپذیری اجرای کد از راه دور (RCE)
این آسیبپذیری در صدر لیست آسیبپذیریهای با درجه اهمیت بالا قرار دارد. مهاجم با سوءاستفاده از این آسیبپذیری قادر به اجرای کد دلخواه خود در یک برنامه کاربردی وببنیان میباشد. اگر مهاجم قادر به اجرای کد باشد، میتواند دستورات دلخواه را در سیستمعامل اجرا کرده و حتی کنترل کامل سیستم را با ایجاد شِل معکوس (برقراری ارتباط از داخل به خارج) در اختیار بگیرد. در بیشتر موارد این موضوع باعث دور زدن فایروال خواهد شد چرا که معمولاً فایروالها، ترافیک خروجی (outbound) را مسدود نمیکنند. در صورت عدم نظارت بر ترافیک خروجی فایروال، مهاجم از طریق سیستم مورد حمله قادر به نفوذ به سایر سیستمها و یا دسترسی به اطلاعات آنها خواهد بود.
تحلیل
میزان آسیبپذیری RCE در برنامههای کاربردی وببنیان پایین است. این مقدار در سال گذشته پایینتر بود (۲%). این موضوع نگرانکننده است چراکه آسیبپذیری RCE موجب خسارات جدی خواهد شد و میبایست در اسرع وقت برطرف گردد.
آسیبپذیری تزریق به SQL ( SQL Injection یا SQLi)
این آسیبپذیری زمانی رخ میدهد که برنامهنویس، ورودی کاربر را بررسی یا تأیید نکرده باشد. در نتیجه مهاجم میتواند با وارد کردن کوئریهای SQL تغییراتی را در رکوردها و حتی جداول پایگاه داده ایجاد نماید. این حمله یکپارچکی دادهها را تحت تأثیر قرار داده و احتمالاً منجر به توقف کامل پایگاه داده (حمله DoS) خواهد شد. آسیبپذیریهایی از این قبیل به مهاجم این اجازه را میدهند تا تغییراتی را در فایلهای سیستم قربانی ایجاد کرده و یا حتی دستوراتی را نیز اجرا کند. همچنین امکان نفوذ به سایر سیستمها نیز از این طریق وجود دارد. آسیبپذیری تزریق به SQL یکی از خطرناکترین آسیبپذیریهاست و مدت زمان زیادی است که وجود دارد. ابزارها و روشهای زیادی برای مقابله با این حمله وجود دارند اما مهاجمین هم معمولاً این آسیبپذیریها را اکسپلویت میکنند. آسیبپذیری تزریق به SQL اغلب منجر به دسترسی مهاجم به اطلاعات مشتریان و شناسایی هویت آنها خواهد شد. با وضع قوانین GDPR این موضوع اهمیت فزایندهای پیدا میکند و عدم رعایت آن ممکن است منجر به پرداخت جریمههای سنگین گردد.
آسیبپذیری Blind SQL Injection
نسخه پیچیدهتر SQLi است و زمانی که در حالت معمول پیادهسازی حمله تزریق به SQL ممکن نباشد از این روش استفاده میشود. اجرای این حمله به زمان و حجم زیادی درخواست نیاز دارد. مدیران شبکه با بررسی لاگهای ثبت شده به راحتی قادر به شناسایی این حمله میباشند. عبارت Blind در نام این آسیبپذیری نشاندهنده این است که مهاجم مستقیماً قادر به افشای اطلاعات برنامههای کاربردی نمیباشد و از کوئریهای شرطی SQL (صحیح و غلط) برای پیشبرد حمله استفاده میکند. پاسخهای متفاوت برنامه کاربردی هدف به این درخواستها، ممکن است اطلاعاتی را در اختیار مهاجم قرار دهد. ترفند دیگر استفاده از دستورات SQL میباشد که باعث ایجاد تأخیر در پاسخ خواهد شد. مهاجم با علم به این موضوع، به نحوه اجرای دستورات در سیستم هدف پی خواهد بود.
تحلیل
بر اساس نمودار، ۸% از اهداف دارای آسیبپذیری تزریق به SQL میباشند. این آسیبپذیری نخستین بار در سال ۱۹۹۸ کشف شد. ابزارها و روشهای زیادی برای مقابله با آن توسعه داده شده است. یکی از روشهای مقابله با این آسیبپذیری، بکارگیری کوئریهای SQL به صورت پارامتری است و تمام فریمورکها و زبانهای برنامهنویسی نیز از این قابلیت پشتیبانی میکنند. درصد قابل توجهی از این آسیبپذیریها ممکن است به خاطر وجود برنامههای قدیمی و منسوخ باشد.
آسیبپذیریهای Local File Inclusion و Directory Traversal
این آسیبپذیریها به مهاجم اجازه دسترسی به سیستم میزبان را میدهند. مهاجم میتواند با استفاده از کاراکترهای “..\” یا “../” برای ارجاع به دایرکتوری والد، این کار را انجام دهد. در خصوص آسیبپذیری پیمایش فهرست (Directory Traversal) مهاجم ممکن است قادر به خواندن فایلهای غیر قابل دسترسی باشد. در سیستمعاملهای مبتنی بر لینوکس یا یونیکس مهاجم میتواند از دایرکتوری /proc برای دسترسی به نرمافزارها، سختافزارها، شبکه و … استفاده کند. در مورد آسیبپذیری Local File Inclusion یا LFI نیز مهاجم نه تنها قادر به خواندن فایلها خواهد بود بلکه ممکن است به داخل آنها کدهایی را نیز تزریق کند. اگر موفق به انجام چنین کاری گردد این کدها بر روی سرویسدهنده وب قربانی قابل اجرا خواهند بود.
تحلیل
بر اساس نمودار، ۴% از اهداف انتخابی دارای آسیبپذیری Directory Traversal و ۱% آسیبپذیری LFI هستند. سال گذشته این آمار برای Directory Traversal برابر با ۲% بود. این موضوع نگران کننده است چراکه این یک آسیبپذیری بسیار قدیمی و معروف است.
آسیبپذیری Cross-site Scripting (XSS)
این آسیبپذیری زمانی رخ میدهد که مهاجم اسکریپتهای مخرب (معمولاً جاوا اسکریپت) به داخل یک صفحه وب تزریق میکند. برنامههای کاربردی وببنیان اسکریپتها را درون یک مرورگر محلی اجرا میکنند و این زمینه را برای آسیبپذیری XSS فراهم میکند. این آسیبپذیری معمولاً به دلیل عدم موفقیت اعتبارسنجی ورودی کاربر توسط توسعهدهندگان رخ میدهد. اگر کاربر یک کد جاوا اسکریپت را در یک فرم وارد کند و برنامهنویس هم همان فرم را مستقیماً درون صفحه وب بکار ببرد، قطعاً آسیبپذیری XSS رخ خواهد داد. برای مثال یک کاربر ممکن است این پیام را در یک انجمن اینترنتی وارد کند:
حال اگر کاربر دیگری این پیام را باز کند، مرورگر وی کد جاوا اسکریپت را اجرا کرده و فایل مخرب getcreds.js از آدرس درج شده در کد بالا دانلود خواهد شد.
آسیبپذیریهای XSS به سه دسته اصلی تقسیم میشوند:
- ذخیره شده (پایدار): زمانی رخ میدهد که مهاجم اسکریپت را تزریق کرده و این اسکریپت توسط برنامههای کاربردی وببنیان ذخیره میشود. هنگامی که کاربر قربانی از وبسایت بازدید میکند، اسکریپت توسط مرورگر وی به اجرا در میآید. این موثرترین شیوه حمله XSS است.
- انعکاسی (ناپایدار): در این روش اسکریپت ذخیره نمیشود بلکه مهاجم با روشهای مختلف از قبیل مهندسی اجتماعی، کاربر را به صفحه آلوده هدایت کرده و در آنجا اسکریپت بر روی مرورگر قربانی اجرا میشود.
- مبتنی بر مدل شیءگرا (DOM-based): در این روش اسکریپت مخرب توسط موتور شیءگرای مرورگر اجرا شده و معمولاً به سمت سرور ارسال نمیگردد. این روش بیشتر در وبسایتهای مبتنی بر جاوا اسکریپت کاربرد دارد.
تحلیل
۲۵% از اهداف مورد استفاده در این گزارش تحلیلی، دارای آسیبپذیری XSS هستند که این رقم نسبت به سال گذشته کاهش یافته است. متأسفانه قالبها و فریمورکهای جاوا اسکریپت که معمولاً آسیبپذیر هستند به وفور مورد استفاده قرار میگیرند.
کتابخانههای جاوا اسکریپت آسیبپذیر
کتابخانههای جاوا اسکریپت به توسعه سریعتر و بهتر برنامهها کمک میکنند. بیشتر برنامههای کاربردی وببنیان، به کتابخانههای جاوا اسکریپت متکی هستند که این کتابخانهها معمولاً منسوخ شده و یا دارای آسیبپذیریهای متعددی از جمله XSS هستند.
تحلیل
بر اساس نمودار ۲۴% از اهداف از کتابخانههای جاوا اسکریپت دارای آسیبپذیری XSS استفاده میکنند. این کتابخانهها اغلب نسخههای منسوخ jQuery، jQuery UI، jQuery-migrate، jQuery.prettyPhoto، Plupload، YUI و Moment.js هستند. کتابخانه jQuery محبوبتر از بقیه کتابخانههاست. به همین دلیل بررسیهای بیشتری بر روی آن انجام شده است.
ادامه دارد…
آرمان داده پویان ارائه دهنده تست نفوذ برنامههای کاربردی وب بنیان
برای کسب اطلاعات بیشتر با ما تماس بگیرید