مهندسی نرم افزار امن
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