بخشی از مقاله

چکیده

برنامههای کاربردی وب به یک بخش ضروری از زندگی روزمره ما تبدیل شدهاند و بسیاری از فعالیتهای ما وابسته به قابلیت و امنیت این برنامهها است. این برنامهها به صورت گسترده در زمینههای مختلف مانند انجام وظایف مهم و حیاتی مورد استفاده قرار میگیرند و با دادههای حساس کاربران سروکار دارند.

با رشد روزافزون استفاده از این برنامهها، آسیب پذیریهای تزریق، مانند تزریق SQL، به یک چالش امنیتی عمده تبدیل می شود. مهاجمان با استفاده از این آسیب پذیریها و تزریق کد مخرب، بصورت غیرمجاز به پایگاه داده دسترسی مییابند و باعث به خطر افتادن امنیت برنامهها میشوند. بنابراین تشخیص پرسوجوهای مخرب ورودی یک سایت در حفظ امنیت آن از اهمیت بالایی برخوردار ا ست. در روش پی شنهادی، ابتدا موثرترین ویژگیهایی که یک پرسوجوی نرمال را از نوع مخرب متمایز میکند، استخراج میشوند. این ویژگیها مبتنی بر تکرار کاراکترهای خطرناک در یک پرسوجوی SQL تعریف شدهاند.

در این مقاله، رو شی برای شنا سایی حملات تزریق در سطح پایگاه داده با ا ستفاده از خو شهبندی فازی پی شنهاد می شود. نتایج به دست آمده در آزمایشات نشان میدهد که این روش توانسته است عملکرد بهتری نسبت به روشهای پیشین داشته باشد.

-1 مقدمه

بسیاری از سازمان ها اطلاعات مهم، حساس و محرمانه مربوط به کارمندان، مشتریان و همکاران تجاری خود را در پایگاههای داده در سراسر جهان ذخیره میکنند. دادههای ذخیره شده از اطلاعات با درجه حساسیت کمتر از قبیل نام، نام خانوادگی و تاریخ تولد و اطلاعات حساستر از قبیل نام کاربری، رمز عبور، اطلاعات کارت بانکی و غیره تشکیل میشود. بنابراین، برای هر سازمانی مهم است که از پایگاه دادههای خود محافظت کنند تا از هر گونه از دست رفتن اطلاعات جلوگیری کنند. در این راستا، سازمانها باید اطلاعات خود را در مقابل موارد زیر محافظت کنند.

الف - نقض محرمانگی: افشای اطلاعات توسط کاربران غیرمجاز

ب - نقض صحت: تغییر و دستکاری اطلاعات تاریخ توسط مهاجمان

ج - نقض دسترسیپذیری: حذف دادهها از پایگاه داده

شکل - 1 - :نمونهای از یک کد تزریق >6@ SQL

حمله تزریق SQL یک آسیبپذیری برنامه وب است که از طریق زبانهای اسکریپتی پویا مانندPHP، ASP، JSP و CGI ایجاد میشود. تزریق SQL، تکنیکی است که مهاجمان از آن استفاده کرده تا از طریق ورودیهای صفحه وب، دستورات SQL را در بانک اطلاعاتی تزریق کنند. دستورات تزریق شده میتواند دادههای SQL را تغییر داده و امنیت برنامه کاربردی وب را به خطر اندازد

طبق آخرین گزارش owasp، بیشترین نوع حملات وب در سال 2017 حملات sql بوده است .[4] حملههای تزریق SQL در میان حملات اعتبار ورودی، از نوع خطرناکترین حملات وب محسوب میشوند .[5] به عنوان م ثال ز مانی که مدیر یک سا یت برای احراز هو یت م قادیر id=112 و pass=admin را وارد میکند این نمونهای از پرسوجوی نرمال است .[6] شکل - - 1 ورود یک کاربر مهاجم با استفاده از آسیبپذیری SQL را نشان میدهد. این حمله از سه مرحله ت شکیل شدها ست. - 1 مهاجم یک درخوا ست HTTP مخرب را به برنامه وب ارسال میکند، - 2 دستور SQL ایجاد میشود، - 3 دستور SQL را به پایگاه داده تحویل میدهد.

یک برنامه کاربردی، بر اساس مدل فوق، ورودی را از کاربران برای بازیابی اطلاعات از پایگاه داده دریافت میکند. برخی از برنامههای کاربردی وب بدون اعتبارسنجی، فرض میکنند که ورودی نرمال است و از آن برای ساختن پرس و جوهای SQL استفاده میکنند. از آنجاییکه در این برنامههای کاربردی اعتبار سنجی پیش از ار سال ورودیها برای بازیابی داده صورت نمیگیرد، در مقابل حملات تزریق SQL حساس میباشند.

برای مثال، مهاجمان، به عنوان کاربران عادی، از ورودی مخرب حاوی دستورهای SQL ا ستفاده میکنند تا پرس و جوهای SQL را در برنامه وب ایجاد کنند. پس از پردازش توسط برنامه کاربردی، درخواستهای مخرب پذیرفتهشده ممکن است خط مشیهای امنیتی معماری پایگاه داده را شک ست دهد؛ زیرا نتیجه ج ستجو ممکن ا ست باعث آسیب به پایگاه داده و انتشار اطلاعات حساس شود. انواع حملات SQL را می توان به هشت دس ته : -1 تتولوژی-21 پرسوجوی های غیرقانونی/منطقی نادرست- 3 2 پرسوجوی اجتماعPiggyBacked -4 3 -5 رویههای ذخیرهشده-6 4 استنتاج-7 5 حمله کدگذاری متناوب6 تقسیم بندی کرد.

تست امنیتی یک فعالیت محوری در مهندسی نرم افزار امن است. این ت ست شامل دو مرحله ا ست: تولید ورودی های حمله برای ت ست سی ستم و ارزیابی اینکه آیا اقدامهای اکت شافی هر آ سیب پذیری را در معرض آ شکار سازی قرار میدهند یا خیر

محققان طیف گسترده ای از تکنیک ها را برای حل مشکل تزریق SQL پیشنهاد کردهاند. این تکنیکها از شیوههای اتوماتیک برای تشخیص و جلوگیری از تزریق SQL است فاده میکن ند. از نمو نه های این تکن یک ها میتوان به برر سی نوع ورودی7، کدگذاری ورودی8، ت ست جعبه سیاه9، چک کننده کد ایستا10، تجزیه و تحلیل ترکیبی - ایستا و پویا - 11، رویکردهای مبتنی بر آلودگی12، سیستم های تشخیص نفوذ13، و تکن یک های مبتنی بر هوشم صنوعی14، ا شاره کرد

اخیرا روشهای ت شخیص تزریق SQL با ا ستفاده از ما شین بردار پ شتیبان[18] 15 و ت شخیص حمله تزریق با استفاده از تکنیکهای یادگیری ماشین - مبتنی بر شبکه عصبی [19] - 16، پیشنهاد شده است. در روش ماشین بردار پشتیبان با استفاده از مجموعه آموزشی مدلی از پرسوجوهای مخرب ایجاد میشود و هر نمونه ورودی با این مدل مقایسه میشود. در روش مبتنی بر شبکه عصبی، از 32 ویژگی برای تشخیص پرسوجوی مخرب استفاده می شود.

این ویژگیها به شبکه عصبی پس انتشار سه لایه داده میشود تا مدلی از پرسوجوهای مخرب ایجاد کند. ما در این مقاله روشی جدید برای تشخیص حملات مخرب SQL پیشنهاد میکنیم که علاوه بر سادگی و سرعت بالا از دقت خوبی در تشخیص پرسوجوی SQL نسبت به روشهای پیشین برخوردار است. روش پیشنهادی بر اساس خوشهبندی فازی17 و ویژگیهایی جدید تشخیص حملات، به طبقهبندی نمونه پرسوجوها میپردازد.

در ادامه در بخش دوم روشهای تشخیص حملات تزریق توضیح داده میشود و سپس در بخش سوم راهکار پی شنهادی این مقاله ارائه می شود. در بخش چهارم نتایج راهکار پیشنهادی ارائه شده و با روشهای مشابه مقایسه میشود. در نهایت در بخش پنجم جمع بندی و نتیجه گیری مقاله ارائه میشود.

-2 روشهای تشخیص حملات تزریق SQL

-1-2 بررسی نوع ورودی

حملات تزریق SQL شامل تزریق یک ر شته یا پارامتر عددی میبا شد. حتی یک بررسی ساده از چنین ورودی هایی میتواند از بسیاری حملات پیشگیری کند. به عنوان مثال، در مورد فیلد ورودی عددی، می توان با چک کردن نوع ورودی، به سادگی هر ورودی که حاوی کاراکترهای غیرعددی است را رد کرد.

-2-2 کدگذاری ورودی

ب صورت معمول ورودی کاربر ب صورت ر شتهای به پایگاه داده ار سال میگردد. مهاجمین وقتی از متاکاراکترها جهت تزریق استفاده کنند این متاکاراکتر در رشته ارسالی قرار میگیرد. راه حلی برای پیشگیری از این نوع حملات، کدگذاری نمودن ورودی کاربر است. رشته کدگذاری شده به پایگاه داده ارسال میشود. در صورت وجود متاکاراکترهای مهاجم در این رشته، آن نیز کدگذاری شده است و در مقصد حین خارج شدن از رمز پایگاه داده تشخیص میدهد که این ورودی شامل متاکاراکتر بوده و مخرب است.

در مقاله [8] یک تکنیک جعبه سیاه برای تست برنامه های وب در مورد آسیب پذیریهای تزری SQL ارائه شده است. این تکنیک با استفاده از یک خزنده وب، ت مامی ن قاط یک بر نا مه وب را که میتوا ند برای تزریق SQL مورد ا ستفاده قرار گیرد، شنا سایی میکند. سپس بر ا ساس فهر ستی از الگوها و تکن یک های حم له، حملاتی را که این ن قاط را هدف قرار میده ند طراحی میکند. سپس پاسخ برنامه را به این حملات بررسی کرده و با استفاده از تکنیکهای یادگیری ماشین، روش شناسی حمله خود را بهبود میبخشد. این تکنیک با استفاده از روشهای یادگیری ماشین برای هدایت تست خود، بر اغلب تکنیکهای ت ست نفوذ پی شی گرفته ا ست. البته مانند اغلب تکنیکهای جع به س یاه و تست نفوذ، این روش نیز کا مل نبوده و تضمینی ارا ئه نمیکند

-4-2 چک کننده کد ایستا

روش [9 ] JDBC-Checker، تکنیکی است که نوع تصحیح پرس و جوهای SQL تولید شده به صورت پویا را، به شکل استاتیک بررسی میکند. این تکنیک با هدف تشخیص و جلوگیری از حملات سالم SQL طراحی نشده است، ولی میتواند برای جلوگیری از حملاتی که مخرب هستند، در یک رشته پرس و جویی که به صورت پویا تولید شده است، مورد استفاده قرار گیرد. این تکنیک قادر نیست انواع معمولتر حملات تزریق SQL را شناسایی نماید، چرا که اغلب این حملات از پرس و جوهایی تشکیل شده اند که از نظر نوع و قواعد دستوری صحیح هستند.[15 ,4]

-5-2 تجزیه و تحلیل ترکیبی - ایستا و پویا -

[15] AMNESIA یک تکنیک مبتنی بر مدل است که تحلیل استاتیک و نظارت زمان اجرا را ترکیب میکند. در فاز استاتیک این تکنیک، از تحلیل استاتیک برای ساختن مدلهایی از انواع مختلف پرس و جوهایی که یک برنامه به طور طبیعی میتواند در هر نقطه دسترسی به پایگاه داده تولید کند، استفاده میشود. در فاز پویا، این تکنیک تمامی پرس و جوها را پیش از ارسال شدن به پایگاه داده نگه داشته، و هر پرس و جو را در مورد مدلهایی که به طور استاتیک ساخته شده اند، بررسی میکند. پرس و جوهایی که مدل را نقض میکنند، به عنوان حملات تزریق SQL شناسایی شده و از اجرای آنها در پایگاه داده جلوگیری میشود.

-6-2 رویکردهای مبتنی بر آلودگی

WebSSARI خطاهای اعتبارسنجی ورودی را با استفاده از تحلیل جریان اطلاعات تشخیص میدهد . در این روش، تجزیه و تحلیل استاتیک برای بررسی جریانهای آلوده در برابر پیششرطهای عملکرد های حساس مورد ا ستفاده قرار می گیرد. تجزیه و تحلیل، نقاطی را که پیش شرط آنها رفع نشده است شناسایی کرده و میتواند فیلترهایی را که میتواند به طور خودکار به برنامه در برآوردن این پیش شرطها اضافه شود، پیشنهاد می کند. این سی ستم با توجه به ورودیهای معتبر که از طریق یک مجموعه از پیش تعیین شده از فیلتر عبور میکند، کار می کند.

در مقاله[17] رو شی مبتنی بر تکنیک یادگیری ما شین در سی ستم ت شخیص نفوذ پیاده سازی شده است. در این روش ابتدا با استفاده از مجموعهای از پرسوجوهای سالم سیستم تشخیص نفوذ، آموزش داده میشود. در نتیجه این تکنیک، مدلهایی از پرسوجوهای سالم را ایجاد میکند. سپس در زمان اجرا سی ستم ت شخیص نفوذ بر پرسو جوهای ورودی نظارت میکند تا عباراتی را که با مدل ایجاد شده سازگار نیستند شناسایی کند.

-8-2 تکنیکهای مبتنی بر هوش مصنوعی

در این تکنیکها با استفاده از مجموعه دادههای آموزشی و ابزارهای هوش مصنوعی از جمله شبکه عصبی، ماشین بردار پشتیبان، الگوریتم ژنتیک و غیره به ایجاد سیستمهایی میپردازند که بتواند بیشترین دقت را در تشخیص حملات تزریق داشته باشد. از جمله سیستمهایی که اخیراً مبتنی بر هوش مصنوعی طراحی شدهاند میتوان به روشهای تشخیص تزریق SQL با استفاده از ماشین بردار پشتیبان[18] و تشخیص حمله تزریق با استفاده از تکنیکهای یادگیری ماشین - مبتنی بر شبکه عصبی - اشاره کرد. در روش ماشین بردار پشتیبان با استفاده از مجموعه آموزشی مدلی از پرسوجوهای مخرب ایجاد میشود و هر نمونه ورودی با این مدل مقایسه میشود. در روش مبتنی بر شبکه عصبی، از 32 ویژگی برای تشخیص پرسوجوی مخرب استفاده میشود. این ویژگیها به شبکه عصبی پس انتشار سه لایه داده میشود تا مدلی از پرسوجوهای مخرب ایجاد کند.

-3 راهکار پیشنهادی

در روش پیشنهادی این مقاله، ابتدا ویژگی های اساسی که میتوانند در تشخیص نرمال یا مخرب بودن یک پرسوجو تاثیر داشته باشند انتخاب میگردند. این ویژگیها براساس تعداد تکرار کاراکترهای مهم در تزریق SQL تعریف میشوند. به هر کدام از ویژگیها بر اساس اهمیت آنها وزنی اختصاص مییابد. به عنوان مثال وزن ویژگی طول عبارت، میانگین بقیه ویژگیها در نظر گرفته می شود. بعد از ا ستخراج ویژگیها، آنها را به الگوریتم خو شهبندی فازی داده تا پرسوجو ها را به دو خوشه نرمال و مخرب تقسیم کند.

خوشه بندی فازی، برای هر نمونه درجه عضویتی به هر دو خوشه تعیین میکند. مخرب یا سالم بودن یک نمونه را با مقایسه درجه عضویت آنها به هر خو شه م شخص میکنیم. به عنوان مثال اگر نمونهای با درجه 0/9 به خو شه سالم و با درجه عضویت 0/1 به خوشه مخرب متعلق باشد؛ نتیجه میگیریم که این نمونه با احتمال 0/9 یک پرسوجوی سالم ا ست. در ادامه نحوه ا ستخراج ویژگیها و طبقهبندی پرسوجوها با استفاده از خوشهبندی فازی توضیح دادهمیشود.

-1-3 انتخاب ویژگیها

ابتدا ویژگیهای ا سا سی که میتوانند در ت شخیص نرمال یا مخرب بودن یک پرسوجو تاثیر داشته باشند انتخاب میگردند. کدهای SQL دارای تعداد م شخ صی توکن ه ستند که هر پرسوجو شامل تعدادی از این توکنها ا ست. نمونه یک پرسوجوی نرمال و نسخههای مخرب آن در جدول - 1 - نشان داده میشود.

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید