Post

Broken Access Control

Broken Access Control

Broken Access Control: شرح مفصل مع أمثلة

Broken Access Control هو واحدة من أشهر ثغرات الأمان في تطبيقات الويب.
ببساطة، بيحصل لما المستخدم يقدر يوصل أو ينفذ عمليات مش مفروض يعملها بسبب ضعف في إدارة الصلاحيات.


أنواع Broken Access Control

1️⃣ Vertical Privilege Escalation

  • المستخدم العادي يقدر ينفذ عمليات خاصة بالمسؤول (Admin).
  • مثال عملي:
    • صفحة admin/delete-user?id=123 مفروض تكون محمية للمسؤولين فقط.
    • لو المستخدم العادي غير الرابط ونفذ العملية، يبقى حصل Vertical Escalation.

2️⃣ Horizontal Privilege Escalation

  • المستخدم يوصل بيانات أو صفحات مستخدمين آخرين بنفس المستوى.
  • مثال عملي:
    • بوابة دفع أو فواتير، رابطها:
      1
      
      /invoice/view?invoice_id=987
      
    • لو المستخدم غير الرقم وشاف فاتورة شخص آخر، يبقى حصل Horizontal Escalation.

3️⃣ Missing Function Level Access Control

  • بعض الوظائف في السيرفر ما فيهاش تحقق من الصلاحيات.
  • مثال:
    • API endpoint لإضافة منتج جديد:
      1
      
      POST /api/products/add
      
    • لو أي مستخدم يقدر ينفذها بدون تحقق، يبقى عندنا ثغرة Access Control.

الفرق بين Authentication و Authorization

  • Authentication: مين أنت؟
    مثال: انك تعمل او يكون ليك تسجيل دخول بـ username/password أو token.
  • Authorization: إنت مسموح تعمل إيه بعد ما عرفنا مين أنت؟
    مثال: “يا عمر، مسموحلك تشوف بروفايلك بس، مش صفحات حد تاني.”

أسباب حدوث الثغرة

  1. التحقق بيكون على الواجهة الأمامية (Client-side) فقط، مش على السيرفر.
  2. روابط URL أو API endpoints ما فيهاش تحقق من الصلاحيات.
  3. الاعتماد على قيم ثابتة للتحقق من المستخدم بدل التحقق الحقيقي في السيرفر.
  4. استخدام frameworks أو مكتبات بدون إعداد Access Control صحيح.

الفرق بين IDOR و Privilege Escalation

لما بنتكلم عن Broken Access Control، لازم نفهم الفرق بين نوعين شائعين:

IDOR (Insecure Direct Object Reference)

نوع من التجاوز الأفقي (Horizontal).

المستخدم يظل بنفس الدور، لكنه يوصل لموارد حد تاني بسبب عدم التحقق من ملكية الموارد.

مثال: تغيير رقم الفاتورة في الرابط /invoices/10 إلى /invoices/11 وشوفت فاتورة شخص آخر.

Privilege Escalation

نوع من التجاوز الرأسي (Vertical).

المستخدم يرفع صلاحياته ليقدر يعمل أفعال كانت مقصورة على دور أعلى (مثلاً user → admin).

مثال: مستخدم عادي يقدر يغير إعدادات الموقع أو role مستخدم آخر.


كيفية الحماية

  • تأكيد الصلاحيات على السيرفر فقط، مش على الواجهة.
  • تحقق من كل عملية أو endpoint وصلاحية المستخدم قبل تنفيذها.
  • استخدام Role-Based Access Control (RBAC) أو Attribute-Based Access Control (ABAC).
  • اختبر التطبيق بانتظام باستخدام Penetration Testing أو أدوات Bug Bounty.
  • التحقق من الروابط المباشرة (Direct Object References) لمنع المستخدمين من الوصول لبيانات غير مصرح بها.

أمثلة واقعية في Bug Bounty

  • شركة ما تركت Endpoint محمي جيدًا → أحد الباحثين استخدم Vertical Escalation لحذف حسابات مستخدمين آخرين.
  • بوابة دفع إلكترونية كانت تسمح بتغيير رقم الفاتورة في URL → الباحثين قدروا يشوفوا فواتير عملاء آخرين (Horizontal Escalation).

💡 نصيحة: Broken Access Control تعتبر من أكثر الثغرات خطورة، لأنها ممكن تسمح للمهاجمين بالوصول لبيانات حساسة أو تعديلها، حتى لو باقي أجزاء الموقع محمية.

This post is licensed under CC BY 4.0 by the author.