بخشی از مقاله

چکیده

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

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

-1 مقدمه

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

این نوع از حمله عموما مبتنی بر آسیب های موجود در برنامه های کاربردی یا رویه های ذخیره سازی در سرور پایگاه داده می باشد که به مهاجم اجازه می دهد یک پرس وجوی بد اندیشانه SQL را جهت تغییر یک پرس وجوی از قبل تعریف شده تزریق نماید که به سبب آن مهاجم می تواند دسترسی غیر مجاز به پایگاه داده پیدا کند به عبارتی داده ها را بخواند یا تغییر دهد ، داده ها را از دسترس سایر اعضا دربیاورد و یا حتی سرور پایگاه داده را نابود سازد . بنابر گزارش ارائه شده از تیم تحقیق و توسعه IBM-xforce تعداد حملات تزریق SQL در سال هایاخیر به شدت افزایش پیدا کرده و حمله تزریق SQL ، حمله غالب در برنامه های مبتنی بر وب گشته است .در نیمه اول سال 2010 تعداد حملات روزانه SQL از مرز 400000 مورد گذشته است

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

در این مقاله ما مروری بر انواع حملات عمومی تزریق SQL و راه حل های مقابله با آن ها خواهیم پرداخت .

-2 حملات تزریق SQL

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

در تمامی این حملات ابتدا حمله کننده به یافتن ورودی های درون برنامه Post و یا Get میپردازند. این ورودی ها می تواند جعبه های متنی ، پارامترهای یک صفحه وب باشد . در مرحله بعد و پس از یافتن ورودی ها لازم است نوع داده ورودی را تشخیص دهد. در ادامه با توجه به نوع داده ورودی مقادیر ورودی که لازم است مهاجم به سمت سرور ارسال کند مشخص می شود. سپس پرس و جوهای مخرب با ورودی الحاق شده و به سمت سیستم مدیریت پایگاه داده در سمت سرور ارسال می گردد و در نهایت پایگاه داده دستور را اجرا می نماید . [4] در ادامه به انواع حملات عمومی تزریق SQL می پردازیم .

2؛-1 عبارت همیشه درست - Tautology -

پرس و جوهای تزریق کد SQL به داخل دستورات شرطی تزریق می شوند به طوری که آن ها همیشه درست ارزیابی می شوند.

هدف از این نوع حمله دور زدن تعیین هویت ،شناسایی پارامترهای قابل تزریق واستخراج داده می باشد . [9] برای مثال کد زیر یک نمونه از عبارت همیشه درست می باشد که تعیین هویت را دور زده است .

-2-2 پرس و جوی منطقا نادرست

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

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

-3-2 پرس و جوی اجتماع - Union -

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

-4-2 پرس و جوهای Piggy-Backed

در این نوع از حملات، متخاصم یک پرس و جوی مستقل را تزریق می نماید و در نتیجه در صورت اجرای موفقیت آمیز پرس وجو، پرس وجوی دوم درست بعد از پرس و جوی اصلی اجرا خواهد شد . تفاوت بین این نوع حمله با حملات از نوع UNION این است پرس و جوها به همدیگر متصل نمی شوند و کاملا از یکدیگر مستقل هستند. این نوع حملات Piggy-backed نام گرفته اند زیرا پرس و جوی دوم زیر پوشش پرس و جوی اول به سمت پایگاه داده ارسال می شود ][6] .5] هدف از این نوع حمله استخراج داده، اضافه کردن و تغییرداده، انجام ممانعت از سرویس، اجرای فرمان های راه دور می باشد

-5-2 روال های ذخیره شده

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

از اهداف این حمله انجام افزایش تدریجی مجوز، انجام ممانعت از سرویس، اجزای فرمان های راه دور را می توان نام برد .

-6-2 تزریق استنتاج

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

-3 روش های عمومی مقابله با تزریق SQL

بسیاری از محققان روش های گوناگونی برای کشف و جلوگیری از تزریق SQL ارائه کرده اند . بیشترین تکنیک های انتخاب شده بررسی استاتیک و داینامیک و ترکیبی از آن دو و تکنیک های یادگیری ماشینی هستند

-1-3 آنالیز استاتیک

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

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