

كنا تعرفنا في مقالة علي OWASP Top 10 وقمنا بذكر ما تحتويه القائمة من هجمات واليوم نعود لكم بمقالة مخصصة عن الـ Broken Access Control.
تُعد الـ Broken Access Controls من الثغرات الأكثر شيوعاً حيث انتقلت في الترتيب من المركز الخامس في قائمة OWASP Top 10 للعام 2017 إلى المركز الأول في قائمة OWASP Top 10 للعام 2021.
ما هو الـ Access Control؟
أو ما يُعرف بالـ Authorization، وهي عبارة عن منح أو تقييد صلاحيات المستخدمين علي التطبيق، وذلك حفاظاً على سلامة وسرية البيانات.
ما هي أنواع الـ Access Control؟
Vertical Access Control
يتم تقسيم الصلاحيات لعدة أنواع مختلفة من المستخدمين للتحكم في الوصول لوظائف التطبيق المختلفة، علي سبيل المثال لن يتمكن المستخدم العادي من الوصول إلى صفحات التحكم الخاصة بالمسؤولين.
Horizontal Access Control
لكل مستخدم بياناته التي قد تكون حساسة ولا ينبغي عرضها لأي مستخدم آخر، يتم التحكم في الوصول علي سبيل المثال بعرض بيانات المستخدم ولا يقوم بالسماح له بعرض بيانات مستخدم آخر.
Context-Dependent Access Control
يتم استخدام عناصر التحكم في الوصول في التأكد من ترتيب سير العملية، علي سبيل المثال لن يتمكن المستخدم من تغيير محتوى عربة التسوق بعد القيام بالدفع.
ما هو الـ Broken Access Control؟
تمتلك معظم الأنظمة شكلاً من أشكال التحكم في الوصول لتقييد الوصول إلى البيانات والأنظمة الحساسة، ورغم ذلك فإن تلك الصلاحيات لا تكون فعالة دائماً، حيث قد تمتلك نقاط ضعف مما قد يهدد بوصول غير مسموح.
ما هو تأثير الـ Broken Access Control؟
يُعرض الـ Broken Access Control التطبيق لتهديدات كثيرة، مما يؤدي لفقدان السرية والسلامة وثقة العملاء، حيث قد يتمكن المهاجم من تسريب البيانات ومعالجتها باستخدام صلاحيات مستخدم آخر.
ما هي أنواع الـ Broken Access Control؟
Vertical Privilege Escalation
إذا تمكن المهاجم من الوصول إلى صلاحيات التحكم الخاصة بالمسؤولين، حيث سيمكنه ذلك من تعريض كافة البيانات للخطر حيث بإمكانه إضافة أو تعديل أو حذف تلك البيانات.
Unprotected Functionality
النوع الأول من الـ Vertical Privilege Escalation حيث لا يتم فرض أي نوع من أنواع صلاحيات الوصول لصفحات المسؤولين، علي سبيل المثال:
Example.test/admin
حيث يمكن للمستخدم العادي الوصول لصفحات التحكم الخاصة بإدارة تطبيق الويب.
Parameter Based Access Control Method
النوع الثاني عندما يقوم تطبيق الويب بتحديد صلاحيات وصول المستخدم بناء علي المتغيرات في عنوان الـ URL على سبيل المثال إذا قام مستخدم عادي بتسجيل الدخول:
Example.test/login?adminstrator=false
إذا لم يكن تطبيق الويب يقوم بالتحقق من صلاحيات الوصول للمستخدم عند تسجيل الدخول إذا بإمكانه تغيير قيمة المتغير إلى True وتسجيل الدخول بصلاحيات الـ administrator.
Example.test/login?adminstrator=true
Platform Misconfiguration
النوع الثالث عندما تفرض تطبيقات الويب صلاحيات معينة في الوصول لعناوين URL محددة بناء علي نوع صلاحيات المستخدم عند إرسال الطلبات إلى خادم الويب، على سبيل المثال:
DENY: POST, /admin/edit, users
حيث يمنع التحكم في الوصول مجموعة users من الوصول إلى هذه الصفحة ولكن يمكن استخدام بعض الـ Headers لتجاوز صلاحيات الوصول مثل X-Original-URL أو X-Rewrite-URL.
POST / HTTP/1.1
X-Original-URL: /admin/edit
Horizontal Privilege Escalation
يحدث ذلك النوع عندما يتمكن المستخدم في الوصول إلى بيانات تخص مستخدما آخر، لنفترض أن لدينا تطبيقا للمعاملات البنكية حيث يتم عرض البيانات طبقاً لرقم حساب المستخدم:
Example.test/?AccountID=1
تحدث عندما يقوم المهاجم بتعديل قيمة الـ AccountID إلى رقم حساب آخر حيث يتمكن من عرض البيانات دون التحقق من صلاحيات وصوله ما إذا كان المالك لرقم الحساب أم لا.
Insecure Direct Object References (IDOR)
نوع من الثغرات الأمنية يحدث عندما يتمكن المستخدم من تغير بعض المتغيرات التي يوفرها تطبيق الويب للحصول علي وصول غير مصرح به، وقد تواجدت هذه الثغرة في قائمة OWASP Top 10 للعام 2007.
اقرأ أيضاً: مخاطر ثغرة الـ IDOR: كيفية البحث عن ثغرات IDOR وإصلاحها
Access Control Vulnerability in Multi-Step Process
تقوم بعض تطبيقات الويب بتنفيذ بعض العمليات بترتيب وخطوات معينة، حيث لا يستطيع المستخدم الوصول للنتيجة النهائية دون المرور بخطوات سابقة، إذا تمكن المهاجم من الوصول للنتيجة النهائية دون الالتزام بترتيب الخطوات فذلك يُعد انتهاكاً لصلاحيات الوصول.
Referer-Based Access Control
إذا قام تطبيق الويب بفرض صلاحيات الوصول لصفحات التحكم الخاصة بالمسؤليين عن طريق التحقق من الـ Referer Header علي سبيل المثال:
GET /admin/users
لا يمكن للمستخدم العادي الوصول للمسار الفرعي users ولكن إذا كان تطبيق الويب يمكن المستخدم من الوصول للصفحة من خلال التأكد من رأس المسار وهو admin فقط يتمكن المهاجم من تجاوز صلاحيات الوصول من خلال إضافة Referer Hedaer:
GET /admin/users
Referer: /admin
طرق الحماية من ثغرات الـ Broken Access Control
- اختبار التحكم في الوصول بصفة مستمرة
- رفض الوصول افتراضياً ثم تحديد الصلاحيات
- استخدام نهج واحد لصلاحيات الوصول على كامل التطبيق مع تحديد صلاحيات محددة في Group محدد بدلا من تحديد صلاحيات كل مستخدم على حدة
- التحقق ما إذا كان المستخدم له الحق في الوصول أو لا
- الحد من استخدام Cross-Origin Resource Sharing
- تأمين مسارات التطبيق لمنع محاولة الوصول لملفات بداخل الخادم
وهنا نكون قد وصلنا إلى نهاية مقالتنا عزيزي القارئ ولا تنسى أن تنتظرنا قريباً- إن شاء الله- وإلى لقاء آخر قريب...