امنيت نرم افزار
-(2 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. آموزش و ارتقا سطح آگاهي امنيتي مهندسين نرم افزار، برنامه نويسان، مديران ارشد امنيت و تيم هاي امنيتي

 

آپارات آراس اس تلگرام لينکدين
تمامي حقوق متعلق به موسسه ارتباط عصر ثامن مي باشد.