ارزیابی محصولات نرم افزاری

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

narm1
 

 

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

narm2

شرکت فناوران ارتباطات و اطلاعات اسرار راهکارهای ویژه­ای در قالب پروژه­ های تولید امن نرم افزار ارائه می­کند. در مراحل مختلف اجرای این پروژه استانداردهای مرتبط با امنیت اطلاعات مانند ISO 17799 و ISO 27001 وBS 7799-1 لحاظ می­شود.

ISO 17799 حاوی توصیه­ هایی برای مدیریت امنیت اطلاعات در مراحل مختلف طراحی، پیاده­ سازی و نگهداری است. از استانداردهای ISO 27001 و BS 7799-1  نیز جهت تامین نیازهای اساسی و پایه ای جهت پیاده ­سازی امنیت در توسعه محصولات IT به شکل سازمان­ یافته بهره برداری می­شود. این استانداردها حاوی مجموعه­ ای از best practiceها ، توصیه­ ها و دستورالعمل­ها جهت مدیریت دارایی­ های IT سازمانها می­باشند.

همچنین در هر یک از فازهای اجرایی پروژه، تیم امنیت نرم­ افزار شرکت اسرار بر اساس هدف آن فاز از استانداردها و متدهای ویژه­ ای بهره­ گیری می­کند که در شرح هر فاز به آنها اشاره شده است.

شرکت اسرار این پروژه­ ها را در طی چهار فاز با عناوین ذیل به انجام می­رساند:

  • فاز اول: امن سازی در طراحی
  • فاز دوم: پیاده­ سازی امن
  • فاز سوم: ارزیابی امنیتی
  • فاز چهارم: تست نفوذپذیری

 

فاز اول: امن سازی در فاز طراحی

هدف

طراحی مناسب از دیدگاه امنیتی، برنامه‌ی کاربردی را از خطرات مختلف محفوظ می‌دارد و زیر بنای ممکن برای توسعه و نگهداری نرم‌افزار را فراهم می‌آورد. طراحی بد نیز کار نفوذگران و خرابکاران را ساده‌تر می‌کند.

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

به هر حال و با توجه به دانش امروز شکی نیست که حل مسایل امنیتی سیستم از دیدگاه توسعه‌دهندگان سیستم در فاز طراحی ایده‌آل می‌باشد. تحقیقات و تجربیات اثبات شده نیز این مطلب را تأیید می‌کند:

  • اگر هزینه‌ی زمان طراحی را در یک واحد در نظر بگیریم، هزینه زمانی رفع همان خطاها و نقایص در پیاده‌سازی ۵/۶ برابر خواهد بود.
  • اگر آسیب‌پذیری امنیتی در زمان تست سیستم کشف و رفع شود هزینه ۱۵ برابر خواهد بود.
  • اگر مشکل امنیتی به عنوان یک وصله‌ی الحاقی به نرم‌افزار پس از انتشار آن حل شود،‌ هزینه معادل ۶۰ برابر هزینه‌ی زمان طراحی خواهد داشت.

این ارقام نشان می‌دهد که در زمان طراحی باید بسیار دقیق عمل کنیم.

استانداردها

تیم طراحی امن نرم­ افزار شرکت اسرار در این فاز بر اساس استانداردهای بین المللی در زمینه طراحی امن نرم­ افزار حرکت می­کند. برخی از این استانداردها عبارتند از:

  • OWASP (Open Web Application Security Project) Testing Framework
  • SANS Certified Secure Software Lifecycle Professional (CSSLP)

فعالیت­ها

در فاز طراحی امن نرم افزار شرکت اسرار خدمات زیر را ارائه خواهد داد:

  • ارائه مجموعه ای از اصول طراحی امن
  • ارائه پیشنهاداتی برای طراحی امن وب سرویسها
  • ارائه مجموعه ای از مکانیزمهای امنیتی جهت طراحی امن نرم­ افزار شامل:
  • هویت سنجی (authentication)
  • اعتباربخشی (authorization)
  • کنترل دسترسی (Access Control)
  • مدیریت نشست (Session Management)
  • اعتبارسنجی ورودیها (Input Validation)
  • رویدادنگاری(Logging)

فازدوم: پیاده سازی امن
هدف

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

استانداردها

این فاز بر اساس استانداردهای موجود جهت پیاده ­سازی امن یک نرم­ افزار تدوین و ارائه می­گردند. در این بخش از مراجع زیر استفاده می­شود:

  • CERT  Secure Coding Standards
  • MITRE CWE
  • ISC2 – Ten Best Practices for Secure Software Development

فعالیتها

برخی از فعالیتهای شرکت در این فاز به قرار زیر است:

  • ارائه دستورالعملهای برنامه نویسی امن با توجه به Platform انتخاب شده.
  • ارائه دستورالعملهایی برای پیاده سازی مکانیزم های امنیتی در نرم­ افزار
  • ارائه راهکارهایی برای پیاده سازی امن وب سرور انتخاب شده (در صورت لزوم)
  • ارائه راهکارهایی برای پیاده سازی امن فایل سرور (در صورت لزوم)
  • ارائه راهکارهایی برای پیاده سازی امن پایگاه داده انتخاب شده (در صورت لزوم)
  • ارائه راهکارهایی جهت نصب امن نرم ­افزار در محیطی امن
  • ارائه راهکارهایی جهت نگهداری امن نرم­ افزار

فاز سوم: ارزیابی امنیتی

هدف

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

استانداردها

در این فاز تیم ارزیابی امنیتی از چک­ لیست­هایی که در شرکت اسرار با استفاده از استانداردهای متعدد بین­ المللی تجمیع شده­ اند استفاده می­کند. استانداردهایی که  شرکت اسرار از آنها استفاده می­کند عبارتند از:

  • NIST Software Security check lists
  • DISA Software Security check lists
  • OWASP (Open Web Application Security Project) Testing Framework

فعالیت­ها

تیم ارزیابی امنیتی در این فاز با استفاده از چک­ لیستهای ویژه­ ی خود، موارد زیر را ارزیابی امنیتی می­نماید:

  • ارزیابی امنیتی برنامه کاربردی بر اساس چک لیست
  • ارزیابی امنیتی پایگاه داده بر اساس چک لیست
  • ارزیابی امنیتی وب سرور بر اساس چک لیست
  • ارزیابی امنیتی سیستم عامل بر اساس چک لیست

 

فازچهارم: تست نفوذپذیری

هدف

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

استانداردها

برخی از استانداردها و روشهای تست نفوذپذیری مورد استفاده در این فاز به شرح زیر هستند:

  • Certificated Ethical Hacking (CEH) methods
  • OWASP (Open Web Application Security Project) Testing Framework

 

فعالیت­ها

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

و در نهایت شرکت اسرار پیشنهاد می­کند فازهای ارزیابی امنیتی و تست نفودپذیری به شکل دوره­ ای در فواصل زمانی معین و یا بعد از ایجاد هر گونه تغییر در سیستم مجدداً تکرار شود. این عمل باعث می­شود شرایط امنیتی سیستم و روالها ومکانیزم های امنیتی پیاده­ سازی شده به شکل مستمر مورد ارزیابی و تست قرار گیرد تا حد مطلوبی از امنیت در مدت زمانی طولانی پوشش داده شود.