من هنوز تعریف درستی از امنیت نرم‌افزار و اهمیت آن و ویژگی‌های نرم‌افزار امن در میان سایت‌های پارسی ندیدم و می‌خوام تلاش کنم تا قدری در این‌باره تحقیق کنم. امیدوارم بتونم مطالب مفیدی را به اشتراک بذارم و مثل همیشه از هر کمک و نظری هم با استقبال خفن مواجه می‌شه 😉

خب بریم سراغ اصل مطلب که چرا امینت نرم‌افزار اهمیت دارد؟

نرم‌افزار همه‌جا دیده می‌شود. خودروی شما را به حرکت در می‌آورد. تلفن همراه شما را کنترل می‌کند. نحوه دسترسی‌تان به خدمات الکترونیک بانکی را مشخص می‌سازد. چگونگی دریافت برق، آب، گاز و حتی نحوه پرواز از کرانه‌ای به کرانه دیگر را تدوین می‌کند. چه بدانید و چه ندانید، همگی وابسته به سامانه‌های اطلاعاتی نرم‌افزار پیچیده و یکپارچه‌ای هستیم که از شبکه جهانی اینترنت به عنوان بستری برای ارتباط و انتقال اطلاعات استفاده می‌کند.

طراحی، توسعه، اجرا و استفاده از نرم‌افزاری که بدون رویکردهای امنیتی تولید شده باشد، بسیار مخاطره‌آمیز است – مانند بندبازی بدون تور محافظ زیرین. میزان خطر را می‌توان با فاصله‌ای که احتمال افتادن از روی بند و تاثیرات بالقوه سنجید.

Software_security

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

هم‌زمان، عصر جنگ اطلاعات، تروریسم سایبری و جرایم رایانه‌ای نیز در راه خواهد بود. تروریست‌ها، جزایم سازمان‌یافته و سایر مجرمان و بد‌اندیشان، تمامی حوزه‌های سامانه‌های نرم‌افزاری را مورد هجوم قرار داده‌اند و با کج‌روی زکاوت و نبوغ بشری، به موفقیت‌هایی در نفوذ به چنین سامانه‌هایی دست یافته‌اند. بیشتر این سامانه‌ها در برابر حملات برای تحمل آنها مقاوم و منعطف نیستند.

در گزارشی به ریاست جهموری ایالات متحده با عنوان امنیت سایبری: بحران اولویت‌بندی، کمیته مشاوره فناور اطلاعات ریاست جمهوری، مشکل نرم‌افزارهای ناامن را چنین جمع‌بندی کردند:

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

نقایص نرم‌افزار با شاخه‌های مختلف امنیتی – شامل باگ‌های کد مانند سرزیر بافر و خطاهای طراحی مانند عدم مدیریت منسجم خطاها- همواره و همه‌جا وجود دارد. افراد بداندیش، کدهای مخرب و بات‌نت‌ها با دسترسی غیرمجاز و اجرای حملات می‌توانند نرم‌افزار را با سواستفاده از نقایص، تحت کنترل قرار دهند. نرم‌افزارها با قابلیت دسترسی به اینترنت معمولا هدف سواستفاده هستند و افزایش پیچیدگی و توسعه‌پذیری، امنیت نرم‌افزار را بیش از پیش به چالش می‌کشاند.

سامانه‌های رایانه‌ای و شبکه‌ها به صورت فزاینده‌ای توسط کیفیت و امنیت نرم‌افزارشان محدود شده‌اند. نقایص و آسیب‌پذیری‌های امنیتی در نرم‌افزار متداول شده‌اند و هنگامی که با حملات مخرب مورد استفاده قرار گیرند می‌توانند به مخاطرات جدی منجر شوند. در سال‌های اخیر اینگونه مشکلات رشد چشم‌گیر داشته‌اند. شکل ۱-۲ تعداد آسیب‌پذیری‌های را که به سازمان گوهر ایالات متحده گزارش شده است را میان سال‌های ۱۹۹۵ میلادی تا سال ۲۰۰۶ را نشان می‌دهد. با چنین روندی « نیازی واضح و مبرم برای تغییر روشی که (مدیران پروژه و مهندسان نرم‌افزار) برای ارتقای امنیت رایانه‌ای و تدوین رهیافتی نظام‌مند برای امنیت نرم‌افزار، وجود دارد.»

 در نظرسنجی امنیتی جهانی سال ۲۰۰۷ میلادی که توسط دلیوت، ۸۷ درصد از شرکت‌کنندگان، کیفیت پایین توسعه نرم‌افزار را بزرگ‌ترین تهدید در ۱۲ ماه آینده برشمرده‌اند. «امنیت نرم‌افزار به معنی حصول اطمینان از وجود نظام برنامه‌نویسی امن تلفیق شده در مراحل توسعه برای مقابله با آسیب‌پذیری‌های بالقوه است و اینکه گام‌هایی مانند آزمون آسیب‌پذیری، اسکن نرم‌افزار و آزمون نفوذ به عنوان بخشی از ساختار چرخه حیات توسعه نرم‌افزار در نظر گرفته شده است.»

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

واین داستان ادامه دارد…