A07:2021 – الهوية و فشل عملية التحقق
العوامل
ربطها مع CWEs | الحد الأقصى للحدوث | متوسط معدل الحدوث | التغطية القصوى | متوسط معدل التغطية | متوسط استغلال الثغرات | متوسط التأثير | إجمالي التكرار | إجمالي نقاط الضعف CVEs |
---|---|---|---|---|---|---|---|---|
22 | 14.84% | 2.55% | 79.51% | 45.72% | 7.40 | 6.50 | 132,195 | 3,897 |
نظرة عامة
هذ التصنيف يُعرف سابقًا باسم ضعف التحقّق من الهوية (Broken Authentication) وكانت هي الخطر رقم #2 في الإصدار السابق. وحاليًا تشمل على العديد من CWEs المتعلقة بفشل عملية التحقّق. يتضمّن هذا التصنيف كل من (CWE-384,CWE-297,CWE-287).
الوصف
يُعد تأكيد هوية المستخدم والمصادقة وإدارة الجلسة أمرًا بالغ الأهمية وذلك للحماية من الهجمات المتعلقة بالمصادقة. قد يكون هناك ضعف في المصادقة إذا كان التطبيق:
-
يسمح بالهجمات الآلية مثل هجمات بيانات الاعتماد (Credential Stuffing)، حيث يكون لدى المهاجم قائمة بأسماء المستخدمين وكلمات المرور.
-
يسمح باستغلال هجوم كسر كلمات المرور (Brute Force) أو الهجمات الآلية الأخرى.
-
يسمح بهجمات كلمات المرور الافتراضية أو الضعيفة أو المعروفة ، مثل "Password1" أو " Admin / Admin".
-
يستخدم عوامل ضعيفة وغير فعّالة لاستعادة كلمات المرور واسترجاع بيانات الاعتماد والتي يجعلها آمنة، مثل "الأجوبة المستندِة على المعرفة".
-
يستخدم كلمات مرور غير مشفّرة، أو مشفّرة بشكل مُجزّأ أو بشكل ضعيف (راجع A3:2017- البيانات الحساسة الغير محميّة أو المكشوفة).
-
عدم تفعيل التحقّق الثنائي أو تكون غير فعّالة.
-
يعرض معرّفات الجلسة (Session IDs) في عنوان URL
-
لا يقوم بإعادة إنشاء معرّفات الجلسة بعد تسجيل الدخول بنجاح.
-
لا ينهي معرّفات الجلسة بشكل صحيح. لا يتم إنهاء جلسات المستخدم أو رموز المصادقة (Authentication Tokens) وخاصة رموز الدخول الموحّد (SSO) بشكل صحيح خلال تسجيل الخروج أو في فترة الخمول.
كيفية الحماية منها
-
حيثما أمكن ذلك، قم بتفعيل التحقّق الثنائي لمنع الهجمات الآلية لبيانات الاعتماد(Credential Stuffing)، وهجوم كسر كلمات المرور (Brute Force) وهجمات إعادة استخدام بيانات الاعتماد المسروقة.
-
لا ترسل أو تضع بيانات اعتماد افتراضية، خاصة بالنسبة لمدراء النظام (المسؤولين)
-
نفِّذ عمليات التحقّق من كلمات المرور الضعيفة، مثل اختبار كلمات المرور الجديدة أو التي تم تغييرها ومقارنتها بقائمة أسوأ 10,000 كلمة مرور.
-
اضبط طول كلمة المرور وصعوبتها وقم باتباع السياسات والإرشادات الواردة في NIST 800-63b في القسم 5.1.1 "تذكّر كلمات السر المحفوظة أو سياسات كلمة المرور".
-
تأكد من أن مسارات كُلًا من التسجيل واستعادة بيانات الاعتماد وواجهة برمجة التطبيقات (API) محميّة ضد هجمات فحص الحسابات (Account Enumeration) ، قم بإظهار نفس رسائل الخطأ لجميع عمليات تسجيل الدخول.
-
الحد من محاولات تسجيل الدخول الفاشلة. وقم بتسجيل جميع حالات فشل عملية تسجيل الدخول وقم بتنبيه المسؤولين عند اكتشاف محاولة هجمات كسر بيانات الاعتماد (Credential Stuffing) أو هجوم كسر كلمات المرور (Brute Force) أو أي هجمات أخرى.
-
استخدم مدير جلسة مُدمج وآمن من جانب الخادم، يقوم بإنشاء معرّف جلسة عشوائية جديدة مع (Entropy) عالية بعد تسجيل الدخول، معرّفات الجلسات يجب ألا تكون موجودة في عنوان URL، ويجب تخزينها بشكل آمن و إنهاء صلاحيتها بعد تسجيل الخروج، أو الخمول، والانتهاء المُطلق (انتهاء أو نفاذ الوقت).
أمثلة على سيناريوهات الهجوم
سيناريو #1: هجمات بيانات الاعتماد وهي عبارة عن استخدام قوائم معروفة سابقًا لمجموعة من كلمات المرور وتُعتبر من أكثر الهجمات شيوعًا، و لنفرض أن أحد التطبيقات لم يُطبّق الحماية التلقائية والكافية للحد من التهديدات أو هجمات بيانات الاعتماد، في هذه الحالة، يمكن استخدام رسائل الخطأ الصادرة من التطبيق كمعيار لتحديد ما إذا كانت بيانات الاعتماد صالحة.
سيناريو #2: تحدث معظم هجمات المصادقة بسبب الاستخدام المستمر لكلمات المرور كعامل وحيد لتسجيل الدخول حتى وإن تم اعتماد أفضل الممارسات والتغيير المستمر لكلمات المرور حيث جعل سياسة كلمة المرور معقّدة، يُشجّع المستخدمين على إعادة استخدام كلمة المرور. لذلك ننصح المؤسسات بإيقاف هذه المُمارسات وفقًا لـ NIST 800-63 واستخدام التحقّق الثنائي.
سيناريو #3: لا يتم تعيين مدة انتهاء الجلسة (Timeouts) للتطبيق بشكل صحيح، يقوم المستخدم باستخدام أحد الأجهزة الموجودة في الأماكن العامة للوصول إلى أحد التطبيقات بدلًا من اختيار "تسجيل الخروج"، يقوم المستخدم ببساطة بإغلاق علامة تبويب المتصفح، فيقوم المهاجم باستخدام نفس المتصفح بعد ساعات قليلة ليجد أنه لا يزال المستخدم قيد تسجيل الدخول (Authenticated).
المصادر
-
OWASP Application Security Verification Standard: V2 authentication
-
OWASP Application Security Verification Standard: V3 Session Management
-
NIST 800-63b: 5.1.1 Memorized Secrets
قائمة الربط مع إطار CWEs
CWE-255 Credentials Management Errors
CWE-259 Use of Hard-coded Password
CWE-287 Improper Authentication
CWE-288 Authentication Bypass Using an Alternate Path or Channel
CWE-290 Authentication Bypass by Spoofing
CWE-294 Authentication Bypass by Capture-replay
CWE-295 Improper Certificate Validation
CWE-297 Improper Validation of Certificate with Host Mismatch
CWE-300 Channel Accessible by Non-Endpoint
CWE-302 Authentication Bypass by Assumed-Immutable Data
CWE-304 Missing Critical Step in Authentication
CWE-306 Missing Authentication for Critical Function
CWE-307 Improper Restriction of Excessive Authentication Attempts
CWE-346 Origin Validation Error
CWE-521 Weak Password Requirements
CWE-613 Insufficient Session Expiration
CWE-620 Unverified Password Change
CWE-640 Weak Password Recovery Mechanism for Forgotten Password
CWE-798 Use of Hard-coded Credentials
CWE-940 Improper Verification of Source of a Communication Channel