ما نمذجة التهديدات
تصف النظام، وتنظر إليه كما ينظر المهاجم، وتسأل أين أضعف نقطة فيه، ثم تكتب ما ستفعله حيال كل نقطة ضعف. ولأنها تعمل على التصميم لا على شيفرة مكتملة، فالتغيير فيها رخيص: نقل قرار الثقة من مكان إلى آخر، أو الاستغناء عن تخزين بيان ما، يكلف أقل بكثير قبل وجود الشيفرة منه بعدها.
في أسفاليا يبدأ كل مشروع بمراجعة للتهديدات، ويتضمن سبرنت الاستكشاف لدينا نموذج تهديدات للمسارات الأساسية (راجع كيف نعمل وممارساتنا الأمنية). ويتعلم كل أفراد الفريق هذه الطريقة، لأنها عادة وليست مهمة لمتخصص وحده. وللتعريف الأقصر اقرأ مدخل المسرد أو مقال نمذجة التهديدات للفرق الصغيرة.
الأسئلة الأربعة
أربعة أسئلة شاعها آدم شوستاك (Adam Shostack) تعطي العمل شكله:
- ماذا نبني؟ ارسمه: المكوّنات والبيانات والمستخدمون، وأين تنتقل البيانات.
- ماذا قد يسوء؟ مرّ على الرسم بقائمة فحص مثل STRIDE، أو اسأل ببساطة: كيف سأهاجم هذا؟
- ماذا سنفعل حيال ذلك؟ لكل تهديد اختر: تخفيفه أو إزالته أو نقل خطره أو قبوله.
- هل أحسنّا العمل بما يكفي؟ تأكد أن المسارات المهمة غُطّيت، وأن لكل تهديد مسؤولًا، وأن الإصلاحات تعمل.
احتفظ ببضع دقائق للسؤال الرابع، فهي تمنع جلسة من أن تنتهي برسم بلا قرارات.
ارسم النظام: مخططات تدفق البيانات وحدود الثقة
يستخدم مخطط تدفق البيانات (DFD) أربعة أشكال. الكيانات الخارجية هي المستخدمون والأنظمة الأخرى خارج سيطرتك. والعمليات هي أجزاء شيفرتك التي تؤدي عملًا. ومخازن البيانات هي قواعد البيانات وتخزين الملفات والطوابير. وتدفقات البيانات هي الأسهم بينها، وعلى كل سهم ما ينتقل عبره. ارسم ميزة واحدة أو مسارًا واحدًا في كل مرة: فالمخطط الذي لا يُقرأ بنظرة واحدة أكبر من اللازم.
ثم ارسم حدود الثقة، وهي خطوط يتغير عندها مستوى الثقة أو السيطرة. ومن أشهرها:
- الإنترنت وخوادمك، بما فيه المتصفح أو تطبيق الجوال على جهاز المستخدم.
- المستخدم العادي والمدير.
- بيانات عميل وبيانات عميل آخر، في منتج يخدم عدة عملاء.
- نظامك وخدمة طرف ثالث، مثل مزوّد مدفوعات أو خدمة بريد.
- تطبيقك وقاعدة بياناته أو تخزين ملفاته.
تقع معظم التهديدات حيث يعبر تدفق حدًّا، لأن هناك يجب أن تُوثَّق هوية المرسل أو يُتحقق من البيانات أو تُفوَّض الصلاحية. وعلّم كذلك البيانات الحساسة، مثل البيانات الشخصية وبيانات الدخول وتفاصيل الدفع، ودوّن أين تُخزَّن وإلى أين تُرسَل.
قاعدة عملية: إن لم تستطع أن تقول من أو ما الذي يقع على جانبي خط ما، وما الذي يُفحص عند عبور البيانات له، فقد وجدت أول تهديد.
ماذا قد يسوء: نموذج STRIDE
STRIDE اختصار لست فئات من التهديدات، وكل فئة تكسر خاصية أمنية.
| التهديد | الخاصية التي يكسرها | مثال |
|---|---|---|
| الانتحال (Spoofing) | المصادقة | شخص يدخل ببيانات مسروقة، أو webhook مزوّر يدّعي أنه من مزوّد المدفوعات. |
| العبث (Tampering) | السلامة | مستخدم يغيّر حقل السعر في طلب، أو سجل يُعدَّل في قاعدة البيانات. |
| الإنكار (Repudiation) | المساءلة | مدير يحذف سجلات ولا يوجد سجل يبيّن من فعل ذلك. |
| كشف المعلومات (Information disclosure) | السرّية | واجهة API تعيد حقولًا أكثر مما تعرضه الشاشة، أو نسخة احتياطية في حاوية تخزين عامة. |
| تعطيل الخدمة (Denial of service) | التوافر | نقطة بلا حد للطلبات تتيح لعميل واحد استنزاف الخدمة. |
| رفع الصلاحيات (Elevation of privilege) | التفويض | مستخدم عادي يستدعي نقطة خاصة بالمدير، أو ثغرة تتيح لمستخدم أن يتصرف باسم عميل آخر. |
طبّق STRIDE على كل عنصر لا على النظام كله. فالكيانات الخارجية تثير غالبًا أسئلة الانتحال والمساءلة، ومخازن البيانات تثير العبث والكشف وتعطيل الخدمة، أما العمليات فقد تواجه الفئات الست جميعًا. وهناك طرق أخرى، مثل أشجار الهجوم أو LINDDUN للخصوصية، لكن STRIDE تكفي الفريق الصغير للبدء.
ورشة مناسبة لفريق صغير
تستغرق الجلسة الأولى لميزة أو مسار واحد من 60 إلى 90 دقيقة مع بضعة أشخاص: مطوّر يعرف الشيفرة، وصاحب قرارات المنتج، ومن يعرف كيف يُنشر النظام، وصاحب خبرة أمنية إن وُجد. ويفيد وجود مصمم أيضًا، لأن كثيرًا من التهديدات يقع في رحلات المستخدم، مثل استعادة الحساب والدعوات.
- حدّد الإطار (5 دقائق). سمِّ الميزة وما تحميه: بيانات العملاء، وحركة الأموال، وصلاحيات الإدارة، والسمعة.
- ارسم (من 15 إلى 20 دقيقة). ارسم مخطط تدفق البيانات على سبورة أو في أي أداة رسم، وعلّم حدود الثقة والبيانات الحساسة.
- اكتشف التهديدات (30 دقيقة). مرّ على كل تدفق وكل حد بنموذج STRIDE. واكتب كل تهديد في جملة: مهاجم يملك هذا الوصول يستطيع فعل هذا، فيحدث هذا الضرر. لا تبدأ بالحلول بعد، بل دوّن أفكارها.
- قرّر (15 دقيقة). قدّر كل تهديد من حيث الاحتمال والأثر (عالٍ أو متوسط أو منخفض)، ثم اختر تخفيفه أو إزالته أو نقله أو قبوله. والقبول مقبول حين يتولى أحدهم القرار كتابةً.
- اختم (10 دقائق). وزّع المهام، واسأل السؤال الرابع، ودوّن ما لم تغطّه.
حوّل النتائج إلى مهام
لا تغيّر نمذجة التهديدات المنتج إلا حين يصل ناتجها إلى قائمة العمل. لكل تهديد قررت تخفيفه، أنشئ مهمة فيها جملة التهديد والإصلاح المختار ومسؤول وأولوية وطريقة للتأكد من الإنجاز، والأفضل اختبار آلي. مثال: لا يستطيع مستخدم جلب فواتير منظمة أخرى بتغيير المعرّف في العنوان، ويثبت ذلك اختبار.
ضع وسمًا لهذه المهام حتى يسهل الوصول إليها، واربطها بالمخطط، وجدولها كأي عمل آخر. وسجّل المخاطر المقبولة مع مسؤول وموعد مراجعة، حتى يكون قبول الخطر قرارًا لا سهوًا. ويبيّن دليل تطوير التطبيقات الآمنة موضع هذه المهام في عملية التسليم.
متى تكرر النمذجة
- ميزة جديدة تمس تسجيل الدخول أو المدفوعات أو البيانات الشخصية أو رفع الملفات.
- تكامل جديد أو خدمة طرف ثالث أو مخزن بيانات جديد.
- تغيير في البنية أو الاستضافة أو في من يصل إلى ماذا.
- بعد حادثة أمنية، أو بعد نتيجة اختبار تبيّن أن افتراضًا كان خاطئًا.
- في مراجعة دورية للمسارات الأساسية، مثلًا مرة في السنة.
حدّث المخطط القائم بدل أن تبدأ من جديد. فالتحقق القصير عند كل تغيير كبير يُبقي النموذج صادقًا، والنموذج الذي لم يعد يطابق النظام يمنح طمأنينة زائفة.
كيف تختلف عن اختبار الاختراق
| الجانب | نمذجة التهديدات | اختبار الاختراق |
|---|---|---|
| التوقيت | في مرحلة التصميم، قبل البناء أو أثناءه | حين يوجد نظام يعمل |
| ما يُفحص | مخطط والافتراضات التي يقوم عليها | التطبيق المنفَّذ |
| من يقوم به | الفريق الذي يبني، بمشاركة أمنية | مختبِر مستقل عادةً |
| ما يجده | عيوب التصميم والضوابط الناقصة، مثل غياب الفصل بين العملاء | أخطاء التنفيذ وسوء الإعداد |
| المخرج | قائمة تهديدات ومهام | تقرير بنتائج جرى استغلالها |
لا يلزمك الاختيار بينهما. فنموذج التهديدات يدل المختبِر على مواضع الحفر، واختبار الاختراق يبيّن هل صمدت افتراضاتك. ثم تتحقق مراجعة الشيفرة الآمنة من أن وسائل التخفيف بُنيت بصورة صحيحة.