بخشی از مقاله
ضرورت امنيت نرم افزار در چرخه حيات آن
چکيده
امروزه ارزيابي امنيتي تنها پويش پورتهاي باز شبکه نبوده و کاوش در رفتار نرم افزار بعنوان بخش کليدي و بحراني از يک سيستم بسيار ضروري است .بسياري از ذينفعان توليد نرم افزار پس از توليد و در مرحله ي بکارگيري به فکر امنيت برنامه ي کاربردي خود مي افتند و غالباً به انجام يک تست نفوذ بسنده مي کنند. اين موضوع باعث افزايش هزينه ي برطرف کردن نقص هاي امنيتي ، موردي و پراکنده برخورد کردن با امنيت در سطح برنامه ي کاربردي ، درک نادرست و ناقص از نيازمندي هاي امنيتي ذينفعان توليد نرم افزار و عدم مديريت مناسب تغييرات و خط مشي هاي امنيتي مي شود. ارزيابي امنيتي بايد بسيار عميق تر از تست نفوذ در لايه کاربرد بوده و حتي آزمون کارکردي تمهيدات امنيتي را نيز دربرگيرد. در اين مقاله ابتدا ضرورت توجه به ارزيابي امنيتي و امن سازي نرم افزارها مورد بررسي قرار گرفته و سپس روشهاي انجام اين مهم و در نهايت مناسبترين رويکرد (متدولوژي برقراري امنيت در در چرخه حيات نرم افزار) ارائه خواهد شد.با استفاده از اين متدولوژي ، ابتدا نيازمندي هاي امنيتي ذينفعان توليد نرم افزار بدقت شناسائي شده و پس از آن باتوجه به ماموريت برنامه ي کاربردي يک سطح قابل قبول از امنيت حاصل مي گردد.
کلمات کليدي
متدولوژي, ارزيابي امنيتي ، نرم افزار, آسيب پذيري ، بازبيني کد,تست نفوذ
۱-مقدمه
امنيت در کاربردهاي امروزي از جايگاه ويژه اي برخوردار بوده و لازم است که سازمان ها و بخصوص توليدکنندگان محصولات نـرم افـزاري توجه به آن را در محصولات خود مدنظر قـرار دهنـد. سيسـتم هـاي تحت شبکه به دليل ماهيت خاص خود و دسترسي بدون محدوديت انواع کاربران از حيـث امنيـت ، از اهميـت فـوق العـاده اي برخـوردار مي باشند. وجود تنها يک آسيب پذيري در اين سيستم ها کافي است که امنيت کل سيستم و داده هاي سيستم را به مخاطره اندازد.
از آن جايي که بسياري از سيستم ها بـا داده هـا و اطلاعـاتي مواجـه است که اين داده ها و اطلاعات جزء اسناد طبقه بندي شده محسوب مي گردد لذا مي بايستي تـدابيري اتخـاذ گـردد کـه هرگونـه امکـا
دسترسي ، افشاء، خرابکاري و دزدي از اين اطلاعات و اسـناد امکـان ناپذير گردد.
قطعاً يکي از رويکردهايي که مي تواند در جهت جلوگيري از بروز رخدادهاي امنيتي و يا به عبارت ديگر افشاء اطلاعات محرمانه سازمانها مورد توجه قرار گيرد توسعه بسته هاي نرم افزاري است که فاقد هيچگونه حفره و آسيب پذيري بوده و در يک محيط و بستر کاملا امن بهره برداري گردد.در اين مقاله ابتدا ضرورت ارزيابي امنيتي نرم افزار بيان مي شود. پس از آن مفاهيم اوليه امنيت نرم افزار ارائه گرديده و سپس روشهاي ارزيابي امنيتي بيان مي شود. با عنايت با کاستيهاي روشهاي ارزيابي مطرح شده , روش امن سازي در چرخه حيات نرم افزار مطرح مي شود که شامل سيزده فاز جداگانه خواهد بود.
۲- ضرورت ارزيابي امنيتي نرم افزار
در مبحث فناوري اطلاعات آنچه از اهميتـي ويـژه برخـوردار اسـت اصل کليدي امنيت است . چراکه اطلاعات و ارتباطات بـدون حضـور پارامتري به نام امنيـت مـي توانـد مخـاطرات زيـادي ايجـاد نمايـ .
علي الخصوص در سيستم هاي مالي و نيـز سيسـتمهاي داراي طبقـه بنــدي در سراسـر دنيـا حساسـيت دربـاره منــابع داده و همچنــين مخابرات آنها به طرز قابل توجهي بيشتر است ، آن هـم بـدين علـت است که بي دقتي در امر حفاظت از اين منابع بعضاً ضرر ملي ايجـاد مي نمايد.
بنابراين لازم است نرم افزارهايي کـه امـروزه در سـازمانها اسـتفاده مي شوند به دقت و با وسواس زياد بررسي شـده و از لحـاظ امنيتـي تضمين شوند.
در اينجا در تاييد مطالب فوق آمار و ارقامي ارائه مي گردد تا ضرورت
اين مبحث بيشتر آشکار گردد:
.بيش از ۷۵درصد از نفوذهـا و حمـلات امنيتـي امـروز بدليل آسيب پذيريهاي نرم افزار است . [١]
.بيش از ۷۰درصد از آسيب پذيريهاي امنيتـي در سـطح کاربرد است و نه در سطح شبکه .[١]
.حدود ۶۴درصد از توسعه دهندگان نرم افـزار در توسـعه نرم افزار امن ناتوانند.[٢]
.اگر تنها ۵۰درصد از آسيب پذيريهاي موجـود در سـطح نرم افزار قبل از استقرار برطرف گردد
۷۵درصد هزينه توليد و توسعه نرم افزار کاهش پيدا خواهد نمود. [3]
۳-امنيت نرم افزار يا نرم افزار امن
بايد توجه داشت که "امنيت نـرم افـزار بـه مفهـوم نـرم افـزار امـ نيست !"[٥]ويژگيهاي امنيتي نظير رمزنگاري ، احراز هويت و کنترل دسترسي در امنيت نرم افزار از حساسيت بالايي برخوردارند اما ايـن ويژگيها و مکانيزمهاي امنيتي به تنهايي کافي نبوده و امنيت بخشي ضروري از کل سيستم مي باشـد. مـثلاً سـرريز بـافر١يـک مشـکل امنيتي است و مهم نيست که از سهل انگاري در يک ويژگي امنيتي بوجود آمده است و يا از طريق يک رابط کاربر گرافيکي بـي اهميـت .
بنابراين ضروري است که تست امنيتي با دو رويکرد مختلـف انجـام پذيرد:
.تسـت مکانيســمهاي امنيتـي جهـت اطمينـان از اينکـه عملکرد آنها بدرستي پياده سازي شده است .
.انجام تستهاي امنيتي مبتني بـر ريسـک بوسـيله درک و شبيه سازي روش نفوذگران .
متاسفانه بسياري از مديران پروژه شرکتهاي توليد کننده نـرم افـزار به اشتباه بر ايـن باورنـد کـه امنيـت بـه مفهـوم اسـتفاده کـرد ويژگيهاي امنيتي مختلف نظير اسـتفاده از کلمـه عبـور و يـا حتـي افزودن SSL مي باشد. اما همانگونه که گفته شد حتي در صـورتيکه تمهيدات امنيتي بطور کامل و صحيح و بر اسـاس نيـاز فراينـدهاي سيستم استفاده شده باشد ابتدا بايد صحت عملکرد هر يـک از آنهـا بررسي شده و پس از تحليـل ريسـک تسـتهاي امنيتـي مبتنـي ـر ريسک انجام پذيرفته و تست نفوذ همانند يک نفـوذگر واقعـي اجـرا شود.
۴- آسيب پذيري
درگذشته تصوربر اين بود که آسيب پذيري يـک بـاگ نـرم افزاري ياسخت افزاري است که يک فرد بدخواه مي تواندازآن سوء استفاده کند. درتعريف جديد,آسيب پذيري ،به باگ هـاي سـخت افزاري يا نرم افزاري ياپيکربندي ناصحيح آن هاآسيب اطـلاق مـي گردد. ماهيت اصلي مديريت وصله ٢، مديريت پيکربندي ومـديريت امنيت همگي يکي بوده وهمگي زيرمجموعه اي ازمديريت آسـيب پذيري هستند.درظاهر،مديريت آسيب پذيري کاري ساده به نظـر مي رسدولي متاسفانه درعمل کاري بسيارمشکل وپيچيده اسـت .
دريک شبکه متعلـق بـه يـک سـازمان ، انـواع مختلفـي ازمنـابع ، کاربردهاوکاربران وجوددارندکه هر يک نيازمندي هاي مختلف و گاه متضادي باهم دارند.
پنجره آسيب پذيري ،مدت زماني است که سيستم نسـبت بـه يک نقيصه امنيتي ،نحوه پيکربندي يـا ديگـر مـواردي کـه امنيـت سيستم رابه خطرمي اندازد،درمعرض آسيب پذيري است .دونوع پنجره آسيب پذيري وجوددارد:[٤]
•پنجره آسيب پذيري نامعلوم :مدت زمان ما بين کشـف يـک آسيب پذيري وزمان ارائه وصله مناسب براي آن .
•پنجره آسيب پذيري معلوم :مدت زمـان مـابين ارائـه شـدن وصله و زمان اعمال آن به سيستم
درحالت ايده آل بايدتوليدکنندگان سيستم قبل ازارائه محصول ، خودتمامي آسيب پذيري هاي سيستم را شناخته وبرطرف کنند ولي اين امرباتوجه به پيچيده بودن کدهاازيک سووماهيت چرخه توليدازسوي ديگر،سبب ميشودتااشتباهات امنيتي در سيستم ارائه شده وجودداشته باشد.متاسفانه آسيب پذيري ها معمولاًتوسط مراکزتحقيقاتي ياافرادعادي بيان ميشوندو توليدکننده محصول همزمان باعموم افراددر جريان آسيب پذيري قرارمي گيرد.
۵- رويکردهاي موجود در افزايش امنيت نرم افزار
نيل به وضعيت مطلوب در زمينـه محصـولات امـن رايانـه اي حـول
محورهاي ذيل تعريف مي گردد:
.ارزيابي و امن سازي محصولات رايانه اي مورد استفاده
.وارد نمودن ملاحظات امنيتي و پيش بيني هاي مربـوط بـه آن در چرخه توليد محصولات رايانه اي
۵-۱-ارزيابي و امن سازي محصولات رايانه اي مورد استفاده
آنچه در اين محور از بحث انکار ناپذير است ، آسـيب پـذيري بخـش اعظمي از محصولات مورد استفاده است . بعضي از اين محصولات بـا هزينه هاي کم و برخي با هزينه هاي زياد توليـد شـده انـد. همچنـين ميزان آسيب پذيري آنها نيز متفاوت بوده و در عين حـال از سـطوح طبقه بندي و ضريب حساسيتهاي متفاوتي نيز برخوردار هستند.
بنابراين هرکدام از اين محصولات ، لزوماً بايد به طور دقيـق بررسـي گرديده و مخاطرات امنيتي آنهـا مرتفـع شـده و دريچـه هـاي نفـوذ احتمالي آنها شناسايي گردد. در اين مسير بايد از دانش و روشـهاي روز دنيا در اين زمينه بهره برداري گشـته و آخـرين مسـائل امنيتـ مبتلابه محصولات رايانه اي بررسي و ارزيابي شود.
روش هاي مختلفي براي آزمون نرم افزارمانندآزمون جعبه سياه ، آزمون جعبه سفيد٤، آزمون جعبه خاکسـتري ٥وجـود دارنـد. [٦]
هيچ کدام ازاين روش هابه تنهايي براي آزمايش امنيتي نرم افـزار مناسب نيستند.مهمترين دليلي که درتوجيه اين مطلب مي تـوان گفت اين است که درآزمـايش هـاي غيرامنيتـي ، محـيط کامـل و درستي براي اجراي نرم افزاردرنظرگرفته مي شـود.بـراي نمونـه فرض مي شودکه کاربران نرم افزاربه درستي کارخودراانجام مي دهندوقصدخرابکاري ندارند،نرم افزارهاوسيستم هايي کـه ايـن نرم افزارباآن هاتعامل دارد،قصدخرابکاري ونفوذندارند، واسـط هاي برنامه نويسي وتوابع کتابخانه اي درست کارمي کنند،وموارد ديگر.ولي درآزمون امنيتي هيچکدام ازاين فرضهاجايگاهي ندارند.
در ادامه به روشهاي مختلفي که جهـت ارزيـابي محصـولات مـورد استفاده قرار مي گيرند پرداخته مي شود. همانگون که گفته شد بايد ترکيبي از اين روشها براي ارزيابي و امن سـازي نـرم افـزار انتخـاب
شود:
۵-۱-۱-بازبيني فرآيندها
بازبيني فرآيندها٦از جمله فعاليت هايي است که بنـا بـه ضـرورت و اهميت نرم افزار توسط تيم امنيت بايد انجام گيرد.[٦]از آن جايي که لازمه اين تست بررسي جامع و مانع نرم افزار مي باشد لذا لازم اسـت که در فرآيند توليد و توسـعه نـرم افـزار و قبـل از اسـتقرار آن ايـن تحليل صورت گرفته و از درستي و صحت فرآيندهاي پياده شده در سطح نرم افزار و مطابقت آن با آنچه کـه از ملزومـات بهـره بـرداران است اطمينان لازم حاصل شود.
۵-۱-۲- تست فشار. بار
تست فشار فرآيندي است که بـه منظـور ارزيـابي عملکـرد و رفت ار نرم افزار، بستر ارتباطي ، ابزار و ... در شرايط خاص و بحراني سيستم مورد استفاده قرار مي گيرد. زماني کـه حجـم بـالاي درخواسـت هـا جهت برخورداري از سرويس هاي ارائه شده به سمت نرم افزار گسيل مي گردد مهم است که رفتار نرم افزار به دقت مورد بررسي و مطالعه قـرار گرفتـه تـا مشـخص گــردد کـه در چنـين شــرايطي رفتــار و عکس العمل آن به اين حجم درخواست ها چگونه اسـت . بسـياري از سيستم هاي نرم افزاري در چنين شرايطي دسترس پذيري خـود را از دست داده و عملاً امکان سـرويس دهـي بـه سـاير کـاربران مقـدور نمي گردد.بسياري از سيستم هاي نرم افزاري حتـي از نظـر امنيتـي بسيار آسيب پذير گشته و شرايط مناسب تري را براي حمله نفوذگر و سوء استفاده احتمالي ساير کاربران فراهم مي کنند که بايستي مورد توجه متوليان امنيت قرار گيرد.
اين فرآيند از دو جنبه کيفي و کمي قابل بررسـي و مطالعـه اسـت .
جنبه کيفي تست فشار به بررسي مشخصه هاي کيفي نرم افزار چون قابليت اتکاي نرم افزار، مقياس پذيري ، قابليت تعامل و ... مي پـردازد.
در نقطه مقابل جنبه کمي تست فشار به بررسي پارامترهايي چـون زمــان پاســخ نــرم افــزار بــه درخواســت هــاي سيســتم ، تعــداد دستورالعمل هاي قابل اجرا در واحد زمان ، نرخ انتقال داده در شبکه ، پهناي باند شبکه و موارد نظير آن اشاره نمود.
قرار دادن نرم افزار در شرايط بـار بـالا از جنبـه هـاي مختلـف قابـل بررسي و مطالعه است . حجم بالاي ترافيک در بستر ارتباطي ، حجـم بالاي پردازش پردازنده ، حجم بالاي حافظه درخواستي تنها برخي از مصاديق بار است که در سيستم هاي نرم افزاري توجيه پذير مي باشد.
در تست فشار لازم است که تيم امنيت با ايجاد شرايط موردنظر بـه روش هاي مختلف که شبيه سـازي از جملـه روش هاسـت سـعي د ايجاد شرايط موردنظر و در ادامه بررسي عملکرد نرم افزار نمايند.
۵-۱-۳-تست نفوذ
تست نفوذ يا هک اخلاقي از ديگر مصـاديق تسـت هـايي اسـت کـه امروزه در فرآيند توليد و توسعه سامانه هاي نرم افـزاري مـورد توجـه تيم توسعه نرم افزار قرار مي گيرد. هدف از انجام اين تسـت بررسـي ، تحليل و شناسايي ضعف هاي امنيتي موجود در سطح نرم افزار است که در فرآيند توليد و توسعه سامانه نرم افـزاري و عمـدتاً بـه دلايـ ناشي از عدم توجه توسعه دهندگان نرم افـزار بـه ملاحظـات امنيتـ حاصل مي گيرد.
تست نفوذ با هـدف قـرار دادن نـرم افـزار سـعي در شناسـايي ايـ ضعف ها داشته و براي نيل به اين مهم از الگوهاي رفتـاري شـناخته شده يک هکر واقعي براي پيشبرد اهداف استفاده مـي کنـد. عمـدتا ضعف هاي امنيتي ناشي مواردي چون عدم صحت آزمايي ورودي هاي کاربران ، عدم توجه به ضعف هاي امنيتي موجود در سطح زبان هـاي پياده سازي نشأت مي گيرد.
تيم امنيت بايستي با بکارگيري آخرين ترفندهاي شناخته شـده بـر روي نرم افزار مورد تست سـعي در هـدف قـرار دادن سـه پـارامتر کليدي امنيت سيستم هاي نرم افزاري (دسترس پذيري ، محرمانگي و يکپارچگي ٧)نموده تا امکان شناسايي ضعف هاي امنيتي و در ادامـه برطرف سازي آن از سوي متولي توليد و توسعه سـامانه نـرم افـزاري فراهم گردد.
۵-۱-۴-بازبيني کد منبع
همان گونه که بسياري از صاحب نظـران در حـوزه امنيـت IT اذعـان دارند صرف برخـورداري از نگـاه جعبـه سـياه بـه امنيـت نـرم افـزار نمي تواند نقش تعيين کننده اي در کـاهش خطـرات ناشـي از وجـود آسيب پذيري هاي امنيتي داشته باشد. اينجاسـت کـه برخـورداري از کد منبع توسعه داده شده از سوي مجـري و متـولي توليـد سـامانه نرم افزاري و انجام بررسي ها و تحليل هاي مختلف بر روي آن چه بـه صورت دستي و چه با بکارگيري آخرين محصـولات ارزيـابي امنيـت کد منبع نرم افزار مي تواند به عنوان قطعه ديگري از اين پازل مطـرح گردد.
حاصل فرآيند بازبيني کد منبع ، مستندي جامع از آسيب پذيري هاي احتمــالي موجــود در ســطح نــرم افــزار خواهــد بــود کــه در قالــب دستورالعمل هـاي امنيتـي بـه همـراه راه کـار پيشـنهادي در جهـت برطرف سازي آن به تيم توسعه ارائه خواهد شد تا نسبت به برطرف سازي اين آسيب پذيري ها در اولين فرصت ممکن اقدام نمايد.
۵-۱-۵-مدل سازي تهديدات و تحليل ريسک
حاصل فرآيند بازبيني کد منبع ، مستندي جامع از آسيب پذيري هاي احتمالي موجوددر سطح نرم افزار خواهد بود که در قالب دستورالعمل هاي امنيتي به همراه راه کار پيشنهادي در جهت
برطرف سازي آن به کارفرما ارائه خواهد شد تا نسبت به برطرف سازي اين آسيب پذيري ها در اولين فرصت ممکن اقدام نمايد.افشا شدن يک آسيب پذيري صرفنظرازچگونگي افشاشدن آن ، تهديدي براي کليه سازمانهامحسوب مي شود.ميزان تهديدبه
عوامل زيربستگي دارد:
•ميزان خطرپذيري پشتيباني کننده محصول
•تعدادسيستم هاي درمعرض خطرموجوددرسازمان
•ميزان حياتي بودن سيستم هاي آسيب پذيرموجوددرسازمان
•ميزان خطرحاصل ازسيستم هاي آسيب پذيرموجوددرسازمان هرسازماني ميتواندميزان خطري که آن سازمان راتهديدمي کند، به روشهاي مختلفي محاسبه کنـد.يکـي از روش هـاي منطقـي و متداول ،استفاده ازفرمول زيراست :[٧]
Risk = Vulnerability * Attacks * Threat * Exposure
که درآن :
Vulnerability مقدارمواردي است که به عنوان آسـيب پـذيري شناخته مي شوند.اين مقداربه چگونگي تشخيص آسيب پذيري ها بستگي دارد.
Attacks مقدارحملات وخطرهاي واقعي موجود در نرم افزار مـي باشد.
Threat مقدارخطرقريب الوقوع ودرکمين است .
Exposure ميزان آسيب پذيربودن يک سازمان نسـبت بـه يـک حمله مي باشد.