امنیت تکنولوژی سازمان

سیاست‌های امنیت پایگاه داده Database و تحلیل انواع حملات سرور

Database-Security-digispark
نوشته شده توسط زهره میرکاظمی

اطمینان از پایگاه داده موضوعی سخت و پیچیده برای شرکت‌ها است. هر چه پایگاه داده پیچیده و بزرگتر باشد؛ میزان امنیت آن هم به نسبت پیچیده‌تر است. حتی ارتباطات شبکه و اینترنت در پایگاه داده ممکن است پیچیدگی کارها را بیشتر کند. همچنین اضافه شدن هر کدام از کاربران ایترنتی به پایگاه کاربران، باعث به وجود آمدن مشکلات بیشتری می‌شود. هدف از این مقاله یافتن و مشخص کردن روش‌های حمله به پایگاه داده Data Base است و همچنین برای خنثی کردن این حمله‌ها بیشتر روی مسئله حساس رابط داده‌ای تمرکز شده است. در ادامه می‌خواهیم با یکسری از آسیب‌های پایگاه داده آشنا شویم؛ این لیست به هیچ وجه کامل نیست و این مقاله بر بررسی خطاهایی که بیشتر با آنها مواجه می‌شویم متمرکز است. در ادامه با دیجی اسپارک همراه باشید.

 

انواع حملات به پایگاه داده

۱- Cross-site scripting XSS

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

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

 

حملات Cross-site scripting XSS در چه زمان‌هایی اتفاق می‌افتد؟

  1. زمانی که داده‌هایی از منابع و سایت‌های غیر قابل اعتماد وارد سایت شده و در بیشتر مواقع به صورت درخواست‌هایی از سمت وب به یک برنامه تحت وب ارسال می‌شود.
  2. از طریق داده‌ای که شامل محتوی پویاست و بدون اعتبارسنجی، به کاربران وب ارسال شده است.

 

سیاست‌های امنیت پایگاه داده Database دیجی اسپارک stored-xss

 

سیاست‌های امنیت پایگاه داده Database دیجی اسپارک reflected-xss

حملات XSS به طور کلی به ۲ دسته تقسیم شوند

ذخیره شده و بازتاب، سومین نوع حمله‌های XSS ، DOM Based XSSStored نام دارد که کمتر شناخته شده و اسکریپت‌هایی هستند. به سرورهای هدف نفوذ پیدا کرده و به طور دائمی در پایگاه داده آن‌ها ذخیره می‌شوند. حمله‌های بازتابی زمانی رخ می‌دهد که فایل‌های نفوذی یا همان اسکریپت‌ها از طریقی روی سرورهای وب بازتابیده می‌شوند مثل نمایش یک پیغام خطا یا نتیجه جستجو یا هرگونه جواب دیگری که شامل ورودی‌های ارسال شده، به عنوان یک درخواست به سمت سرور باشد.

سیاست‌های امنیت پایگاه داده Database دیجی اسپارک DOM-based-xss

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

 

۲- Cross-site request forgery CSRF

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

سیاست‌های امنیت پایگاه داده Database دیجی اسپارکcsrf

CSRF حمله ای است که کاربران را به تایید یک درخواست مخرب ترغیب میکند و در واقع هویت و مشخصات قربانی را برای انجام یک عملیات ناخواسته از جانب قربانی ، به ارث می برد. برای اکثر سایت ها درخواست های مرورگر شامل هر اعتباری مربوط به سایت می شود( مثل کوکی و session کاربر و ip address و مدارک مربتط با دامنه و …) بنابراین اگر کاربر در حال تایید اعتبار و هویت روی سایت باشد، این سایت  هیچ را هی برای تشخیص      درخواست جعلی فرستاده شده توسط قربانی و درخواست قانونی فرستاده شده از سمت قربانی ندارد. هدف حمله CSRF تغییر وضعیت سرور است مثل تغییر آدرس ایمیل قربانی، تغییر رمز عبور یا خرید چیزی. در این حمله مجبور کردن قربانی به بازیابی داده ها سودی برای مهاجم ندارد زیرا پاسخ توسط قربانی دریافت شده و مهاجم از آن اطلاعی ندارد. بر این اساس CSRF حمله به تغییر درخواست ها را هدف قرار می دهد.

گاهی اوقات ممکن است حمله های CSRF خودش روی سایت قربانی ذخیره شود که چنین آسیب پذیری هایی “stored CSRF flaws” نامیده می شود. این کار میتونه به سادگی با ذخیره یک عکس یا تگ IFRAME در یک فیلدی که HTML را قبول میکند، یا به صورت حمله های CSRF پیچیده تری انجام شود. اگر این حمله ها بتوانند روی سایت ذخیره شوند شدت سختی این حملات را تقویت می کند و به ویژه احتمال آسیب پذیری بیشتری وجود دارد زیرا احتمال اینکه قربانی صفحات مورد حمله را مشاهده کند نسبت به برخی صفحات تصادفی در اینترنت بیشتر است. و این زمانی افزایش پیدا می کند که کاربر از اعتبار سنجی سایت اطمینان دارد.

۳-  SQL injection

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

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

سیاست‌های امنیت پایگاه داده Database دیجی اسپارک ilustrasi-sql-injection

با توجه به رابط برنامه های کاربردی در دسترس برنامه های J2EE و ASP.NET احتمال کمتری دارد که این نوع برنامه ها به سادگی توسطSQL injection  مورد حمله قرار گیرند.

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

خطاهای  SQL injection زمانی رخ می دهد که:

  1. داده از یک منبع نامعلوم وارد برنامه می شود.
  2. داده هایی که برای ساختن یک پرس و جو sql به صورت پویا استفاده می شود.

این پلتفرم می تواند روی این بخش ها تاثیر بگذارد:

  • زبان : SQL
  • پلتفرم: هر درخواستی که نیاز به تعامل با پایگاه داده SQL دارد.

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

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

۴- Brute force attack

این حمله های ناخواسته و بی رحمانه میتواند خود را به گونه های مختلفی آشکار کند اما عمدتا شامل مقدارهایی در قالب ساختار و آرایش از پیش تعیین شده هستند. برای درخواست دادن به سرور از این داده ها استفاده و بعد جواب را آنالیز میکند. به منظور بهره وری، مهاجم ممکن است از یک حمله فرهنگ لغت ( بدون تغییر یا شاید همراه با تغییر) یا یک حمله Brute force  مرسوم (از کلاس های داده شده: حروف الفبا، عدد، حساس به حروف کوچک و بزرگ) استفاده کند. با توجه به روش های داده شده، تعداد تلاش ها، کارایی سیستمی که هدایت حمله را بر عهده دارد و برآورد راندمان سیستمی که مورد حمله قرار میگیرد ، مهاجم قادر است مدت زمانی که طول میکشد تا تمام موارد از پیش تعیین شده برای حمله انجام گردد را به طور تقریبی محاسبه کند.

سیاست‌های امنیت پایگاه داده Database دیجی اسپارک Brute force attack

حمله Brute force یک حمله رمزگشایی است  و این تئوری می تواند برای رمزگذاری و رمزگشایی داده ها استفاده شود  ( به جز داده هایی که به شیوه های امن رمزگذاری شده اند) چنین حمله ای زمانی مورد استفاده قرار میگیرد که  نمیتوانیم از ضعف های سیستم کدگذاری (اگر وجود داشته باشد) سودی ببریم که باعث ساده تر شدن کار می شود.

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

رمز عبورهای طولانی و کلید ها ممکن است مقادیری داشته باشند که باعث سخت شدن آنها برای شکستن و کوچکتر کردن آن می شود.

تاثیر حملات Brute force را میتوان با مبهم کردن داده ها برای کدگذاری کم کرده و این موضوع برای مهاجم قابل تشخیص نباشد که کد خراب شده یا برای آزمایش هر حدسی باید بیشتر تلاش کند!

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

 

درباره نویسنده

زهره میرکاظمی

تبادل نظر و رفع عیب با ثبت دیدگاه