بخشی از مقاله
چکیده
حملات منعخدمت تهدید جدی برای امنیت برنامههای کاربردی وب محسوب میشوند. امروزه حملات به لایه کسب و کار منتقل شدهاند. ابزارهای تحلیل آسیبپذیری قادر نیستند آسیبپذیریهای لایه کسب و کار - آسیب پذیریهای مربوط به منطق - برنامه کاربردی را کشف کنند. در این تحقیق راهکار جعبه سیاه برای آزمون امنیتی پویا به منظور شناسایی آسیبپذیری لایه کسب و کار برنامه کاربردی در مقابل حملات منعخدمت سیلابی را با نام BLDAST پیشنهاد میدهیم.
BLDAST در سه مرحله به شناسایی آسیبپذیری میپردازد: ابتدا فرایندهای کسب و کاری برنامه را استخراج مینماید سپس براساس معیارهای ارائه شده، سربار فرایندهای کسب و کار اندازه گیری میشود و فرایندهای کسب و کار سنگین را انتخاب میکند و در نهایت سناریو آزمون منعخدمت لایه کسب و کار را اجرا میکند. آزمایشها بر روی چهار برنامه کاربردی پرکاربرد نشان داد، BLDAST قادر است آسیبپذیریهای لایه کسب و کار این برنامهها را شناسایی کند. علاوه بر این نشان دادیم که حملات لایه کسب و کار میتوانند با تنها مصرف یک درصد منابع در قیاس با حملات لایههای دیگر موفق به شکست سیستم هدف شوند و از این رو بسیار خطرناک هستند که BLDAST قادر به شناسایی آسیبپذیری برنامههای کاربردی در برابر این حملات است.
-1 مقدمه
برنامههای کاربردی وب سادهترین روش ارائه خدمت به کاربران است. نیاز روزافزون به برنامههای کاربردی، امنیت برنامههای کاربردی را به موضوعات پرطرفدار تبدیل کردهاست. طبق گزارش ورایزن حدود %40 از حادثههای امنیتی در سال 2016 به دلیل حملات برنامههای کاربردی وب بودند .[1] آسیبپذیریهای حوزه وب، اغلب آسیب پذیریهای گزارش شده در پایگاه داده CVE 1 را شامل میشوند .[2] آسیب پذیریهای منطقی2 در دسته آسیبپذیریهای قوی3 رتبهبندی شدهاند که امنیت برنامههای کاربردی را تحت تاثیر قرار میدهند .[5-3]
امروزه بسیاری از آسیبپذیریهای ظریف4، مخصوص منطق5 برنامه کاربردی هستند که همچنان به صورت دستی قابل شناسایی هستند .[6] پویشگرهای خودکار، قادر به شناسایی آسیبپذیریهای منطق کسب و کاری6 در برنامه نیستند. زیرا پویشگرها قادر به فهم منطق7 برنامه نیستند. این گونه آسیبپذیریها تنها از طریق آزمون دستی قابل شناسایی هستند و متکی بر خلاقیت و مهارت آزمون گر هستند .[9-6] شناسایی آسیبپذیریهای منطقی بسیار سخت است و در صورت سوء استفاده، خسارت زیادی را به جای میگذارد .[8]
تعریف رسمی برای آسیبپذیریهای منطقی وجود ندارد .[9] فهم منطق برنامه کاربردی، برای ابزارهای خودکار دشوار است بنابراین شناسایی آسیبپذیریهای منطقی برعهده آزمونگر است و از آن جایی که آسیبپذیریهای منطقی مختص برنامه کاربردی است، شناسایی این نوع آسیبپذیریها، سخت است .[8] اخیرا تحقیقهایی برای شناسایی خودکار آسیبپذیریهای منطقی انجام شدهاست .[12-10] متاسفانه روشهای بیان شده در [12-10] برای برنامههای کوچک کاربرد دارند.
علاوه براین کد منبع برنامه کاربردی برای تولید مدل مناسب از برنامه لازم است تا بتوان موارد آزمون8 را تولید نمود .[9] بنابراین امروزه نیاز به ابزار خودکار برای شناسایی آسیبپذیری منطقی ملموس است. در این تحقیق به آسیبپذیریهای منطقی، آسیبپذیریهای لایه کسب وکار گفته میشود. امروزه حملات به لایه کسب و کار منتقل شدهاند که در واقع به عنوان لایهای در بالای لایه OSI است. انتقال حمله منع خدمت به لایه کسب و کار باعث موثرتر شدن حمله شده است و همینطور مهاجمین راحتتر و با صرف توان کمتری قادر به اعمال حمله مخربتر شدهاند. شناسایی این نوع حملات به دلیل ترافیک تولیدی کمتر دشواتر است .[13]
در این تحقیق، راهکار جعبه سیاه برای آزمون امنیتی پویای برنامه کاربردی در لایه کسب وکار به اختصار BLDAST9 را پیشنهاد میدهیم. BLDAST آسیبپذیریهای لایه کسب و کار برنامه کاربردی وب در مقابل حملات منعخدمت سیلابی را شناسایی میکند. سناریوهای آزمون امنیتی طراحی شده آگاه از زمینه10 هستند. منظور از آگاه از زمینه این است که سناریوهای طراحی شده، آگاه از کسب و کار برنامه کاربردی هستند و قصد شناسایی آسیبپذیریهای لایه کسب و کار برنامه را دارند. روش ارائه شده، مستقل از تکنولوژی به کار رفته در برنامه است و به صورت خودکار به شناسایی آسیبپذیری میپردازد. علاوه بر این نشان داده میشود آسیبپذیریهای لایه کسب و کار، میتوانند تهدیدآمیزتر و خطرناکتر از آسیبپذیریهای سایر لایه ها باشند زیرا توان مهاجم برای اجرای حملات لایه کسب و کار در حدود یک صدم توان برای اجرای حملات دیگر است.
نوآوریهای موجود در این تحقیق عبارتند از:
• ارائه راهکار جعبه سیاه برای آزمون امنیتی پویای برنامههای کاربردی وب به منظور شناسایی آسیبپذیریهای لایه کسب و کار در برابر حملات منعخدمت سیلابی
• طراحی سناریو آزمون منع خدمت در لایه کسب و کار مشابه رفتار کاربر به طوری که کشف سناریو آزمون توسط ابزارهای شناسایی کاهش یابد.
• شکست دادن برنامه کاربردی توسط سناریو آزمون لایه کسب و کار با توان یک درصد از توان یک سناریو آزمون ساده در این تحقیق در بخش 2 به مروری بر ادبیات موضوع و پژوهشهای مرتبط ، بخش 3 راهکار پیشنهادی، در بخش 4 پیادهسازی و ارزیابی و در نهایت نتیجهگیری بیان میشود.
-2 مروری بر ادبیات موضوع و پژوهشهای مرتبط
لایه کسب و کار، منطق برنامه کاربردی را مشخص میکند. در واقع هم با استخراج، پردازش و مدیریت دادهها سر و کار دارد و هم با قوانین و سیاستهای کسب و کاری برنامه کاربردی. علاوه براین دادههای ورودی را نیز اعتبار سنجی میکند. در شکل 1 جایگاه لایه کسب و کار در برنامه کاربردی نشان داده شدهاست.
معماری سه لایه برنامه کاربردی
لایه اول، لایه نمایش که با کاربر در تعامل است و دادههای ورودی کاربر را دریافت میکند. لایه دوم، لایه کسب و کار که قوانین کسب و کاری را مورد پردازش قرار میدهد و دادههای دریافتی از لایه نمایش را در اختیار لایه سوم قرار میدهد. لایه سوم، لایه دستیابی داده با پایگاه داده در تعامل است. بعد از دریافت داده از کاربر، داده دراختیار لایه کسب و کار قرار میگیرد. برنامه کاربردی از این داده برای اجرای فرایند کسب و کاری استفاده میکند.
هر فرایند کسب و کاری دارای چندین مرحله است که باید به ترتیب مقتضی اجرا شود و ممکن است فرایندها به طور سازماندهی شدهای با هم در تعامل باشند. آسیب پذیری لایه کسب و کار یک نقص در لایه کسب و کار برنامه کاربردی است. بردار حملات منطقی در لایه کسب وکار، درخواستهای متعدد قانونی هستند که دارای مقادیر ورودی قانونی هستند. این گونه بردارها از کسب و کار برنامه کاربردی به منظور ایجاد خرابی سوء استفاده میکنند و به کسب و کار برنامه کاربردی خسارت وارد میکنند .[14]
[15] BLOCK و [16] Swaddler از روش دفاعی - شناسایی زمان اجرای حملات منطقی - برای جلوگیری از حملات منطقی استفاده میکنند. در صورتیکه BLDAST از روش پیشگیرانه - شناسایی آسیبپذیریهای منطقی موجود در برنامهکاربردی - برای شناسایی آسیبپذیری منطقی استفاده میکند و نوع آسیبپذیریهایی کهBLDAST شناسایی میکند، فرق دارد. [15] BLOCK ابتدا مدل رفتاری برنامه را با مشاهده تعامل کارخواههالآلآ و برنامه کاربردی به دست میآورد و در زمان بدون حمله، مجموعهای از ثابتها از توالی درخواست/پاسخها و متغیرهای نشست را استخراج مینماید. سپس از مجموعه ثابتهای استخراج شده، برای ارزیابی درخواست/پاسخها در زمان اجرا استفاده مینماید.
[16] Swaddler برای شناسایی حملات روشی بر مبنای شناسایی ناهنجاریلألآ ارائه میکند. در واقع از مدلهای ناهنجاری حالت داخلی برنامهکاربردی به منظور شناسایی آسیبپذیری استفاده میکند. به عبارت دیگر حالت داخلی برنامه در مرحله یادگیریلألآ نظارت میشود و متغیرهای نرمال حالت برنامه استخراج میشود که مشخص کننده نمایهلإلآ هستند سپس در مرحله شناسایی حالتهای ناهنجاری شناسایی میشوند.
[17] SENTINEL و پلگرینو [9] با استفاده از روش پیشگیرانه - شناسایی آسیبپذیریهای منطقی موجود در برنامهکاربردی - و به صورت جعبه سیاه به شناسایی آسیبپذیری منطقی میپردازند. نوع آسیبپذیری که BLDAST شناسایی میکنند با SENTINEL، داپ و پلگرینو فرق دارد. BLDAST آسیبپذیریهای لایه کسب وکار برنامه کاربردی را در برابر حملات منعخدمت سیلابی شناسایی میکند. [17] SENTINEL به صورت پیشگیرانه ضعفهای منطقی لآ دسترسی به پایگاه داده را شناسایی میکند. SENTINEL برنامه کاربردی را به صورت ماشین حالت مدل میکند. از روش جعبه سیاه برای استخراج ویژگیهایلالآ برنامه کاربردی استفاده مینماید و پرسمانهایی را شناسایی میکند که ویژگیهای شناخته شده را نقض میکنند.
ویژگیهای برنامه شامل ثابتهایی است که از پرسمانهای SQL و متغیرهای نشست استخراج میشود. هر پرسمان بدخواهی که ثابتهای شناسایی شده را نقض میکنند، به عنوان حمله شناسایی میشود. پلگرینو و همکارانش [9] به صورت خودکار تعدادی الگوهای رفتاری از ترافیک کاربران برنامهکاربردی استخراج مینمایند. ابتدا مدلی از برنامهکاربردی استخراج میکنند سپس بردارهای حمله به آن اعمال مینمایند.
در این پژوهش با تحلیل ترافیک ذخیره شده کاربر، الگوهایی را تشخیص میدهند که وابسته به منطق برنامهکاربردی هستند. چنین الگوهای رفتاری باید مورد آزمون قرار بگیرند، بنابراین سناریوهای آزمونی برای بررسی الگوهای رفتاری طراحی میگردد. BLDAST به صورت پیشگیرانه و جعبه سیاه به شناسایی آسیبپذیری لایه کسب و کار میپردازد و بر روی حملات منعخدمت در لایه کسب و کار تمرکز مینماید. این نوع آسیبپذیری قابل تشخیص توسط راههای موجود نیست.
-3 روش جعبه سیاه برای آزمون امنیتی پویای لایه کسب و کار برنامههای کاربردی وب
برای ارزیابی تابآوری17 برنامه کاربردی وب در برابر حملات منعخدمت لایه کسب و کار، BLDAST18 را پیشنهاد میدهیم. BLDAST از روش آزمون آزمون امنیتی پویای لایه کسب و کار برنامه کاربردی وب برای شناسایی آسیبپذیری برنامه در برابر حملات منعخدمت سیلابی استفاده مینماید. BLDAST با پویش برنامه، فرایندهای کسب و کاری برنامه را استخراج میکند، سپس با در نظر گرفتن معیارهایی، فرایندهای کسب وکار را شناسایی میکند که در مقابل حملات منع خدمت آسیبپذیر هستند و مهاجم با صرف توان کمتری میتواند از طریق آنها برنامه کاربردی را از دسترس خارج کند.
BLDAST با شناسایی فرایندهای بحرانی که مستعد بروز حملات منعخدمت هستند و با آگاه نمودن توسعه دهندگان مبنی بر وجود چنین گلوگاههایی و برطرف نمودن آنها، موجب افزایش تابآوری برنامه در مقابل حملات منعخدمت میشود. به عبارت دیگر BLDAST فرایندهای کسب و کار بحرانی را که امکان تبدیل به گلوگاه برنامه کاربردی دارند را مییابد و به کاربر جهت رفع اشکال آنها هشدار میدهد. BLDAST دارای سه مرحله اصلی است. این سه مرحله عبارتند از:
1. یافتن فرایندهای کسب و کاری برنامه
2. انتخاب فرایند سنگین 19در لایه کسب و کار برنامه کاربردی
3. انجام آزمون منع خدمت برنامه کاربردی وب در لایه کسب و کار شکل 2 روش آزمون امنیتی پویای لایه کسب و کار برنامه کاربردی وب را به منظور شناسایی آسیبپذیری برنامه در برابر حملات منع خدمت نشان میدهد. در ادامه هر کدام از این مراحل را توضیح میدهیم.
-1-3 یافتن فرایندهای کسب و کاری برنامه کاربردی
در این مرحله تمامی صفحات موجود در برنامه کاربردی را خزش میکنیم. البته خزش به صورت هوشمندانه صورت میگیرد بدین صورت که صفحات وابسته به هم و فرایندهای موجود در برنامه شناسایی میشوند. منظور ازفرایند، مجموعه صفحاتی هدفمند است که منطق برنامه را اجرا میکنند. برای یافتن فرایندهای کسب و کار برنامه کاربردی، ابتدا برنامه را به صورت ماشین حالت [18] مدل میکنیم.
پس از تولید ماشین حالت برنامه کاربردی، فرایندهای کسب و کاری برنامه را با استفاده از ماشین حالت استخراج میکنیم. برای استخراج فرایندهای کسب وکار برنامه از ماشین حالت تولید شده لازم است حالتهای نهایی را در ماشین حالت مشخص نماییم. منظور از حالت نهایی، حالتی است که اگر برنامه کاربردی در آن حالت قرار گیرد، به معنی اتمام یک فرایند کسب و کار است. با بررسی پاسخهای پیام میتوان حالتهای نهایی را مشخص کرد.
به عنوان مثال در فرایند خرید یک کالا، پس از اتمام خرید عبارتی مانند "از خرید شما متشکریم" نمایش داده میشود. با مشخص کردن مجموعهای از این عبارتها و جست و جوی این عبارتها در پاسخ پیامهای دریافتی، میتوان حالتهای نهایی را مشخص نمود. تمامی مسیرهای موجود در ماشین حالت از حالت اولیه - صفحه آغازین برنامه کاربردی - تا حالتهای نهایی تعیین شده، فرایندهای کسب و کار برنامه هستند.
-2-3 انتخاب فرایند دارای سربار بیشتر در لایه کسب و کار برنامه کاربردی
BLDAST بعد از شناسایی فرایندهایی که منطق کسب و کار برنامه را اجرا میکنند، در این مرحله فرایندهایی را شناسایی میکند که در برابر حملات منع خدمت سیلابی آسیبپذیر هستند. به عبارت دیگر فرایندهایی را شناسایی می کنیم که بار بیشتری بر روی کارگزار وب اعمال می کنند. مهاجم با استفاده از این فرایندها با مصرف توان کمتری میتواند برنامه کاربردی را از دسترس خارج نماید. BLDAST چنین فرایندهای کسب و کار را شناسایی میکند و با هشدار به توسعهدهنده برنامه مبنی بر برطرف نمودن چنین ضعفی در برنامه کاربردی، بر تابآوری برنامه در برابر حملات منعخدمت سیلابی میافزاید. BLDAST از معیارهایی برای شناسایی فرایندهای سنگین استفاده میکند.