EP19 - Ask Developer Hangout - Week 14 - Software Security
Chapters
- مدخل لأمن البرمجيات ودروس من الاختراقات
- نمذجة التهديدات وحدود الثقة في النظام
- المصادقة متعددة العوامل ومراقبة سلوك المستخدم
- طبقات الأمان وكتابة كود يتحقق من المدخلات
- تحديث المنصات ومخاطر الثغرات المعلنة
- مبدأ أقل الصلاحيات وعزل مكونات النظام
- تراخيص البرامج وتوقيع الكود وحماية سلامته
- تصنيف البيانات والتشفير وإدارة المفاتيح
- حماية الاتصال بـ HTTPS وتخزين كلمات المرور
- أدوات فحص الكود والتحقق متعدد الطبقات والسجلات
- إخفاء الكود والهندسة العكسية وحدود منع الكراك
- هجمات حجب الخدمة وتسريب المعلومات عبر الأخطاء
- اختبارات الاختراق وتحمل الأعطال ونموذج STRIDE
- إدارة الحقوق الرقمية DRM وخصوصية المحتوى
- ختام: ثقافة الأمان وفهم القيمة التجارية للبرمجيات
About this episode
كيف يفكر المطور في أمن البرمجيات قبل أن تتحول ثغرة صغيرة إلى مشكلة للمستخدمين والعمل؟ في اللقاء الأسبوعي الرابع عشر من «اسأل مطور»، يناقش محمد الشريف وطارق داوود وياسر مكرم الأمن بوصفه جزءاً من التصميم ومسؤولية مشتركة، لا إضافة أخيرة للكود. يبدأ النقاش بنمذجة التهديدات وتدفق البيانات وحدود الثقة، ثم ينتقل إلى التحقق من المدخلات، وحقن السكربتات، وأقل الصلاحيات، والتحديثات، والمصادقة والتشفير. ويشارك أحمد عطوى بخبرته في تصعيب كسر البرامج، موضحاً الفرق بين إعاقة فهم الكود وإعاقة تعديله. يتناول اللقاء أيضاً السجلات ورسائل الأخطاء واختبارات الاختراق، مع أمثلة على تعارض الحماية مع سهولة الاستخدام. هذه مناقشة استكشافية وليست دورة شاملة؛ وخيطها الأساسي أن الحماية ترتبط بقيمة ما نحميه والمخاطر المحيطة به، وأن الإخفاء البرمجي وطبقات الدفاع لا يضمنان منع الاختراق تماماً.
Discussion highlights
- يعرض المتحدثون نمذجة التهديدات عبر رسم تدفق البيانات وحدود الثقة، ثم مناقشة المخاطر مع التطوير والاختبار والأمن. ويستخدمون STRIDE لتنظيم الأسئلة، مع التأكيد على مكاشفة التصميم داخل الفريق بدلاً من الاعتماد على سريته.
- يميز النقاش بين تحقق جهة العميل لتسهيل الاستخدام والتحقق عند استقبال البيانات في الخادم والخدمات. وتوضح أمثلة التعليقات وحقن السكربتات وتجاوز سعات الذاكرة لماذا لا يكفي افتراض أن الواجهة منعت المدخلات الضارة.
- يناقش الفريق أقل الصلاحيات وعزل المكونات والتحديثات كطبقات تحد من الضرر، لا كضمان مطلق. ويربط مقدار الحماية بحساسية البيانات، وينبه إلى أن إجراءات مثل قفل الحساب بعد محاولات فاشلة قد تُستغل لتعطيل المستخدمين.
- يطرح المتحدثون السجلات وسيلة لاكتشاف السلوك غير المعتاد ومراجعة العمليات المتنازع عليها، لكنهم يحذرون من تحولها إلى مصدر لتسريب المعلومات. ويقارنون ذلك برسائل أخطاء تكشف تفاصيل حساسة، ويقترحون مراجعة الكود واختبارات تحاول كسره من منظور مختلف.
- يفرق أحمد عطوى بين تصعيب الهندسة العكسية وتصعيب كتابة تعديل يتجاوز الحماية. ويؤكد النقاش أن الإخفاء يرفع كلفة الهجوم ولا يمنعه بالضرورة؛ كما يطرح إبقاء المنطق الحساس على الخادم عندما يكون ذلك ممكناً، لا بوصفه حلاً يناسب كل تطبيق.
Links & resources
- مشاهدة اللقاء على يوتيوب:www.youtube.com
- صفحة الحلقة وتفاصيلها:www.askdeveloper.com
- معيار CERT للبرمجة الآمنة بلغة Java:www.securecoding.cert.org
- إرشادات Mozilla للبرمجة الآمنة:wiki.mozilla.org
- مقال Phrack عن تجاوز سعة الذاكرة:phrack.org
- شرح حقن السكربتات عبر المواقع XSS:en.wikipedia.org
- أداة Fiddler لفحص حركة الويب:fiddler2.com



