أمن تسجيل الدخول المتزامن
يمكن لتسجيلات الدخول غير المحدودة أن تخفي ثغرات خطيرة في منطق الأعمال.
يقوم مستخدم بتسجيل الدخول من جهاز كمبيوتر محمول. وبعد ثوانٍ، يتم تسجيل الدخول إلى نفس الحساب من متصفح مختلف. ثم من جهاز محمول. ثم من عميل API. كل شيء يعمل بشكل مثالي.
يبدو هذا الأمر طبيعيًا لأن العديد من التطبيقات تدعم أجهزة متعددة. ولكن يجب أن تتساءل: هل يجب أن تسمح كل التطبيقات بجلسات غير محدودة؟
في بعض الأنظمة، تُعد الجلسات المتعددة ميزة. وفي أنظمة أخرى، تُعد ثغرة يستخدمها المهاجمون للبقاء متخفين. هذه ثغرة في منطق الأعمال؛ فالكود يعمل كما هو مصمم، ولكن التصميم نفسه ضعيف.
الفرق: • الثغرات التقليدية تستغل أخطاء برمجية. • ثغرات منطق الأعمال تستغل قرارات التصميم.
فكر في خدمة بث أفلام. إذا كان الاشتراك الواحد يسمح لعشرة أشخاص بالمشاهدة في وقت واحد، فإن نظام تسجيل الدخول يعمل، ولكن قاعدة العمل هي التي تفشل.
ينطبق هذا على الخدمات المصرفية، ولوحات التحكم الإدارية، ومنتجات SaaS.
كيفية اختبار ذلك:
- سجل الدخول عبر المتصفح (أ) وأبقِ الجلسة نشطة.
- افتح نافذة تصفح متخفي في المتصفح (ب).
- سجل الدخول باستخدام نفس بيانات الاعتماد.
- تحقق مما إذا كانت الجلسة الأولى لا تزال تعمل.
- تحقق مما إذا كان بإمكانك تنفيذ إجراءات حساسة في كليهما.
غالبًا ما تفرض التطبيقات عالية الأمان هذه القواعد:
- جلسة نشطة واحدة لكل حساب.
- تسجيل الخروج من الجلسات القديمة عند حدوث تسجيل دخول جديد.
- أدوات تحكم لإدارة الأجهزة.
- تنبيهات عند تسجيل دخول جديد.
إذا سرق مهاجم بيانات الاعتماد، فيمكنه البقاء مسجلاً للدخول للأبد إذا كنت تسمح بجلسات غير محدودة. سيظلان نشطين في نفس الوقت، ولن يلاحظ أي منهما وجود المتسلل.
السياق هو كل شيء. التطبيقات التي تحتاج إلى جلسات متعددة:
- تطبيقات المراسلة.
- وسائل التواصل الاجتماعي.
- خدمات البريد الإلكتروني.
التطبيقات التي تحتاج إلى تحكم صارم:
- الأنظمة المصرفية.
- لوحات التحكم الإدارية.
- المنصات الصحية.
كيفية الإصلاح:
- تخزين معرفات الجلسات النشطة (session IDs) في قاعدة بيانات.
- عند حدوث تسجيل دخول جديد، قم بإنهاء الجلسة القديمة.
- السماح للمستخدمين برؤية الأجهزة والمواقع النشطة.
- إضافة زر "تسجيل الخروج من جميع الأجهزة".
- إرسال تنبيهات عبر البريد الإلكتروني أو الرسائل النصية القصيرة (SMS) عند تسجيل دخول جديد.
لا تبحث فقط عن أخطاء برمجية مثل حقن SQL. ابحث عن الفجوات بين ما يفعله تطبيقك وما تتطلبه أعمالك.
راجع سياسة الجلسات الخاصة بك اليوم. قد لا يكون أكبر خطر يواجهك هو الكود المعيب، بل قد يكون المنطق المعيب.