توسعه امن نرم‌افزار

Secure Software Development

شماره درس: ۴۰۷۴۶ تعداد واحد: ۳
مقطع: کارشناسی ارشد نوع درس: نظری
پیش‌نیاز: – هم‌نیاز: –

اهداف درس

با توجه به اینکه بسیاری از مشکلات امنیتی نرم‌افزارهای تولید به عدم توجه به مساله امنیت در فرآیند تولید نرم‌افزار برمی‌گردد، در مباحث این درس به طور ویژه، به مسائل امنیتی و توصیه‌های امنیتی، که در مراحل تولید یک ‌نرم‌افزار (در تحلیل نیاز، تدوین معماری، طراحی، پیاده‌سازی و آزمون آن) در جهت حصول یک نسخه امن نرم‌افزاری مطرح است، پرداخته می‌شود و دانشجویان با انواع آسیب‌پذیری‌ها و مشکلات امنیتی حاصل از برنامه‌نویسی نادرست آشنا گردیده، نکات، روش‌ها، و تکنیک‌های مختلف در تولید یک برنامه امن به آن‌ها معرفی می‌گردد.

ریز مواد

  1. اهمیت امنیت نرم‌افزار
    • تهدیدات نرم‌افزاری
    • منابع ناامنی نرم‌افزار
    • مدیریت توسعه امن نرم‌افزار
  2. تحلیل نیازمندی‌های امنیتی نرم‌افزار
    • موارد سوء‌کاربرد و سوء‌استفاده (Misuse and Abuse Cases)
    • مدل‌های فرآیندی امنیت-محور
    • استخراج نیازمندی‌های امنیتی
    • اولویت‌دهی به نیازمندی‌های امنیتی
  3. معماری و طراحی امن نرم‌افزار
    • تحلیل ریسک معمارانه
    • اصول و راهنماهای امنیتی و الگوهای حمله در تدوین معماری و طراحی نرم‌افزار
  4. ملاحظات امنیتی در پیاده‌سازی و آزمون نرم‌افزار
    • تحلیل امنیتی کد
    • آزمون امنیتی نرم‌افزار
  5. مدیریت تولید نرم‌افزار امن
    • امنیت، پیچیدگی و کارایی
    • امنیت و مدیریت پروژه
  6. مقدمه‌ای بر برنامه‌سازی امن
    • اهمیت کد نویسی امن
    • چرایی خطاهای امنیتی در کد نویسی
    • انواع آسیب‌پذیری‌ها
  7. اصول برنامه‌سازی امن
    • کنترل ورودی
    • حداقل دسترسی
    • دفاع چند لایه
    • طراحی باز (عدم برقراری امنیت از طریق پنهان‌کاری)
  8. آسیب‌پذیری‌های متداول
    • انواع تزریق (Injections)
    • اسکریپ‌نویسی بین سایتی (XSS) و جعل در خواست بین سایتی (CSRF)
    • احراز هویت و مدیریت نشست معیوب
    • مجازشماری و کنترل دسترسی معیوب
    • پیکربندی ناامن
    • استفاده نادرست از رمزنگاری (تولید اعداد تصادفی ضعیف، مدیریت کلید ضعیف، استفاده نادرست از سیستم‌های مبتنی بر گذرواژه)
    • انواع سرریز بافر
    • نشت اطلاعات (عدم حفاظت از اطلاعات حساس،مدیریت نامناسب پیام‌های خطا)
    • استفاده ناکافی از مکانیزم‌های غیرخودکارسازی (نظیر CAPTCHA)
  9. چارچوب‌های تحلیل امنیتی نرم‌افزار
    • آزمونهای نفوذ جعبه سفید، جعبه سیاه، و جعبه خاکستری
    • تکنیک Fuzzing
    • معرفی چارچوب‌های آزمون (مانند OWASP)

ارزیابی

  • تمرین‌های نظری و کاربردی: ۵ نمره
  • آزمون‌ میان‌ترم: ۷ نمره
  • آزمون پایان‌ترم: ۸ نمره

مراجع

  • Julia H. Allen, Software Security Engineering: A Guide for Project Managers, 1st Edition, Addison-Wesley Professional, 2008.
  • Gary McGraw, Software Security: Building Security In, Addison-Wesley Professional, 2006.
  • J. Viega, M. Messier. Secure Programming Cookbook, O'Reilly, 2003.
  • M. Howard, D. LeBlanc. Writing Secure Code, Microsoft, second edition, 2002.
  • J. Viega, G. McGraw. Building Secure Software, Addison Wesley, 2002.