您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 2015版-CISP0209软件安全开发_v30
软件安全开发培训机构名称讲师名字版本:3.0发布日期:2014-12-1生效日期:2015-1-1课程内容2软件安全开发知识体知识域软件安全开发概况软件安全需求和设计软件安全编码软件安全测试软件安全开发的关键工作软件安全开发的必要性软件安全开发背景知识子域软件安全开发模型及研究知识域:软件安全开发概况知识子域:软件安全开发背景了解软件的发展和产生的安全问题了解软件安全问题产生的原因3软件安全的基本概念软件的定义计算机程序、方法、规则和相关的文档资料以及在计算机上运行时所需的数据(IEEE)软件安全采用系统化、规范化、数量化的方法来指导构建安全的软件软件安全基本概念使安全成为软件开发的必须部分软件安全工程化三个支柱:风险管理、软件安全切入点、安全知识4软件安全问题广泛存在软件应用广泛电脑游戏、火车票售票系统、多媒体教学手机、航天飞机、人造卫星…软件安全问题广泛存在运行错误售票系统反应慢、连不上、崩溃多媒体教学系统死机黑客盗取泄漏的银行密码…安全问题日益增加…5软件安全问题产生后果软件安全问题的后果造成产品运行不稳定,得不到正确结果甚至崩溃•可靠性、可用性被恶意攻击,导致信息泄漏/数据破坏等后果•保密性、完整性一些因软件安全问题导致的严重后果售票系统瘫痪美国放射治疗仪超剂量辐射事件阿丽亚纳5号火箭首发失败事件Stuxnet病毒攻击伊朗布什尔核电站6漏洞情况统计中国国家漏洞库最近七年漏洞数量情况统计7软件产生安全问题的原因内因软件开发安全意识淡薄软件开发缺乏安全知识软件趋向大型化和复杂化软件第三方扩展增多外因软件使用场景更具威胁8软件越来越复杂9•Windows系列软件源代码行数漏洞与软件安全漏洞普遍存在平均每1000行程序存在20个缺陷(Dacey2003)采用严格的软件开发质量管理机制和多重测试环节,软件公司的缺陷率(千行代码):•普通软件开发公司的缺陷密度为4~40个缺陷•高水平的软件公司的缺陷密度为2~4个缺陷•美国NASA的软件缺陷密度可达到0.1个缺陷漏洞已经成为危害软件安全的主要因素危及用户对软件的信任、业务运营,还会危及一系列关键基础设施和应用10知识域:软件安全开发概况知识子域:软件安全开发的必要性理解软件安全保障的含义、思路和目标了解传统软件开发的局限性理解软件安全开发生命周期的概念和必要性11需要安全的软件理想的安全软件不存在安全漏洞能抵御各种攻击威胁按照预期的方式执行:dowhatisintended软件安全保障的思路通过在软件开发生命周期各阶段采取必要的、相适应的安全措施来避免绝大多数的安全漏洞。采取措施只能有效减少,但并不能完全杜绝所有的安全漏洞。12软件安全保障软件可以规避安全漏洞而按照预期的方式执行其功能目标:在软件开发生命周期中提升软件的安全性可信赖性:无论是恶意而为还是无意疏忽,软件都没有可利用的漏洞存在可预见性:对软件执行时其功能符合开发者的意图的信心。遵循性:将(软件开发)跨学科的活动计划并系统化,以确保软件过程和软件产品满足需求、遵循相关标准。13软件安全保障与风险管理在软件安全保障中,需要贯彻风险管理的思想“安全就是风险管理”软件安全是以风险管理为基础安全不必是完美无缺的,但风险必须是能够管理的最适宜的软件安全策略就是最优的风险管理对策这是一个在有限资源前提下的最优选择问题防范不足会造成直接的损失;防范过多又会造成间接的损失14传统的软件开发局限性传统软件开发教育的局限性传统开发人员能力的局限性传统软件生命周期的局限性•软件教育包括软件工程、数据结构、编译原理、系统结构、程序语言等•缺乏安全开发教育•对安全问题没有的足够理解•不了解安全设计的基本原理•不知道安全漏洞的常见类型•不知道如何设计针对安全的测试数据•软件生命周期包括需求分析、架构设计、代码编写、测试和运行维护五个阶段•缺乏安全介入的阶段15软件安全开发生命周期软件安全开发采取措施防止由于设计、开发、提交、升级或维护中的缺陷而导致的系统脆弱性20世纪末/21世纪初开始展开研究安全软件开发生命周期安全软件开发涵盖了软件开发整个生命周期通过软件开发的各个步骤来确保软件的安全性,其目标是确保安全的软件得以成功16安全软件开发生命周期将安全融入在设计/开发/测试等过程中融入安全在传统的过程中增加安全过程安全提前介入NIST:在软件发布以后进行修复的代价是在软件设计和编码阶段即进行修复所花代价的30倍软件系统发布以后才进行漏洞修复代价是最高的,且常常伴随着软件系统使用者的极大损失实施软件安全开发规范指南最佳实践17降低解决软件安全问题的代价早期发现并改正错误有以下优点在软件开发生命周期中,后面的阶段改正错误开销比前面的阶段要高出数倍早期发现并改正错误可以减少时间和开销18知识域:软件安全开发概况知识子域:软件安全开发模型及研究了解安全开发生命周期(SDL)的发展历程,理解SDL的主要内容了解使安全成为软件开发必须的部分(BSI)系列模型了解综合的轻量级应用安全过程(CLASP)的主要内容了解软件保障成熟度模型(SAMM)的框架了解各个模型的特点及适用性19可信计算安全开发生命周期微软,2002.1,盖茨安全开发生命周期SDL(TheTrustworthyComputingSecurityDevelopmentLifecycle)自2004起,SDL作为全公司的计划和强制政策,在将安全和隐私植入软件和企业文化方面发挥了重要作用。通过将整体和实践方法相结合,SDL致力于减少软件中漏洞的数量和严重性。SDL在开发过程的所有阶段中均引入了安全和隐私。20SDL发展历史2002.1~今20世纪90年代中期到后期(Melissa)和21世纪初期(CodeRed、Nimda、UPnP等)出现了一系列影响重大的恶意软件事件,促使微软重新考虑开发人员安全过程和策略21SDL的阶段和安全活动软件安全开发生命阶段5+2个阶段16项必需的安全活动22SDL每个阶段用到的工具23序号工具需求设计实现验证发布1SDL过程模板和MSF-Aglie+SDL过程模板2SDL威胁建模工具3Banned.h、SiteLockATL模板、FxCop、C/C++源代码分析工具、Anti-XSS库、32位的CAT.NET、64位的CAT.NET4BinScope、MiniFuzz、SDLRegexFuzzer、AppVerifierIE采用SDL后的效果24Source:BrowserVulnerabilityAnalysis,MicrosoftSecurityBlog27-NOV-2007采用SDL之前采用SDL之后漏洞总数降低了35%高危漏洞数降低了63%正式发布后12个月内修复的漏洞总数BSI系列模型BSI——使安全成为软件开发必须的部分BuildingSecurityIN,BSIGrayMcGraw,Cigital公司在整个软件开发生命周期中要确保将安全作为软件的一个有机组成部分。无须改变你的软件开发方法适用各种软件开发生命周期合作NIST美国国土安全部大学(加州大学戴维斯分校、普林斯顿、莱斯…)25软件安全的三根支柱三根支柱应用风险管理软件安全的接触点知识26接触点模型接触点,即在软件开发生命周期中保障软件安全一套最优方法、一种战术性方法在每一个开发阶段上尽可能地避免和消除漏洞“黑帽子”和“白帽子”27SSFSSF(SoftwareSecurityFramework)软件安全框架28监管信息/情报SSDL接触点部署策略和度量攻击模式架构分析渗透测试履约和策略安全特征和设计代码审计软件环境培训标准和需求安全测试配置管理和漏洞管理BSIMMBSI成熟度模型BuildingSecurityInMaturityModeGaryMcGraw、BrianChess和SammyMigues使用SSF对所有项目进行描述了解别人的安全项目过程,指导自己的安全项目目标是对真实的软件安全项目所开展的活动进行量化构建和不断发展软件安全行动的指南BSIMM3.02011年42个公司(Microsoft、Intel、Google、…)29BSIMM结果图30CLASP综合的轻量应用安全过程(Comprehensive,LightweightApplicationSecurityProcess(CLASP))选取了30个特定的基于角色的活动(activities),用于提升整个开发团队的安全意识,并针对这些活动给出了相应的指南、导则和检查列表31CLASP介绍基于角色项目经理、需求分析师、软件架构师、设计者、实施人员、集成和编译人员、测试者和测试分析师、安全审计员对于每个活动,CLASP描述了以下内容安全活动应该在什么时间、应该如何实施如果不进行这项安全活动,将会带来的多大的风险如果实施这项安全活动,估计需要多少成本32SAMMOWASPSAMMSoftwareAssuranceMaturityMode软件保证成熟度模型OWASP(开放Web应用安全项目)一个开放的框架,用以帮助制定并实施针对软件安全特定风险的策略评估一个组织已有的软件安全实践;建立一个迭代的权衡的软件安全保证计划;证明安全保证计划带来的实质性改善;定义并衡量组织中与安全相关的措施。33SAMM规定了四个软件开发过程中的核心业务功能治理:组织管理其软件开发的过程和活动构造:组织在开发项目中确定目标并开发软件的过程与活动验证:组织测试和验证软件的过程与活动部署:组织软件发布的相关管理过程与活动4个成熟度级别0-3级34OWASPSAMM35各模型比较36SDL文档丰富,维护更新及时较多工具支持适合大型企业BSI接触点强调开发安全重点注重实用方法上手容易BSIMM最佳实践参考他山之玉不强制实践CLASP轻量级过程;以角色及其职责为核心适合小型企业SAMM开放框架安全知识要求较低和BSIMM的安全活动能对应知识域:软件安全开发关键工作知识子域:软件安全需求和设计了解软件安全需求分析和安全设计的重要性理解软件安全设计基本原则理解影响系统安全性的6类威胁,以及威胁建模过程37软件安全需求及安全设计的重要性安全编码?安全测试?传统方法:软件发布后测试、等待修复BugGaryMcGraw:50%的安全问题由设计瑕疵引起安全提前介入,效益高,成本低38设计缺陷——举例MicrosoftBob明文存储口令,甚至将口令拿到客户端对比验证软件安全需求及安全设计的重要性软件安全需求和设计是开发安全软件的基础软件安全需求分析以风险管理为基础,建立“威胁”分析计划建立软件安全需求定义,确保软件安全需求定义正确安全需求应文档化软件安全设计软件系统的每一项需求,都应该在软件安全设计阶段认真考虑39安全设计原则最小特权权限分离最小共享完全中立心理可接受默认故障处理经济机制不信任纵深防御保护最薄弱的环节公开设计隐私保护攻击面最小化40受攻击面概念什么是受攻击面对一个软件系统可以采取的攻击方法集合,软件的功能、API、接口、资源、数据存储等都是受攻击面为什么要降低受攻击面一个软件的攻击面越大安全风险就越大41降低受攻击面的方法第一步:分析产品功能的重要性(是否必须)第二步:分析从哪里访问这些功能第三步:采取合理措施(降低特权)42受攻击面增加远程访问受限访问本地访问仅管理员访问用户访问匿名访问降低软件受攻击面策略重要等级为低的功能:攻击面大,取消该功能重要等级为中的功能:攻击面大,设置为非默认开启,需要用户配置后才予以开启重要等级为高的功能:攻击面大,关闭或限制一些接口方式,增加一些安全的保证措施或技术43降低受攻击面对于提高软件源代码安全性至关重要!减少软件
本文标题:2015版-CISP0209软件安全开发_v30
链接地址:https://www.777doc.com/doc-2955942 .html