أصبحت تطبيقات الويب منتشرة اليوم كما ضرورة الحياة اليومية. هناك الآلاف من الانتهاكات الأمنية التي تحدث كل يوم. يبدو أن أكثر من 75٪ من مواقع الويب وتطبيقات الويب الخاصة بالشركات كانت عرضة لخروقات أمن الانترنت. كان الهجوم الأكثر شيوعاً على الويب هو هجوم حقن قواعد البيانات SQL.
تتم هذه الهجمات من خلال استخدام سلسلة من طلبات أو تعليمات SQL للتلاعب بقاعدة البيانات بشكل مباشر. عادةً ما يقوم التطبيق باستخدام تعليمات SQL لمصادقة المستخدم وربط البيانات من مصادر مختلفة. لكن في حال عدم تحقق التطبيق من مدخلات المستخدم قبل تمريره كتعليمة SQL ستكون الأرضية مهيئة لهذا الهجوم. في هذا الممقال يعرض لكم روبودين أسباب حدوث هذه الثغرات وطرق الحماية والإجراءات المضادة التي يجب اتباعها للتخفيف أو منع وجود هذه الثغرات في تطبيقات الويب.
أسباب إصابة تطبيقات الويب بثغرة SQL Injection
يمكن لسيرفر قاعدة البيانات تنفيذ تعليمات على النظام:
في بعض الأحيان يمكن لسيرفر قاعدة البيانات استخدام تعليمات نظام التشغيل للقيام بمهمة معينة. وبالتالي فالمهاجم الذي سيصل إلى سيرفر قاعدة البيانات سيتمكن تنفيذ تعليمات على النظام.
استخدام حساب له صلاحيات عالية للاتصال بقاعدة البيانات:
يمكن للمطور أن يسند لمستخدم قاعدة البيانات حساب له صلاحيات عالية. وبذلك فالمهاجم بوصوله لهذا الحساب سيمكنه الوصول لقاعدة البيانات وتنفيذ أعمال خبيثة على مستوى نظام التشغيل.
رسائل الخطأ تكشف معلومات حساسة:
إذا كان المعطيات المدخلة من قبل المستخدم خاطئة أو غير موجودة فإن سيرفر قاعدة البيانات سوف يعرض رسالة خطأ يمكن أن تكشف معلومات عن قاعدة البيانات وهذه المعلومات مفيدة جداً للمهاجم.
عدم التحقق من البيانات:
يعتبر هذا السبب الرئيسي لنجاح هجوم حقن قواعد البيانات SQL، معظم تطبيقات الويب المصابة بهذه الثغرة لأنها لا تحوي على تقنية تحقق أو فلترة للبيانات المدخلة وهذا يسمح للمهاجم بحقن أكواد خبيثة ضمن الطلبات الشرعية
تقليل ضرر هجوم حقن قواعد البيانات SQL:
يمكن أن يساعد اتباع معايير البرمجة الآمنة والتقليل من مستوى الصلاحيات واستخدام جدران نارية خاصة بتطبيقات الويب للحماية ضد هجمات SQL Injection.
1- التقليل من مستوى الصلاحيات:
غالباً ما يتجاهل المطور الجانب الخاص بالحماية عند إنشاء تطبيق جديد. وغالباً ما يتم تأجيل هذه العملية لبعد الانتهاء من عملية الإنشاء بشكل كامل. ولكن الجانب الأمني يجب أن يكون له أولوية أثناء عملية إنشاء المواقع. ومن المهم جداً خلق حساب له مستوى صلاحيات منخفضة ومن ثم تتم عملية إضافة الصلاحيات بحسب الحاجة لها.
2-اتباع معايير البرمجة الآمنة:
من المهم لمطوري تطبيقات الويب وقواعد البيانات أن يدركوا أهمية الجانب الأمني لكامل بنية الشبكة. وكذلك التأثير الذي يمكن أن يسببه التطبيق على هذه الشبكة. كما يجب أن يلتزموا بقواعد البرمجة الآمنة والمعايير والسياسات الخاصة أثناء عملية التطوير للتطبيق وقاعدة البيانات. أفضل مثال على هذه العملية هو تطبيق آلية للتحقق من المدخلات الخبيثة كما يجب منع عرض رسائل الخطأ الافتراضية لأنها تحوي على معلومات عن نوع النظام المستخدم ومعلومات تفصيلية مفيدة للمهاجم.
3-استخدام جدار ناري:
يجب أن يتم حماية سيرفر قاعدة البيانات باستخدام جدار ناري يسمح فقط للمستخدمين الموثوقين بالاتصال. في معظم بيئات الويب يتصل جهاز مدير الشبكة وسيرفر أو سيرفرات الويب (كخدمة) بسيرفر قاعدة البيانات بشكل افتراضي. يستخدم سيرفر SQL البورتات 139 – 445 للبرتوكول TCP و البورتات 1433 – 1434 للبرتوكول UDP. و من التهديدات الأمنية بهذا المجال:
- المطور الذي يقوم برفع أو استخدام script أو مكونات غير آمنة على سيرفر الويب
- عدم تطبيق عمليات التحديث والترقيع للثغرات الأمنية
- أخطاء الإدارة
الإجراءات المضادة لهجمات SQL Injection:
للحماية ضد هجمات حقن تعليمات قواعد البيانات يجب على المطور إنشاء تطبيق قوي وآمن يلتزم بقواعد البرمجة الآمنة والإجراءات. والتالي هو بعض هذه الإجراءات:
- فحص حجم ونوع البيانات المدخلة ومحتوى المتغيرات النصية والموافقة فقط على القيم المتوقعة
- رفض أو منع المدخلات التي تحوي بيانات ثنائية binary او الرموز المستخدمة للتعليقات أو علامات التنصيص
- عدم بناء تعليمة SQL بشكل مباشر من مدخلات المستخدم ولكن تخزين المدخلات بشكل مؤقت للتحقق منها
- استخدام أكثر من طبقة تحقق
- التأكد من أن ملفات الإعدادات الخاصة بتطبيقات الويب لا تحوي على معلومات حساسة
- استخدام حسابات مقيدة الصلاحيات
- استخدام أنظمة منع وكشف الاختراق لمراقبة واكتشاف عمليات الحقن
- استخدام جدران نارية خاصة بتطبيقات الويب
- اختبار للحقن وفحص وتحليل الكود البرمجي
- استخدام خوارزميات هاش قوية في عملية حفظ كلمات السر وعدم حفظ أي كلمة سر بشكل نص صريح
- تطبيق أقل مستوى صلاحيات لعمل التطبيق والوصول لنظام إدارة قاعدة البيانات
- التأكد من أن دخل المستخدم مطابق للمعايير قبل استخدامه لخلق تعليمة SQL بشكل اتوماتيكي
- عزل سيرفر الويب داخل الشبكة
- التأكد من تحديث كل البرامج والتطبيقات وأنظمة التشغيل بشكل دوري
كلمة أخيرة عن هجوم حقن قواعد البيانات
للأسف فإن بعض الشركات والمؤسسات لا تعرف ماهية هجوم حقن SQL ، والبعض يعرف ولكنهم لا يفعلون أي شيء حيال ذلك. لذلك فإن هدف هذا المقال هو تعزيز الوعي العام بهجمات حقن SQL.