طراحی و مهندسی ضعیف نرم‌افزار و یا بهره‌برداری ناامن از آن، ریشه‌ اصلی بسیاری از آسیب‌پذیری‌های امنیتی در سیستم‌های رایانه‌ای است، به همین دلیل امنیت نرم‌افزار به عنوان یكی از مباحث كلیدی مهندسی نرم‌افزار شناخته شده است. جهت تضمین امنیت نرم‌افزار لازم است آسیب‌پذیری‌های مربوط به نرم‌افزار شناسایی شده و راهكارهای مناسب برای جلوگیری و یا مقابله با آنها تهیه گردد.
نرم‌افزارها به طور كلی دارای دو نوع آسیب‌پذیری هستند، نوع اول مربوط به ضعف‌های بنیادی موجود در نرم‌افزارها می‌شود كه اینگونه از ضعف‌های امنیتی را نمی توان از بین برد، لذا برای مقابله با آنها لازم است ابتدا آنها را شناسایی كرده و سپس با استفاده از استراتژی دفاع چند لایه، احتمال سوءاستفاده از آنها را كاهش داد. نوع دیگری از ضعف‌های امنیتی نیز وجود دارند كه در زمان طراحی و پیاده‌سازی نرم افزار ایجاد می‌گردند. معمولاً اینگونه از ضعف‌های امنیتی قابل پیشگیری هستند. این امر تا حد زیادی با رعایت الزامات امنیتی در زمان طراحی، پیاده‌سازی و تست نرم‌افزار محقق می‌گردد. لازم است برای آن دسته از آسیب‌پذیری‌هایی كه به هر دلیل در حین پیاده‌سازی نرم‌افزار مخفی می‌مانند و بعد از تولید نرم‌افزار شناسایی می‌شوند، بلافاصله اصلاحیه مربوطه ایجاد و نصب گردد و در غیر اینصورت راهكاری برای كاهش خطر تا زمانی كه اصلاحیه مربوطه تهیه گردد، ارائه شود. به همین دلیل نصب به موقع اصلاحیه‌ها یكی از الزامات امنیتی در بهره برداری از انواع نرم‌افزارها است.در ادامه طبقه‌بندی آسیب‌پذیری‌های نرم‌افزار شرح داده شده است.

ادامه متن در ادامه مطلب...