مهندسی نرم افزار امن

Download Report

Transcript مهندسی نرم افزار امن

Software Security & Secure Software Engineering
1
‫فهرست مطالب‬
‫چرخه حيات نرم افزار‬
‫‪1‬‬
‫امنيت محصوالت نرم افزاری‬
‫آسيب پذيری ها‬
‫فرايند توليد محصول‬
‫نرم افزاری امن‬
‫‪9‬‬
‫‪2‬‬
‫‪8‬‬
‫‪3‬‬
‫‪4‬‬
‫استانداردها و چارچوب های امنيت‬
‫‪2‬‬
‫متودولوژی تصحيح به‬
‫همراه ساخت‬
‫‪7‬‬
‫‪5‬‬
‫‪6‬‬
‫‪TSP-Secure‬‬
‫چرخه حيات ‪SDL‬‬
‫مدل های ‪CMM‬‬
‫چرخه حيات نرم افزار‬
‫بررس ی سازمان مورد نظر به عنوان مشتری‬
‫‪Requirement‬‬
‫‪Engineering‬‬
‫تحليل امکان پذيری پياده سازی‬
‫خواسته ها‬
‫‪Analysis‬‬
‫طراحی نمای کلی برنامه‪،‬‬
‫داده ها و فرايندها‬
‫کدنويس ی‬
‫نگهداری‪:‬‬
‫اصالحی‬
‫تکاملی‬
‫انطباقی‬
‫بازدارنده‬
‫‪3‬‬
‫بررس ی بازار هدف‬
‫‪Design‬‬
‫‪Implementation‬‬
‫‪Postdelivery‬‬
‫‪Maintenance‬‬
‫‪Development‬‬
‫‪Maintenance‬‬
‫چرخه حيات نرم افزار‬
‫‪4‬‬
‫چرخه حيات نرم افزار‬
‫‪5‬‬
‫چرخه حيات نرم افزار و محصول نرم افزاری‬
SDLC
Software Development Life Cycle
Standards such as ISO/IEC 12207
Benefits of SDLC:
Cost-efficient
Effective
High Quality
6
‫امنيت و چرخه حيات محصوالت نرم افزاری‬
‫پايبندی نرم افزارها به يک مدل فرايند و يا يک مدل چرخه حيات خاص‪ ،‬امنيت نرم‪ -‬افزار را‬
‫از نظر مصون بودن از آسيب پذيری های امنيتی ناخواسته تضمين نمی کند‪.‬‬
‫اگرچه احتمال ساخت نرم افزارهای امن با پيروی سازمانهای سازنده از قواعد مهندس ی نرم‬
‫افزار با تاکيد بر طراحی خوب و کيفيت خوب شامل گذراندن محصول از پروسه های‬
‫بازرس ی ‪ ،‬مرور و استفاده از متدهای تست‪ ،‬استفاده مناسب از مفاهيم مديريت ريسک‪،‬‬
‫مديريت پروژه و مديريت نيروی انسانی بيشتر می شود‪.‬‬
‫‪7‬‬
‫امنيت محصوالت نرم افزاری‬
‫اطمينان در نرم افزار (‪ :)Software Assurance: SwA‬اطمينان در نرم افزار به‬
‫معنای عاری بودن محصول نرم افزاری از آسيب پذيری های تعمدی و يا اتفاقی است که در‬
‫هر مرحله از چرخه حيات يک محصول نرم افزاری به آن تزريق شده باشد‪.‬‬
‫اطمينان از امنيت محصول نرم افزاری (‪ :)Security Assurance‬فرايندی (فعاليت ها‪،‬‬
‫روش ها‪ ،‬يا روال ها) که طی آن نيازهای امنيتی يک محصول نرم افزاری تضمين و برآورده‬
‫شود‪.‬‬
‫اطمينان از امنيت محصول نرم افزاری عموما شامل راهکارهايی برای هريک از فازهای چرخه‬
‫حيات نرم افزار از مهندس ی نيازها تا نگهداری می شود‪.‬‬
‫‪8‬‬
‫فرايند توسعه محصوالت نرم افزاری امن‬
‫‪Security Assurance Activities‬‬
‫( فعاليت های اطمينان از امنيت)‬
‫(ارزيابی و اعتبار سنجی))‪Verification and Validation (V& V‬‬
‫‪Expert Review, Artifact Review, and Evaluations‬‬
‫‪Security Organizational and Project Management Activities‬‬
‫تعيين نقش های سازمانی و پشتيبانی از امنيت‬
‫فعاليت های مربوط به مديريت پروژه شامل زمانبندی پروژه و تخصيص منابع‬
‫‪Security Risk Identification and Management Activities‬‬
‫شناسايی و مديريت ريسک ها به منظور راهبری فعاليت های مهندس ی امنيت‬
‫‪9‬‬
)Vulnerabilities( ‫آسيب پذيری ها‬
Cross-Site Scripting (XSS)
SQL Injection
Malicious Codes
CRLF Injection
10
‫‪~ 20% of all web‬‬
‫‪vulnerabilities‬‬
‫‪As the 2nd most‬‬
‫‪common software‬‬
‫‪vulnerabilities‬‬
‫‪SQL Injection‬‬
‫نوعی از آسيب پذيری امنيتی برای برنامه های کاربردی تحت وب است که مهاجم اقدام به ارسال‬
‫يک دستور ‪ SQL‬به پايگاه داده می نمايد‪ .‬برنامه کاربردی تحت وب آن را اجرا نموده و اطالعات‬
‫موجود در پايگاه داده که کاربر نبايد به آنها دسترس ی داشته باشد در اختيار مهاجم قرار می گيرد‪.‬‬
‫با اين روش‪ ،‬مهاجم قادر به حذف‪ ،‬ايجاد‪ ،‬به روزرسانی و خواندن داده ها در پايگاه می شود‪.‬‬
‫دسترس ی به داده های حساس مانند اطالعات مربوط به کارت های اعتباری و ديگر‬
‫اطالعات مالی‬
‫دسترس ی به داده های حساس مانند اطالعات مربوط به ‪SSN‬‬
‫‪11‬‬
‫‪SQL Injection‬‬
‫عموما مهاجمان‪ ،‬زمانی از اين روش استفاده می کنند که برنامه کاربردی مورد حمله‪ ،‬بر روی‬
‫ورودی های کاربران ارزيابی و يا کدينگ انجام نمی دهند و ورودی ها را به صورت مستقيم به‬
‫پايگاه می فرستند‪.‬‬
‫‪12‬‬
‫‪As the most‬‬
‫‪common software‬‬
‫‪vulnerabilities‬‬
‫)‪Cross-Site Scripting (XSS‬‬
‫آسيب پذيری از نوع ‪ XSS‬اسکريپت های موجود در صفحات وب را که در سمت کاربر و در‬
‫مرورگر کاربر اجرا می شوند مورد حمله قرار می دهند‪.‬‬
‫اين نوع آسيب پذيری ناش ی از ضعف های زبانهای برنامه نويس ی اسکريپت نويس ی سمت کاربر‬
‫مانند ‪ JavaScript‬و ‪ HTML‬هستند‪.‬‬
‫مهاجمان در اين روش‪ ،‬اسکريپت هايی را در صفحات جاسازی می نمايند که هربار با بارشدن‬
‫صفحه و يا با انجام رويداد خاص ی اجرا می شوند‪.‬‬
‫در ‪ XSS‬قربانی کاربر است نه برنامه کاربردی و محتوای اشتباه از طريق کد ‪ JavaScript‬به‬
‫کاربر داده می شود‪.‬‬
‫‪13‬‬
‫‪Reflective XSS‬‬
‫مهاجم يک ايميل گمراه کننده حاوی اسکريپت ‪ JavaScript‬به کاربر می فرستد‪ .‬در صورت کليک‬
‫شدن بر روی لينک مزبور‪ ،‬يک درخواست ‪ HTTP‬از مرورگر کاربر به برنامه کاربردی آسيب پذير‬
‫تحت وب ارسال می شود‪ .‬سپس اسکريپت مزبور به عنوان بخش ی از جلسه کاری کاربر اجرا شده و‬
‫به مرورگر کاربر بازتاب داده می شود‪.‬‬
‫‪14‬‬
‫‪Persistent XSS‬‬
‫به عنوان مثال‪ ،‬صفحه وبی که نام کاربران را دريافت و در صفحه پروفايل آنها نشان می دهد‪ .‬اگر‬
‫برنامه کاربردی کنترلی بر روی جعبه ورود نام کاربر نداشته باشد مهاجم می تواند اقدام به وارد‬
‫کردن کدهای آلوده اسکريپت در اين فيلد نمايد‪ .‬آنگاه کاربران ديگری که پروفايل مورد نظر مهاجم‬
‫را بازديد می کنند (ارسال آدرس صفحه از طريق ايميل) کد آلوده را به عنوان بخش ی از جلسه کاری‬
‫خود دريافت می نمايند‪.‬‬
‫‪15‬‬
Persistent XSS
16
‫تاثيرات ‪XSS‬‬
‫)‪Cross-Site Scripting (XSS‬‬
‫سرقت حساب کاربری‬
‫توزيع وب کرم ها‬
‫کنترل مرورگر از راه دور‬
‫دسترس ی به تاريخچه مرورگر‬
‫‪17‬‬
‫‪Malicious Codes‬‬
‫اين کدها دامنه وسيعی از اصطالحات امنيتی‬
‫سيستم را در بر می گيرد از جمله اسکريپت های‬
‫مهاجم‪ ،‬ويروس ها‪ ،‬کرم ها‪ ،‬اسب تروژان و ‪...‬‬
‫‪•Java Applets‬‬
‫‪•ActiveX Controls‬‬
‫‪•Scripting languages‬‬
‫‪•Browser plug-ins‬‬
‫ابزارهای تحليلی به دنبال کشف کدها در هر قسمت از يک سيستم نرم افزاری هستند که ممکن‬
‫است منجر به تاثيرات ناخواسته‪ ،‬شکاف های امنيتی و يا تحميل خرابی به سيستم شود‪.‬‬
‫‪18‬‬
‫‪CRLF Injection‬‬
‫اين دسته از آسيب پذيری ها اشاره به افزودن املان های کاراکتری خاص در مکان های ناخواسته‬
‫به منظور دستکاری توابع برنامه های کاربردی وب است‪.‬‬
‫بسياری از پروتکل های اينترنت مانند ‪( MIME‬برای ‪( NNTP ،)e-mail‬برای‬
‫‪ )newsgroup‬و ‪ HTTP‬از ‪ CRLF‬برای جداکردن جريان های متن به املان های گسسته‬
‫استفاده می کنند‪.‬‬
‫تاثيرات‬
‫‪ XSS or Cross Site Scripting vulnerabilities‬‬
‫‪ Proxy and web server cache poisoning‬‬
‫‪ Hijacking the client's session‬‬
‫‪ Client web browser poisoning‬‬
‫‪19‬‬
‫‪~ %0d%0a : HTTP Equivalent‬‬
‫‪CRLF Injection‬‬
‫اگر يک برنامه کاربردی آسيب پذير ورودی زير را بدون چک کردن از کاربر دريافت کرده و در‬
‫‪ Log File 1‬بنويسد‪:‬‬
‫‪Hello, World<CR><LF>DATABASE ERROR: TABLE CORRUPTION‬‬
‫کاربر ‪ Admin‬در هنگام تحليل ‪ Log‬درگير گزارش يک خطای تقلبی می شود و مهاجم می تواند‬
‫در اين فرصت اقدام به تخريب در قسمت ديگری از پايگاه نمايد‪.‬‬
‫‪ 2‬ارسال لينکی به صورت زير توسط مهاجم‪:‬‬
‫‪http://www.yoursite.com/somepage.php?page=%0d%0aContent-Type:‬‬
‫‪text/html%0d%0aHTTP/1.1 200 OK%0d%0aContent-Type:‬‬
‫‪text/html%0d%0a%0d%0a%3Chtml%3EHacker Content%3C/html%3E‬‬
‫در صورت کليک کردن بر لينک مزبور‪:‬‬
‫‪20‬‬
‫>‪<html>Hacker Content</html‬‬
Software Example: VERACODE
21
‫چرخه حيات توسعه امنيت محاسباتی قابل اطمينان مايکروسافت‬
‫(‪)SDL‬‬
‫‪Microsoft’s Trustworthy Computing Security Development‬‬
‫‪Lifecycle‬‬
‫فرايندی است که شرکت مايکروسافت برای توسعه نرم افزارهايی که نياز به پايداری در برابر‬
‫حمالت امنيتی دارند مورد پذيرش قرار داده است‪.‬‬
‫اين فرايند مجموعه ای از فعاليت ها در سطوح امنيتی و راه حل ها را برای هريک از فازهای‬
‫فرايند توسعه نرم افزاری مايکروسافت اضافه نموده است‪.‬‬
‫اين فعاليت ها شامل مدل سازی تهديدها (‪ )Threat Modeling‬به منظور شناخت‬
‫ريسک های امنيتی در خالل فاز طراحی (‪ ،)Design‬استفاده از ابزارهای تحليلی برای اسکن‬
‫کد و مرور کد در فاز پياده سازی (‪ )Implementation‬و تکنيک های تست محصول در فاز‬
‫تست و کنترل می باشد‪.‬‬
‫‪22‬‬
)SDL(‫چرخه حيات امنيت مايکروسافت‬
Requirement
Engineering
Analysis
Product Test
Technique
Design
Threat
Modeling
Code Scan
and Code Review
Implementation
Postdelivery
Maintenance
23
‫فازهای ‪SDL‬‬
‫مطالعات اوليه‬
‫‪Security Push‬‬
‫آغاز پروژه‬
‫مرور نهايی امنيت‬
‫طرح ريزی پاسخ های امنيتی‬
‫تحويل محصول‬
‫تعريف و بکارگيری روش های برتر طراحی‬
‫ارزيابی ريسک های مرتبط با محصول‬
‫‪Design Phase‬‬
‫تحليل ريسک‬
‫اجرای پاسخ های امنيتی‬
‫ايجاد ابزارها و مستندات امنيت‬
‫بکارگيری سياست های کدنويس ی امن‬
‫‪Implementation Phase‬‬
‫بکارگيری سياست های تست امن‬
‫‪24‬‬
‫‪TSP-Secure‬‬
‫‪( TSP‬فرايند تيمی توليد نرم افزار) چارچوبی را به شکل مجموعه ای از فرايندها و متدها‬
‫برای فرايند مهندس ی نرم افزار در سطح گروهی و فردی به منطور دستيابی به نرم افزارهايی با‬
‫تعداد خطاهای کمتری در کد (بر حسب ‪ )KLOC‬تعريف می کند‪.‬‬
‫)‪Software Engineering Institute’s (SEI‬‬
‫‪TSP extension‬‬
‫‪TSP - Secure‬‬
‫‪Goal:‬‬
‫توليد نرم افزارهای امن‬
‫‪25‬‬
‫‪TSP-Secure‬‬
‫‪TSP - Secure‬‬
‫با توجه به اينکه نرم افزار امن به صورت تصادفی توليد نمی‪-‬‬
‫شود طرح های امنيتی در اين مرحله برنامه ريزی می شود‪.‬‬
‫با توجه به اينکه امنيت و کيفيت ارتباط نزديکی با يکديگر‬
‫دارند به مقوله کيفيت در هريک از فازهای چرخه حيات توجه‬
‫ويژه می شود‪.‬‬
‫با توجه به اينکه افراد درگير در فرايند توليد نرم افزار بايد با‬
‫مقوله امنيت نرم افزار آشنا باشند آموزش کارکنان در راستای‬
‫آشنا کردن آنها با مفاهيم امنيت مورد توجه است‪.‬‬
‫‪26‬‬
‫‪TSP-Secure‬‬
‫‪TSP - Secure‬‬
‫در جلسات‪ Project Launch‬که عموما توسط کارشناسان و‬
‫مربيان واجد شرايط برگزار می شود تيم به يک توافق کلی بر‬
‫موارد امنيتی کار نائل می شود‪ ،‬طرح های جزيی تر نيز آماده شده و‬
‫پشتيبانی مديريت اخذ می شود‪.‬‬
‫طرح های جزيي تر شامل موارد زير است‪:‬‬
‫شناسايي ريسک های امنيتی‪ ،‬تعريف و مشخص سازی نيازمندی‬
‫های امنيتی‪ ،‬طراحی امن‪ ،‬پياده سازی امن‪ ،‬استفاده از ابزارهای‬
‫تحليل و تست و تست فازی‬
‫‪27‬‬
‫استانداردها و چارچوب های امنيت نرم افزار‬
Systems Security Engineering Capability Maturity Model
(SSE-CMM)
Capability Maturity Model
(CMM)
Trusted CMM/Trusted Software Methodology
(T-CMM/TSM)
Software Assurance Maturity Model
(SAMM)
Software Security Framework
(SSF)
Team Software Process
(TSP)
28
‫مدل های صالحيت کمال سيستم(‪)CMM‬‬
‫‪Capability Maturity Models‬‬
‫‪ CMM‬يک مدل مرجع از تالش های الزم برای به کمال رساندن يک محصول در حوزه‬
‫مهندس ی نرم افزار‪ ،‬مهندس ی سيستم و مهندس ی امنيت ارائه می دهد که سازمانهای توليد‬
‫کننده محصول می توانند از اين مدل مرجع به عنوان يک معيار برای مقايسه روش های به‬
‫کار گرفته شده خود را با روش های ذکر شده در اين مدل استفاده کنند‪.‬‬
‫اين مدل به شرح چگونگی انجام فرايندها به صورت عملی و کاربردی نمی پردازد بلکه بر شرح‬
‫ويژگی های فرايندها تمرکز دارد‪.‬‬
‫تمرکز ‪ CMM‬بر شرح کمال سيستم به منظور دستيابی به مديريت زمانبندی بهتر‪ ،‬مديريت‬
‫کيفيت بهتر و کاهش نرخ خطا (‪ )defect‬در نرم افزار است‪.‬‬
‫‪29‬‬
)CMM( ‫مدل های صالحيت کمال سيستم‬
CMM includes;
Capability Maturity Model Integration
(CMMI)
Federal Aviation Administration integrated
Capability Maturity Model
(FAA-iCMM)
Systems Security Engineering
Capability Maturity Model
(SSE-CMM)
×
×
Security
Addressing
√
30
‫مديريت خطا (‪)Defect Management‬‬
‫برای مديريت خطا تيم بايد پاسخ سواالت زير را بيابد‪:‬‬
‫چه نوعی از خطاها منجر به آسيب پذيری های امنيتی می شوند؟‬
‫خطاها در کدام قسمت از چرخه حيات توسعه نرم افزار قابل اندازه گيری هستند؟‬
‫از چه روش ها و ابزارهايی برای اندازه گيری خطاها می توان استفاده نمود؟‬
‫چه ميزان خطا در هر مرحله قابل حذف کردن است؟‬
‫تعداد خطاهای باقيمانده پس از فرايند حذف خطاها چه ميزان برآورد می شود؟‬
‫‪31‬‬
‫تصحيح به همراه ساخت (‪)Correctness by Construction‬‬
‫اين متودولوژی فرايندی به منظور توسعه نرم افزارهايی يکپارچه و با حداقل نقص است که‬
‫به صورت ويژه به برطرف ساختن عيوب کشف شده در نزديک ترين زمان ممکن به نقطه‬
‫زمانی کشف اهتمام می ورزد‪.‬‬
‫‪Formal Specification‬‬
‫‪languages like Z‬‬
‫)‪SPARK (Extension of Ada‬‬
‫‪32‬‬
‫‪Correctness‬‬
‫‪By‬‬
‫‪Construction‬‬
‫تصحيح به همراه ساخت (‪)Correctness by Construction‬‬
‫آگاهی از علل تست‬
‫برطرف ساختن‬
‫خطاها قبل از‬
‫رسيدن به مرحله‬
‫تست‬
‫نوشتن نرم افزارها به‬
‫منظور سهولت‬
‫ارزيابی‬
‫‪33‬‬
‫تست به منظور ساختن نرم افزار صحيح‬
‫(اشکال زدايي)‬
‫تست به منظور اثبات صحت نرم افزار‬
‫(ارزيابی)‬
‫تست به عنوان دومين روش پر هزينه يافتن‬
‫خطاهاست‬
‫پرهزينه ترين راه آن است که مشتريان خطاها‬
‫را کشف کنند‬
‫اعمال تغييرات به صورت پله ای و مرحله به‬
‫مرحله‬
‫کد نويس ی به قسمی که ارزيابی آسان باشد‬
‫(آماده سازی مستندات)‬
‫منابع‬
[1] Noopur Davis.“Secure Software Development Life Cycle Processes” .Retrieved from:
https://buildsecurityin.us-cert.gov/bsi/articles/knowledge/sdlc/326-BSI.html.
Software Engineering Institute. 2006-07-05; Updated (2012).
[2] The SANS Institute. “The Twenty most Critical Internet Security Vulnerabilities-The
Expert Consensus” (2005).
[3] Mills, E. “Secure Software? Experts Say it’s no longer a Pipe Dream” CNET News, April
20, (2009).
[4] Redwine, S. T. & Davis, N. “Processes to Produce Secure Software. Improving Security
Across the Software Development Lifecycle” (National Cyber security Partnership
Taskforce Report), Appendix B. http://www.cyberpartnership.org/init-soft.html (2004).
[5] Paulk, M., Curtis, B., Chrissis, M. B. & Weber, C. “Capability Maturity Model for
Software (Version 1.1)” (CMU/SEI-93-TR-024, ADA263403). Pittsburgh, PA: Software
Engineering Institute, Carnegie Mellon University, (1993).
[6] Fergal Glynn. “Software Development Life Cycle (SDLC)”. VERACODE official Web
site. http://www.veracode.com/security/ software- development-lifecycle.
[7] “The Software Development Life Cycle (SDLC)”. Retrieved from: http://www.stylusinc
.com/BI/ thought- leadership/it-outsourcing/the-software-development-life-cycle-sdlc/.
34
35