FixVibe
Covered by FixVibecritical

حقن SQL: منع الوصول غير المصرح به إلى قاعدة البيانات

يعد حقن SQL (SQLi) ثغرة أمنية خطيرة حيث يتدخل المهاجمون في استعلامات قاعدة بيانات التطبيق. ومن خلال إدخال بنية SQL ضارة، يمكن للمهاجمين تجاوز المصادقة، وعرض البيانات الحساسة مثل كلمات المرور وتفاصيل بطاقة الائتمان، أو حتى اختراق الخادم الأساسي.

CWE-89

تأثير حقن SQL

يسمح حقن SQL (SQLi) للمهاجم بالتدخل في الاستعلامات التي يجريها التطبيق على قاعدة بياناته [S1]. يتضمن التأثير الأساسي الوصول غير المصرح به إلى البيانات الحساسة مثل كلمات مرور المستخدم وتفاصيل بطاقة الائتمان والمعلومات الشخصية [S1].

بالإضافة إلى سرقة البيانات، يمكن للمهاجمين في كثير من الأحيان تعديل سجلات قاعدة البيانات أو حذفها، مما يؤدي إلى تغييرات مستمرة في سلوك التطبيق أو فقدان البيانات. في الحالات شديدة الخطورة، يمكن تصعيد SQLi لتسوية البنية التحتية الخلفية، أو تمكين هجمات رفض الخدمة، أو توفير باب خلفي مستمر لأنظمة المؤسسة [S1][S2].

السبب الجذري: التعامل مع المدخلات غير الآمنة

السبب الجذري لحقن SQL هو التحييد غير الصحيح للعناصر الخاصة المستخدمة في أمر SQL [S2]. يحدث هذا عندما يقوم أحد التطبيقات بإنشاء استعلامات SQL عن طريق تسلسل المدخلات المتأثرة خارجيًا مباشرةً في سلسلة الاستعلام [S1][S2].

نظرًا لعدم عزل الإدخال بشكل صحيح عن بنية الاستعلام، فقد يقوم مترجم قاعدة البيانات بتنفيذ أجزاء من إدخال المستخدم كرمز SQL بدلاً من التعامل معها كبيانات حرفية [S2]. يمكن أن تظهر مشكلة عدم الحصانة هذه في أجزاء مختلفة من الاستعلام، بما في ذلك عبارات SELECT أو قيم INSERT أو عبارات UPDATE [S1].

الإصلاحات والتخفيفات الملموسة

استخدم الاستعلامات ذات المعلمات

الطريقة الأكثر فعالية لمنع حقن SQL هي استخدام الاستعلامات ذات المعلمات، والمعروفة أيضًا باسم البيانات المعدة [S1]. بدلاً من تسلسل السلاسل، يجب على المطورين استخدام آليات منظمة تفرض فصل البيانات والكود [S2].

مبدأ الامتياز الأقل

يجب أن تتصل التطبيقات بقاعدة البيانات باستخدام أقل الامتيازات المطلوبة لمهامها [S2]. يجب ألا يتمتع حساب تطبيق الويب بامتيازات إدارية ويجب أن يقتصر على الجداول أو العمليات المحددة اللازمة لوظيفته [S2].

التحقق من صحة الإدخال والترميز

على الرغم من أنه ليس بديلاً عن تحديد المعلمات، إلا أن التحقق من صحة الإدخال يوفر دفاعًا متعمقًا عن [S2]. يجب أن تستخدم التطبيقات إستراتيجية قبول معروف-جيد، والتحقق من أن الإدخال يطابق الأنواع والأطوال والتنسيقات المتوقعة [S2].

كيفية اختبار FixVibe لذلك

يغطي FixVibe بالفعل حقن SQL من خلال وحدة الماسح الضوئي active.sqli. يتم تشغيل عمليات الفحص النشطة فقط بعد التحقق من ملكية النطاق والتصديق عليها. يقوم الفحص بالزحف إلى نقاط نهاية GET ذات الأصل نفسه باستخدام معلمات الاستعلام، وينشئ استجابة أساسية، ويبحث عن الحالات الشاذة المنطقية الخاصة بـ SQL، ويبلغ فقط عن النتيجة بعد تأكيد التوقيت عبر أطوال تأخير متعددة. تساعد عمليات فحص المستودع أيضًا في اكتشاف السبب الجذري مسبقًا من خلال code.web-app-risk-checklist-backfill، الذي يشير إلى مكالمات SQL الأولية التي تم إنشاؤها باستخدام استيفاء القالب.