شش مرحلهی مقابله با SQL Injection :
استفاده رو به افزایش پایگاههای داده و برنامههایی که این پایگاهها را بهم متصل میکند، به معنای این است که SQL Injectionهنوز باید چزو نگرانیهای متخصصان حوزهی امنیتی IT باشد.
اخبار فراوانی پیرامون حملات سایبری و نفوذ امنیتی به شرکتهایی همچون Target ، Michaels ، Niemen Mrcus و هتلهای زنجیرهای همچون، هتل هیلتون و هتل ماریوت وجود دارد. مسئلهی مهمتری که بیش از کشف این حملات وجود دارد اینست که این شرکتهای بزرگ که قربانی این حملات بودهاند، هنوز دقیقاً نمیدانند که چگونه این حملات انجام شده است و درک درست وکاملی از عواقبی که به تبع این حملات به آنها تحمیلشدهاست ندارند.
موضوعی که در رابطه با این حملات محتمل به نظر میرسد اینست که حداقل در برخی از این حملات، از SQL Injection استفاده شده باشد. بیش از 10 سال است که مهاجمین برای سرقت اطلاعاتی نظیر اطلاعات حسابها و تراکنشهای مالی از طریقSQL Injection به پایگاه داده بیشماری نفوذ کردهاند.
حملات SQL Injection پدیده تازه شناخته شدهای نمیباشد و متخصصان امنیتی تواناییهای زیادی برای مقابله با این حملات دارند. اما با توجه به اظهارات Neira Jones ، مدیر سابق امنیت پرداخت شرکت Barclaycard ، هنوز بالغ بر 97% در دنیا از این شیوه بهره می گیرند. موضوعی که انسان را کنجکاو می کند اینست که با وجود شناخت این حملات، چگونه این حملات موثر هستند؟
موفقیت این حملات به معنای این نیست که فعالیتهای در این زمینه کم بوده است، بلکه متخصیص حوزههای امنیتی از ماهیت حملات و نحوهی انجام آنها آگاهند ولی حملات اخیر و حجم بروز آنها این متخصصان را نیز سرگردان کرده است. موضوعی که این باعث موفقیت این حملات در حال حاضر شده است، اینست که اغلب این حملات از آسیبپذیریهای روز صفرم استفاده میکنند و این به معنای این است که مولفههای این حملات تاکنون دیده نشدهاند و شواهدی از انجام نفوذ به پایگاه داده در آنها دیده نمیشود. همین امر مشکلات فراوانی را برای متخصصان حوزهی امنیت IT ، مخصوصاً متخصصینی که بر روی شناسایی این حملات از طریق تکنولوژی امنیتی مبتنی بر امضای دیجیتالی حساب باز کرده بودند، ایجاد کرده است.
مقابله با این حملات، باید با اتخاذ رویکردی متفاوت انجام شود، رویکردی که بر اساس آن دسترسیهای نرمال و همچنین شناسایی آنچه که باعث قرار گرفتن دسترسی در دستهی دسترسیهایی غیرمجاز خواهد شد، مشخص شود. این رویکرد باید به گونهای باشد که بر اساس آن بتوان حملاتی که بدون ایجاد شاخصههای مثبت کاذب در حال انجام است، را شناسایی کرد.
محصولاتی که از این نوع رویکرد استفاده میکنند در حال ظهور و افزایش هستند. از جملهی این محصولات میتوان به DB Networks ، SQL Injection Management Solution اشاره نمود. این دو محصول اخیراً در بسیاری از سایتها بررسی شده اند.
با توجه به مواردی که در این نوع از حملات وجود دارد، واضح است که باید شیوههای بهتری برای کاهش امکان بروز این حملات تعبیه شود. سه مورد از این روشها بر روی جنبههای مدیریت و طراحی سیستمهای پایگاهداده SQL متمرکزند، این روشها به صورت زیر است:
1-چشم بسته به ورودیها اطمینان نکنید
به معنای سادهتر، اعتبار و صحت هرگونه دادهای که در موتور SQL قرار داده میشود باید بررسی شود که به معنای این خواهد بود که ارگانها و سازمانها باید چارچوبهای امنیتی را در موقع طراحی رعایت و اجرا کنند که نیازمند اینست کهSQL با استفاده از کووریهای پارامتری شده ساخته شود، تکنیکی که نیاز به کدنویسی سنگینی دارد و از طریق آن حملات SQL Injection از طریق جداسازی کدهای اجرایی و اطلاعات ورودی از یک دیگر، مانع بروز این حملات میشود.
2-پیامهای خطایی که ایجاد میکنید با دقت بیشتری انتخاب کنید
معمولاً مهاجمان از پیامهای خطایی که در برنامه ایجاد شده است استفاده میکنند تا بفمند که بهتر است چگونه به پایگاه داده حمله کنند. برنامه نویسان و مدیران پایگاههای داده باید به خطاهایی که در هنگام ایجاد یک ورودی غیر معمول نمایش داده میشوند، توجه بیشتری داشته باشند. مثلاً خطای ‘نام کاربری نمیتواند شامل اعداد باشد’ را که توسط پایگاه داده برگردانده میشود در نظر بگیرید. همین اطلاعات کم می تواند به مهاجم این کمک را بکند که در قسمت نام کاربری اعداد را وارد نکند.
3-بستههای مکمل نرم افزارها و پایگاههای داده را به طور کامل تهیه و اجرا کنید
لازم به ذکر این نکته نیست که بستههای مکمل نرم افزاری باید به طور منظم به برنامه اعمال شوند. اعمال بستههای مکمل نرم افزاری یکی از تکنیکهای امنیتی مغفول است. دلیل این امر میتواند، ضعف مدیریتی، عدم اطلاع رسانی و یا ضعف اطلاع رسانی عرضه کننده و فروشندهی محصول و یا ترکیبی از این دو و دیگر عوامل باشد. بسیاری تنها راه برای حل این مشکل را استفاده از سیستم مدیریت بستههای مکمل میدانند که در اغلب موارد، با ایجاد یک مشکل کوچک، این برنامهها به شکست کشیده می شوند.
4-از ابزارهای رصد و مانیتورینگ شبکه استفاده کنید
رصد فعالیتهای مرتبط با دسترسی در سطح نرمافزارها، شاخصی است که میتواند شما به سرعت را از بروز حمله آگاه کند. راه حل ساده در این گونه موارد اینست که افزایش تعداد خطاها و یا افزایش در فعالیت، میتواند به عنوان ملاکی در نظر گرفته شود که به مدیر سیستم در مورد یک حملهی در حال انجام هشدار دهد.
5-ابزارهای فیلترینگ را فراموش نکنید
نرم افزارهای امنیتی بلادرنگ در کنار سیستمهای مانیتورینگ از طریق فیلترکردن ترافیکهای مشکوک و نادیدهگرفتن دسترسی به پایگاه داده میتوانند برای دفع حملات در حین بروز آنها استفاده شوند.
6-امنیت پایگاه داده خود را ارتقاء دهید
استفاده از سیستمهای تصدیق هویت اضافی که ازتکنولوژی امضای منفرد(SSO)، استفاده میکنند، در کنار استفاده از کنترلهای امنیتی از برنامهها و پایگاههای Backend میتواند موجب ارتقاء محافظت از پایگاههای دادهی آسیبپذیر شود. مطلب دیگری که وجود دارد اینست که استفاده از سیستمهای تصدیق هویت High end نیز در این مورد بسیار کارساز است. این سیستمها این قابلیت را دارند تا ورود به سیستم را به همراه بازرسی و اعطای امتیازات ویژه برای کاربران اصلی را درکنار یکدیگر هم ارائه کند. به عبارت دیگر دسترسی ویژه فقط برای مدیران سیستم و پایگاه داده امکان پذیر است و چناچه دیگران سعی کنند، تا از این قابلیتهای ویژه که برای مدیران در نظر گرفته شده استفاده کنند، این موضوع ثبت خواهد شد و به عنوان فعالیت مشکوک گزارش خواهد شد.
ترکیب بهترین شیوهها و استفاده از تکنولوژیهایی آتیای که پس از محصول فعلی به بازار ارائه میشوند، در کار یکدیگر ثابت کرده است که بهترین روش برای مقابله با حملات SQL Injection که هنوز جزو دغدغههای شرکتهای بزرگ و کوچک است، میباشد.