نمذجة التهديدات وتحليل المخاطر
كيف نكتشف المخاطر قبل أن يكتشفها المهاجم؟ نفكّر كمهاجم على الورق. ⏱ نحو 45 دقيقة.
- تشرح معنى التصميم غير الآمن والفرق بينه وبين خطأ الكود.
- ترسم تدفق البيانات وتحدّد حدود الثقة.
- تستخدم
STRIDEلتعداد أنواع التهديدات. - ترتّب التهديدات بالاحتمال والأثر وتختار الضوابط.
١بعض الثغرات في التصميم لا في الكود
فئة A04 في OWASP هي التصميم غير الآمن: خلل لا يُصلحه تنقيح سطر، لأنه في القرار نفسه. مثال: نظام يرسل رمز استعادة كلمة المرور في رسالة، لكنه يسمح بعدد غير محدود من المحاولات لإدخاله. الكود سليم، والتصميم معيب.
الدواء أن نفكّر في الأمن قبل كتابة الكود، بعملية منهجية اسمها نمذجة التهديدات Threat Modeling، تجيب عن أربعة أسئلة: ماذا نبني؟ وما الذي قد يسوء؟ وماذا نفعل حياله؟ وهل أحسنّا؟
٢ارسم التدفق وحدّد حدود الثقة
تبدأ بمخطط تدفق البيانات: من يرسل ماذا إلى أين. ثم ترسم حدود الثقة: الخطوط التي تعبرها البيانات من طرف غير موثوق إلى موثوق. كل سهم يعبر حدًّا هو موضع فحص وتهديد محتمل:
في هذا المخطط: المتدرب والمهاجم والدفع أطراف خارجية. أخطر المواضع حيث يعبر مدخل خارجي إلى الخادم أو قاعدة البيانات؛ هناك تُركّز الدفاعات.
٣STRIDE: تذكرة أنواع التهديدات
كي لا تنسى نوعًا، تمرّ على ستة أنواع من التهديدات تختصرها STRIDE، ولكل نوع ضدّه من المثلث الأمني وما بعده:
| الحرف | التهديد | مثال | الضابط المضاد |
|---|---|---|---|
| S | انتحال الهوية Spoofing | الدخول باسم غيرك | مصادقة قوية |
| T | العبث Tampering | تعديل بيانات في الطريق | توقيع، HTTPS |
| R | الإنكار Repudiation | إنكار فعل قمت به | سجلّات موثوقة |
| I | كشف المعلومات Information Disclosure | تسريب بيانات | تشفير، صلاحيات |
| D | حجب الخدمة DoS | إسقاط الخدمة | تحديد المعدل |
| E | رفع الصلاحية Elevation | مستخدم يصير مديرًا | تفويض دقيق |
لكل عنصر في مخططك، اسأل: أيّ من STRIDE ينطبق عليه؟ فتكتشف تهديدات ما كنت لتنتبه لها.
٤رتّب المخاطر: الاحتمال × الأثر
لا تُعالَج كل التهديدات بالدرجة نفسها. رتّبها بتقدير بسيط: الخطر = الاحتمال × الأثر، وابدأ بالأعلى:
| التهديد | الاحتمال | الأثر | الأولوية |
|---|---|---|---|
| حقن SQL في تسجيل الدخول | عالٍ | عالٍ (سيطرة كاملة) | 🔴 أولًا |
رؤية طلب عميل آخر (IDOR) | عالٍ | متوسط | 🟠 ثانيًا |
| حجب خدمة بطلبات كثيرة | متوسط | متوسط | 🟡 ثالثًا |
| تخمين كلمة مرور معقّدة | منخفض | عالٍ | 🟡 راقِب |
توقّع وتحقّق
نمذجة التهديدات تحدث:
«مستخدم عادي يصبح مديرًا» أي حرف من STRIDE؟
حدّ الثقة هو:
أولوية المعالجة تُحسب بـ:
الخلاصة
- بعض الثغرات في التصميم لا في الكود؛ تُكتشف بنمذجة التهديدات قبل البرمجة.
- ارسم تدفق البيانات وحدود الثقة؛ كل سهم يعبر حدًّا موضعُ تهديد.
STRIDEيذكّرك بستة أنواع: انتحال، وعبث، وإنكار، وكشف، وحجب، ورفع صلاحية.- رتّب التهديدات بالاحتمال × الأثر، وابدأ بالأعلى.
تحدٍّ تصميمي: نموذج تهديدات لتسجيل الدخول
متوسطابنِ نموذج تهديدات مصغّرًا لصفحة تسجيل الدخول في متجر «رفيق» (المتدرب يرسل اسمًا وكلمة مرور، فيتحقق الخادم من قاعدة البيانات ويعيد جلسة).
- حدّ ثقة واحد على الأقل في هذا التدفق.
- ثلاثة تهديدات من STRIDE مختلفة الأحرف، كل تهديد في سطر مع حرفه.
- لكل تهديد ضابطه المضاد (كل ضابط في سطر).
- أي التهديدات أعلى أولوية ولماذا.
- حدّ بين المتصفح والخادم
- ثلاثة تهديدات
- كل تهديد بحرف STRIDE
- ثلاثة ضوابط
- الأولوية تذكر الحقن أو الأثر العالي
💡 تلميح 1
💡 تلميح 2
💡 تلميح 3
نموذج واحد من إجابات كثيرة صحيحة.
- حدّ الثقة
- الحدّ بين المتصفح (غير موثوق) والخادم: بيانات الدخول تعبره، فتُفحص هناك.
- ثلاثة تهديدات (حرف STRIDE + وصف، سطر لكل)
- S انتحال الهوية: الدخول باسم مستخدم آخر بتخمين كلمته أو سرقتها.
T العبث: تعديل بيانات الطلب في الطريق على شبكة غير مشفّرة.
E رفع الصلاحية: حقن SQL يتجاوز التحقق فيدخل المهاجم مديرًا. - الضوابط المضادة (سطر لكل)
- مصادقة قوية وتحديد معدل المحاولات ضد التخمين.
استخدام HTTPS لتشفير البيانات في الطريق.
استعلام معلَّم يمنع حقن SQL. - الأعلى أولوية وسببه
- حقن SQL أعلى أولوية: احتماله عالٍ وأثره كامل (سيطرة على الحساب والقاعدة).