1 / 35

مهندسی نرم افزار امن (چرخه حيات امن) فاطمه احمدی آبکناری

Software Security & Secure Software Engineering. مهندسی نرم افزار امن (چرخه حيات امن) فاطمه احمدی آبکناری. فهرست مطالب. چرخه حيات نرم افزار. 1. متودولوژی تصحيح به همراه ساخت. امنيت محصولات نرم افزاری. 9. 2. TSP-Secure. آسيب پذيری ها. 8. 3. چرخه حيات SDL.

Download Presentation

مهندسی نرم افزار امن (چرخه حيات امن) فاطمه احمدی آبکناری

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Security & Secure Software Engineering مهندسی نرم افزار امن (چرخه حيات امن)فاطمه احمدی آبکناری

  2. فهرست مطالب چرخه حيات نرم افزار 1 متودولوژی تصحيح به همراه ساخت امنيت محصولات نرم افزاری 9 2 TSP-Secure آسيب پذيری ها 8 3 چرخه حيات SDL فرايند توليد محصول نرم افزاری امن 4 7 6 5 مدل های CMM استانداردها و چارچوب های امنيت

  3. بررسی بازار هدف • بررسی سازمان مورد نظر به عنوان مشتری چرخه حيات نرم افزار Requirement Engineering • تحليل امکان پذيری پياده سازی خواسته ها Analysis • طراحی نمای کلی برنامه، داده ها و فرايندها Design • کدنويسی Implementation Development Maintenance • نگهداری: • اصلاحی • تکاملی • انطباقی • بازدارنده Postdelivery Maintenance

  4. چرخه حيات نرم افزار

  5. چرخه حيات نرم افزار

  6. چرخه حيات نرم افزارو محصول نرم افزاری SDLC Software Development Life Cycle Standards such as ISO/IEC 12207 Benefits of SDLC: Cost-efficient Effective High Quality

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

  8. امنيت محصولات نرم افزاری اطمينان در نرم افزار (Software Assurance: SwA):اطمينان در نرم افزار به معنای عاری بودن محصول نرم افزاری از آسيب پذيری های تعمدی و يا اتفاقی است که در هر مرحله از چرخه حيات يک محصول نرم افزاری به آن تزريق شده باشد. اطمينان از امنيت محصول نرم افزاری (Security Assurance): فرايندی (فعاليت ها، روش ها، يا روال ها) که طی آن نيازهای امنيتی يک محصول نرم افزاری تضمين و برآورده شود. اطمينان از امنيت محصول نرم افزاری عموما شامل راهکارهايی برای هريک از فازهای چرخه حيات نرم افزار از مهندسی نيازها تا نگهداری می شود.

  9. فرايند توسعه محصولات نرم افزاری امن 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 شناسايی و مديريت ريسک ها به منظور راهبری فعاليت های مهندسی امنيت

  10. آسيب پذيری ها (Vulnerabilities) Cross-Site Scripting (XSS) SQL Injection Malicious Codes CRLF Injection

  11. As the 2nd most common software vulnerabilities SQL Injection ~ 20% of all web vulnerabilities نوعی از آسيب پذيری امنيتی برای برنامه های کاربردی تحت وب است که مهاجم اقدام به ارسال يک دستور SQL به پايگاه داده می نمايد. برنامه کاربردی تحت وب آن را اجرا نموده و اطلاعات موجود در پايگاه داده که کاربر نبايد به آنها دسترسی داشته باشد در اختيار مهاجم قرار می گيرد. با اين روش، مهاجم قادر به حذف، ايجاد، به روزرسانی و خواندن داده ها در پايگاه می شود. دسترسی به داده های حساس مانند اطلاعات مربوط به کارت های اعتباری و ديگر اطلاعات مالی دسترسی به داده های حساس مانند اطلاعات مربوط به SSN

  12. SQL Injection عموما مهاجمان، زمانی از اين روش استفاده می کنند که برنامه کاربردی مورد حمله، بر روی ورودی های کاربران ارزيابی و يا کدينگ انجام نمی دهند و ورودی ها را به صورت مستقيم به پايگاه می فرستند.

  13. As the most common software vulnerabilities Cross-Site Scripting (XSS) آسيب پذيری از نوع XSS اسکريپت های موجود در صفحات وب را که در سمت کاربر و در مرورگر کاربر اجرا می شوند مورد حمله قرار می دهند. اين نوع آسيب پذيری ناشی از ضعف های زبانهای برنامه نويسی اسکريپت نويسی سمت کاربر مانندJavaScript و HTML هستند. مهاجمان در اين روش، اسکريپت هايی را در صفحات جاسازی می نمايند که هربار با بارشدن صفحه و يا با انجام رويداد خاصی اجرا می شوند. در XSS قربانی کاربر است نه برنامه کاربردی و محتوای اشتباه از طريق کد JavaScript به کاربر داده می شود.

  14. Reflective XSS مهاجم يک ايميل گمراه کننده حاوی اسکريپت JavaScript به کاربر می فرستد. در صورت کليک شدن بر روی لينک مزبور، يک درخواست HTTP از مرورگر کاربر به برنامه کاربردی آسيب پذير تحت وب ارسال می شود. سپس اسکريپت مزبور به عنوان بخشی از جلسه کاری کاربر اجرا شده و به مرورگر کاربر بازتاب داده می شود.

  15. Persistent XSS به عنوان مثال، صفحه وبی که نام کاربران را دريافت و در صفحه پروفايل آنها نشان می دهد. اگر برنامه کاربردی کنترلی بر روی جعبه ورود نام کاربر نداشته باشد مهاجم می تواند اقدام به وارد کردن کدهای آلوده اسکريپت در اين فيلد نمايد. آنگاه کاربران ديگری که پروفايل مورد نظر مهاجم را بازديد می کنند (ارسال آدرس صفحه از طريق ايميل) کد آلوده را به عنوان بخشی از جلسه کاری خود دريافت می نمايند.

  16. however all XSS attacks follow this pattern, which is depicted in the diagram below. Persistent XSS

  17. Cross-Site Scripting (XSS) تاثيرات XSS سرقت حساب کاربری توزيع وب کرم ها کنترل مرورگر از راه دور دسترسی به تاريخچه مرورگر

  18. Malicious Codes اين کدها دامنه وسيعی از اصطلاحات امنيتی سيستم را در بر می گيرد از جمله اسکريپت های مهاجم، ويروس ها، کرم ها، اسب تروژان و ... • Java Applets • ActiveX Controls • Scripting languages • Browser plug-ins ابزارهای تحليلی به دنبال کشف کدها در هر قسمت از يک سيستم نرم افزاری هستند که ممکن است منجر به تاثيرات ناخواسته، شکاف های امنيتی و يا تحميل خرابی به سيستم شود.

  19. CRLF Injection اين دسته از آسيب پذيری ها اشاره به افزودن المان های کاراکتری خاص در مکان های ناخواسته به منظور دستکاری توابع برنامه های کاربردی وب است. بسياری از پروتکل های اينترنت مانند MIME (برای e-mail)، NNTP (برای newsgroup) و HTTP از CRLF برای جداکردن جريان های متن به المان های گسسته استفاده می کنند. تاثيرات • XSS or Cross Site Scripting vulnerabilities • Proxy and web server cache poisoning • Hijacking the client's session • Client web browser poisoning

  20. CRLF Injection ~ %0d%0a : HTTP Equivalent اگر يک برنامه کاربردی آسيب پذير ورودی زير را بدون چک کردن از کاربر دريافت کرده و در 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 در صورت کليک کردن بر لينک مزبور: <html>Hacker Content</html>

  21. Software Example: VERACODE

  22. چرخه حيات توسعه امنيت محاسباتی قابل اطمينان مايکروسافت (SDL) Microsoft’s Trustworthy Computing Security Development Lifecycle فرايندی است که شرکت مايکروسافت برای توسعه نرم افزارهايی که نياز به پايداری در برابر حملات امنيتی دارند مورد پذيرش قرار داده است. اين فرايند مجموعه ای از فعاليت ها در سطوح امنيتی و راه حل ها را برای هريک از فازهای فرايند توسعه نرم افزاری مايکروسافت اضافه نموده است. اين فعاليت ها شامل مدل سازی تهديدها (Threat Modeling)به منظور شناخت ريسک های امنيتی در خلال فاز طراحی (Design)، استفاده از ابزارهای تحليلی برای اسکن کد و مرور کد در فاز پياده سازی (Implementation) و تکنيک های تست محصول در فاز تست و کنترل می باشد.

  23. چرخه حيات امنيت مايکروسافت(SDL) Requirement Engineering Analysis Product Test Technique Design Threat Modeling Implementation Code Scan and Code Review Postdelivery Maintenance

  24. فازهایSDL مطالعات اوليه Security Push آغاز پروژه مرور نهايی امنيت Design Phase تعريف و بکارگيری روش های برتر طراحی طرح ريزی پاسخ های امنيتی ارزيابی ريسک های مرتبط با محصول تحويل محصول تحليل ريسک اجرای پاسخ های امنيتی ايجاد ابزارها و مستندات امنيت Implementation Phase بکارگيری سياست های کدنويسی امن بکارگيری سياست های تست امن

  25. TSP-Secure TSP (فرايند تيمی توليد نرم افزار) چارچوبی را به شکل مجموعه ای از فرايندها و متدها برای فرايند مهندسی نرم افزار در سطح گروهی و فردی به منطور دستيابی به نرم افزارهايی با تعداد خطاهای کمتری در کد (بر حسب KLOC) تعريف می کند. Software Engineering Institute’s (SEI) TSP extension TSP - Secure Goal: توليد نرم افزارهای امن

  26. TSP-Secure TSP - Secure با توجه به اينکه نرم افزار امن به صورت تصادفی توليد نمی- شود طرح های امنيتی در اين مرحله برنامه ريزی می شود. با توجه به اينکه امنيت و کيفيت ارتباط نزديکی با يکديگر دارند به مقوله کيفيت در هريک از فازهای چرخه حيات توجه ويژه می شود. با توجه به اينکه افراد درگير در فرايند توليد نرم افزار بايد با مقوله امنيت نرم افزار آشنا باشند آموزش کارکنان در راستای آشنا کردن آنها با مفاهيم امنيت مورد توجه است.

  27. TSP-Secure TSP - Secure در جلسات Project Launchکه عموما توسط کارشناسان و مربيان واجد شرايط برگزار می شود تيم به يک توافق کلی بر موارد امنيتی کار نائل می شود، طرح های جزيی تر نيز آماده شده و پشتيبانی مديريت اخذ می شود. طرح های جزيي تر شامل موارد زير است: شناسايي ريسک های امنيتی، تعريف و مشخص سازی نيازمندی های امنيتی، طراحی امن، پياده سازی امن، استفاده از ابزارهای تحليل و تست و تست فازی

  28. استانداردها و چارچوب های امنيت نرم افزار 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)

  29. مدل های صلاحيت کمال سيستم(CMM) Capability Maturity Models CMMيک مدل مرجعاز تلاش های لازم برای به کمال رساندن يک محصول در حوزه مهندسی نرم افزار، مهندسی سيستم و مهندسی امنيت ارائه می دهد که سازمانهای توليد کننده محصول می توانند از اين مدل مرجع به عنوان يک معيار برای مقايسه روش های به کار گرفته شده خود را با روش های ذکر شده در اين مدل استفاده کنند. اين مدل به شرح چگونگی انجام فرايندها به صورت عملی و کاربردی نمی پردازد بلکه بر شرح ويژگی های فرايندها تمرکز دارد. تمرکز CMM بر شرح کمال سيستم به منظور دستيابی به مديريت زمانبندی بهتر، مديريت کيفيت بهتر و کاهش نرخ خطا (defect) در نرم افزار است.

  30. مدل های صلاحيت کمال سيستم (CMM) • CMM includes; × Capability Maturity Model Integration (CMMI) Federal Aviation Administration integrated Capability Maturity Model (FAA-iCMM) • Security • Addressing × Systems Security Engineering Capability Maturity Model (SSE-CMM) √

  31. مديريت خطا (Defect Management) برای مديريت خطا تيم بايد پاسخ سوالات زير را بيابد: چه نوعی از خطاها منجر به آسيب پذيری های امنيتی می شوند؟ خطاها در کدام قسمت از چرخه حيات توسعه نرم افزار قابل اندازه گيری هستند؟ از چه روش ها و ابزارهايی برای اندازه گيری خطاها می توان استفاده نمود؟ چه ميزان خطا در هر مرحله قابل حذف کردن است؟ تعداد خطاهای باقيمانده پس از فرايند حذف خطاها چه ميزان برآورد می شود؟

  32. تصحيح به همراه ساخت (Correctness by Construction) اين متودولوژی فرايندی به منظور توسعه نرم افزارهايی يکپارچه و با حداقل نقص است که به صورت ويژه به برطرف ساختن عيوب کشف شده در نزديک ترين زمان ممکن به نقطه زمانی کشف اهتمام می ورزد. Formal Specification languages like Z Correctness By Construction SPARK (Extension of Ada)

  33. تصحيح به همراه ساخت (Correctness by Construction) تست به منظور ساختن نرم افزار صحيح (اشکال زدايي) آگاهی از علل تست تست به منظور اثبات صحت نرم افزار (ارزيابی) برطرف ساختن خطاها قبل از رسيدن به مرحله تست تست به عنوان دومين روش پر هزينه يافتن خطاهاست پرهزينه ترين راه آن است که مشتريان خطاها را کشف کنند اعمال تغييرات به صورت پله ای و مرحله به مرحله نوشتن نرم افزارها به منظور سهولت ارزيابی کد نويسی به قسمی که ارزيابی آسان باشد (آماده سازی مستندات)

  34. منابع [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/.

  35. Q & A

More Related