امنیت نرم افزار
-(16 Body)  Print

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

چرا تامین امنیت نرمافزار از طریق آزمون نفود و وصله امکانپذیر نیست؟

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

چرا تامین امنیت نرم افزار از طریق آزمون نفود و وصله امکان پذیر نیست؟

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

طرح امنیت نرم افزار بایستی چگونه تدوین و اجرا شود؟

مناسب ترین طرح امنیت نرم افزار، بایستی کاملا مناسب با نیازمندی ها و همگرا با فرآیندهای کسب و کاری و فنی موجود در سازمان تعریف و تبیین شود. هدف از ایجاد یک برنامه مستمر و جامع امنیت نرم افزار، بهبود در تمامی نرم افزارهای استقرار یافته، اعم از اکتسابی، برون سپاری شده، نرم افزار به عنوان سرویس (Software as a Service) و تولید شده در درون سازمان است.

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

  1. یک گروه اختصاصی برای امنیت نرم افزار حداقل شامل یک نفر به صورت تمام وقت
    با حذف محدودیت منابع انسانی در زمینه وارسی مستمر شاخص های کیفی و اهداف امنیتی در چرخه عمر نرم افزار، سازمان پشتیبانی فنی مورد نیاز برای پیگیری الزامات این حوزه را در اختیار خواهد داشت. طراحی ساختار این تیم، تعریف نقش ها و مسئولیت ها، تعریف ارتباطات با سایر تیم های درگیر در تولید یا اکتساب نرم افزار بایستی در قالب یک برنامه منسجم در سازمان اجرا شود.
  2. یک خط مشی برای امنیت نرم افزار
    بیانیه خط مشی امنیت نرم افزار، کنترل های کسب وکاری لازم برای مدیریت ریسک در پرتفلیوی پروژه های نرم افزاری سازمان را تعریف می نماید. این خط مشی حوزه ایی همچون رتبه بندی ریسک برنامه های کاربردی، رتبه بندی پیامد پروژه ها توسعه نرم افزار و طبقه بندی داده ها را پوشش می دهد. بیانیه خط مشی در این دامنه، به شفاف سازی اهداف اجباری پرداخته و مسئولیت هریک از ذینفعان را تشریح می نماید.
  3. ابزارهای امنیتی مناسب به صورت یکپارچه با فرآیند مهندسی نرم افزار
    ابزارها با یاری رساندن به توسعه دهندگان در زمینه شناسایی و رفع زودهنگام آسیب پذیری های امنیتی در کد نرم افزار، پیش از تثبیت و انتشارآن، اثربخشی آن را افزایش می دهد. طبعا کشف به موقع و یا پیشگیری از وقوع آسیب پذیری های امنیتی، هزینه های تولید را به دلیل عدم دوباره کاری و پرهیز از چرخه رفع و آزمون مکرر به طرز چشم گیری کاهش می دهد. بسیاری از ابزارهای موثر در قالب یک پلاگین در درون محیط توسعه نرم افزار بکارگرفته می شوند و در تحقق اهدافی همچون کدنویسی امن موثر هستند.
  4. آموزش لازم برای توسعه دهندگان داخلی و خارجی
    اجرای برنامه های ارتقای آگاهی امنیتی و بهروش های موجود در سازمان از طریق یک برنامه آموزشی مدون یک ضرورت برای تحقق اهداف امنیت نرم افزار محسوب می شود. این برنامه به انتقال دانش در سازمان یاری رسانده و توانایی برنامه نویسی امن برای توسعه دهندگان را به ارمغان می آورد.
  5. حاکمیت بر فرآیند، گزارش دهی به مدیریت در خصوص ارزش کسب شده و اعتبارسنجی در قبال اهداف
    ایجاد یک تصویر دایمی، شفاف و پویا برای مدیر ارشد از دستاوردهای پیاده سازی برنامه تضمین امنیت نرم افزار در سازمان، که نشان دهد حاکمیت این برنامه چه اثری بر شاخص های ریسک های کسب و کار به همراه دارد و خط سیری مشخص از پیشرفت به سوی اهداف را ترسیم کند در جلب حمایت و استمرار برنامه ضرورت دارد.

فعالیت ها در فرآیند تضمین امنیت نرم افزار

در یک نگرش عمومی چرخه عمر توسعه نرم¬افزار را می¬توان به سه مرحله اساسی مجزا تقسیم کرد: طراحی، توسعه و وارسی، و بهره¬برداری. در مرحله طراحی، نیازمندی¬ها شناسایی شده، و براساس ملاحظات تحلیل و طراحی، معماری آن تعریف می شود. در فاز توسعه و وارسی، نرم افزار کد¬نویسی شده و تحت آزمون قرار می گیرد. انطباق فرآیند کنترل کیفیت با ملاحظات امنیتی در همین مرحله بایستی بررسی شده و در نهایت در فاز بهره ¬برداری نرم افزار، پیاده سازی و نگهداری می شود. مطابق شکل ذیل، امن سازی نرم افزار نیازمند وجود فرآیندها و ابزارهای امنیتی مختلف در هر یک از فازهای چرخه عمر است. طی فاز طراحی، فرآیندهای طراحی امن و بازبینی ضروری است. در فاز توسعه و وارسی، با وجود کدهای نرم افزار امکان بازبینی و آزمون مهیا شده و این کدها برای بررسی دستی/خودکار و ارزیابی در حین اجرای کد (On-execution) بسیار مناسب می باشد. در فاز بهره برداری امکان ارزیابی نرم افزارها، هم در حال اجرا و هم در محیط عملیاتی و وجود دارد. اصطلاحاً به بازبینی خودکار کدهای نرم افزار، «آزمون ایستا» و به ارزیابی های نرم افزار در وضعیت اجرا در محیطهای همچون تولید و بهره برداری، «آزمون پویا» گفته می شود. در «آزمون های ایستا» با استفاده از یکسری از ابزارها و فنون مشخص، کد منبع نرم افزار (همچنین مؤلفه های حاصل از کامپایل کد منبع و مولفه های Third Party متن باز و یا خریداری شده) در شرایط غیراجرائی تحلیل می شوند، در حالی که «آزمون های پویا» متکی بر ارزیابی رفتارهای واقعی یک نرم افزار در حال اجرا است و نرم افزار را در یک حالت عملیاتی تحت ارزیابی قرار می دهند.

Responsive image
ارزیابی امنیتی در چرخه عمر تولید نرم‌افزار

مجموعه ای از اقدامات سیستماتیک و فنی شامل ایجاد چارچوب های اساسی و راهبردی پرداختن به امنیت نرم افزار و همچنین پیاده سازی برخی ابزارهای وارسی امنیتی کدهای (Code Review) نرم افزاری پیاده سازی خواهد شد، که عبارتند از:

  1. تدوین سند راهبرد امنیت نرم افزاری برای توسعه، اکتساب و نگهداشت نرم افزار
  2. ارزیابی کمی و کیفی وضعیت سازوکارها و اقدامات جاری مرتبط با امنیت نرم افزار در پروژه های توسع? و نگهداری نرم افزار
  3. تهیه و ارایه اسناد طراحی و کدنویسی امن

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

  1. اجرای برنامه تحلیل شکاف و ارزیابی کمی و کیفی از وضعیت بلوغ موجود سازمان در زمینه توسعه، اکتساب و نگهداشت نرم افزار
  2. بهبود متدولوژی توسعه نرم افزار و پیاده سازی چارچوب کاری جامع در جهت تعبیه امنیت در چرخه عمر نرم افزار
  3. مهندسی نیازمندی های نرم افزاری و استخراج و تدوین الزامات امنیتی
  4. تحلیل معماری و طراحی نرم افزار و مدلسازی تهدیدات
  5. تدوین سند برنامه های کلان از اقدامات بهبود بخش با اولویت بالا در راستای ارتقای سطح امنیت نرم افزار در چرخه های مختلف
  6. وارسی کد نرم افزاری به صورت دستی و خودکار با استفاده از ابزارهای قدرتمند تحلیل ایستای کد
  7. طراحی محیط های آزمون، تدوین متدولوژی و تولید موارد آزمون های امنیتی و وظیفه مندی نرم افزار به صورت ایستا و پویا
  8. آموزش و ارتقا سطح آگاهی امنیتی مهندسین نرم افزار، برنامه نویسان، مدیران ارشد امنیت و تیم های امنیتی

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

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

  1. شناخت وضعیت موجود و اجرای تحلیل شکاف (Gap Analysis) جهت شناسایی مشکلات موجود
  2. بهبود متدولوژی توسعه نرم افزار و پیاده سازی چارچوب کاری جامع در جهت تعبیه امنیت در چرخه عمر نرم افزار
  3. ممیزی چرخه عمر نرم افزاری و انطباق سنجی با الزامات نظارتی و استانداردها
  4. مهندسی نیازمندی های نرم افزاری و استخراج و تدوین الزامات امنیتی
  5. تحلیل معماری و طراحی نرم افزار و مدلسازی تهدیدات
  6. وارسی کد نرم افزاری به صورت دستی و خودکار با استفاده از ابزارهای قدرتمند تحلیل ایستای کد
  7. طراحی محیط های آزمون، تدوین متدولوژی و تولید مواردآزمون های امنیتی و وظیفه مندی نرم افزار به صورت ایستا و پویا
  8. پیاده سازی ابزارهای تحلیل استاتیک کد(SCA) در سازمان
  9. آموزش و ارتقا سطح آگاهی امنیتی مهندسین نرم افزار، برنامه نویسان، مدیران ارشد امنیت و تیم های امنیتی

 

  • تهران-خیابان گاندی جنوبی- خیابان پانزدهم- پلاک 25
  • درخواست دمو محصول و ارائه خدمات: 87137330-021
    دفتر مرکزی: 87137000-021
  • info[@]samenea.com
اینستاگرام آپارات آراس اس تلگرام لینکدین