CISP0209软件安全开发(程改)课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《CISP0209软件安全开发(程改)课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CISP0209 软件 安全 开发 课件
- 资源描述:
-
1、课程内容课程内容1软件安全开发软件安全开发知识体知识域软件安全软件安全开发概况开发概况软件安全设计软件安全设计软件安全编码软件安全编码软件安全测试软件安全测试软件安全开发软件安全开发的关键工作的关键工作软件安全开发简介软件安全开发简介软件安全开发背景软件安全开发背景知识子域软件安全开发项目管理软件安全开发项目管理知识域知识域:软件安全开发概述:软件安全开发概述v知识子域:软件安全开发必要性 了解软件安全问题及其原因 了解传统软件开发的局限性和软件安全开发必要性2软件安全重要性软件安全重要性 软件危机软件危机v第一次“软件危机”-20世纪60年代 根源:汇编语言不能处理日益庞大和复杂的程序 解决
2、:高级语言的诞生-FORTRAN和Cv第二次“软件危机”-20世纪80年代 根源:大型程序:数百万行,数百人同时开发 解决 面向对象语言-C+/java/c#软件工程v第三次“软件危机”-21世纪头十年 根源:软件安全?3软件安全问题广泛存在软件安全问题广泛存在v软件应用广泛 电脑游戏、火车票售票系统、多媒体教学 手机、航天飞机、人造卫星 v软件安全问题广泛存在 运行错误 售票系统反应慢、连不上、崩溃 多媒体教学系统死机 黑客盗取泄漏的银行密码 v安全问题日益增加4软件安全问题产生后果软件安全问题产生后果v软件安全问题的后果 造成产品运行不稳定,得不到正确结果甚至崩溃 可靠性、可用性 被恶意攻
3、击,导致信息泄漏/数据破坏等后果 保密性、完整性v一些因软件安全问题导致的严重后果 售票系统瘫痪 美国放射治疗仪超剂量辐射事件 阿丽亚纳5号火箭首发失败事件 Stuxnet病毒攻击伊朗布什尔核电站5漏洞情况统计漏洞情况统计v中国国家漏洞库最近七年漏洞数量情况统计6软件安全软件安全问题原因问题原因v存在诸多安全问题的原因 软件开发周期短,工作量大,无暇顾及安全 软件设计时缺乏安全设计 软件开发人员缺乏安全编程经验 功能越来越多,软件越来越复杂 软件模块复用,可扩展性/灵活性要求高 互联网环境下的安全挑战v根本原因 存在漏洞 存在威胁7软件漏洞逐渐增加软件漏洞逐渐增加8软件越来越复杂软件越来越复杂
4、9 Windows 系列软件源代码行数系列软件源代码行数漏洞与软件安全漏洞与软件安全v漏洞已经成为危害软件安全的主要因素 危及用户对软件的信任、业务运营,还会危及一系列关键基础设施和应用v漏洞普遍存在 普通软件工程师,每千行代码(KLOC)存在20个缺陷 由于采用严格的软件开发质量管理机制和多重测试环节,软件公司的缺陷率(每千行代码)普通软件开发公司的缺陷密度为440个缺陷 高水平的软件公司的缺陷密度为24个缺陷 美国NASA的软件缺陷密度可达到0.1个缺陷10美国重视安全开发和源代码安全美国重视安全开发和源代码安全v2007年美国空军成立了“Application Software Assu
5、rance Center of Excellence”开始对所用应用软件进行源代码缺陷检测v2008年加州大选软件因为没有通过源代码安全审查而被取消v2008年美国 FDA 器械和辐射健康中心开始使用源代码缺陷检测工具对发生问题和事故的医疗设备进行检测v2008年美国电力联盟也启动系统安全检测评估11需要安全的软件需要安全的软件v安全的软件 不存在安全漏洞 能抵御各种攻击威胁 按照预期的方式执行:do what is intendeddo what is intendedv保证程序可以正常执行任务 通过在软件开发生命周期各阶段采取必要的、相适应的安全措施来避免绝大多数的安全漏洞。采取措施只能有
6、效减少,但并不能完全杜绝所有的安全漏洞。12软件安全保障软件安全保障v软件安全保障的概念 软件安全保障是对“软件可以规避安全漏洞而按照预期的方式执行其功能”的信心。这些安全漏洞或者故意设计在软件之中,或者在其生命周期被偶然插入到软件中。13软件安全保障目标软件安全保障目标v软件安全保障目标是在软件开发生命周期中提升软件的安全性,主要目的是 可可信赖性信赖性:无论是恶意而为还是无意疏忽,软件都没有可利用的漏洞存在 可可预见性预见性:对软件执行时其功能符合开发者的意图的信心。遵循遵循性性:将(软件开发)跨学科的活动计划并系统化,以确保软件过程和软件产品满足需求、遵循相关标准。-DHS,200614
7、软件安全保障与风险管理软件安全保障与风险管理v在软件安全保障中,需要贯彻风险管理的思想“安全就是风险管理”v软件安全是以风险管理为基础 安全不必是完美无缺的,但风险必须是能够管理的v最适宜的软件安全策略就是最优的风险管理对策 这是一个在有限资源前提下的最优选择问题 防范不足会造成直接的损失;防范过多又会造成间接的损失15传统的软件开发局限性传统的软件开发局限性传统软件开发教育局限性传统开发人员局限性传统软件生命周期局限性 软件教育包括软件工程、数据结构、编译原理、系统结构、程序语言等 缺乏安全开发教育 对安全问题没有的足够理解 不了解安全设计的基本原理 不知道安全漏洞的常见类型 不知道如何设计
8、针对安全的测试数据 软件生命周期包括需求分析、架构设计、代码编写、测试和运行维护五个阶段 缺乏安全介入的阶段16知识域:软件安全知识域:软件安全开发概述开发概述v知识子域:软件安全开发简介 理解安全开发有关概念,包括软件安全、安全软件开发生命周期等 了解安全软件开发生命周期有关模型研究及应用情况,包括微软SDL、BSI系列模型、CLASP和SAMM等17软件安全开发基本概念软件安全开发基本概念v软件安全开发 采取措施防止由于设计、开发、提交、升级或维护中的缺陷而导致的系统脆弱性 20世纪末/21世纪初开始展开研究v安全软件开发生命周期 安全软件开发涵盖了软件开发整个生命周期 Secure So
9、ftware Development Lifecycle 通过软件开发的各个步骤来确保软件的安全性,其目标是确保安全的软件得以成功18安全软件开发生命周期安全软件开发生命周期v将安全融入 在设计/开发/测试等过程中融入安全 在传统的过程中增加安全过程v安全提前介入 NIST:在软件发布以后进行修复的代价是在软件设计和编码阶段即进行修复所花代价的30倍 软件系统发布以后才进行漏洞修复代价是最高的,且常常伴随着软件系统使用者的极大损失v实施软件安全开发 规范指南 最佳实践19不同阶段修复漏洞的代价不同阶段修复漏洞的代价20Barry Boehm相关模型和研究相关模型和研究v安全软件开发生命周期 安
10、全设计原则 安全开发方法 最佳实践 安全专家经验v多种模型被提出和研究 可信计算安全开发生命周期(微软)BSI系列模型(Gary McGraw等)SAMM(OWASP)CLASP(OWASP)21可信计算安全开发生命周期可信计算安全开发生命周期v微软,2002.1,盖茨v安全开发生命周期 SDL(The Trustworthy Computing Security Development Lifecycle)强调开发安全的软件对于微软未来的重要性,并为此计划花费了3亿美元和2000多个工作日 自 2004 起,SDL 作为全公司的计划和强制政策,在将安全和隐私植入软件和企业文化方面发挥了重要作
11、用。通过将整体和实践方法相结合,SDL 致力于减少软件中漏洞的数量和严重性。SDL 在开发过程的所有阶段中均引入了安全和隐私。22SDLSDL使用使用vSDL 是一个安全保证过程,其在开发过程的所有阶段中引入了安全和隐私原则。vMicrosoft 将 SDL 与软件行业和客户开发组织自由共享,供他们用来开发更为安全的软件。v如何使用SDL?为了实现所需安全和隐私目标,项目团队或安全顾问可以自行决定添加可选的安全活动 开发团队应以SDL指南为指导,实施SDL的时候结合考虑组织的时间、资源和业务运营方式 Cisco、EMC、Symantec等安全公司均借鉴微软SDL中的做法CSDL23SDLSDL
12、发展历史发展历史v2002.1今 20 世纪 90 年代中期到后期(Melissa)和 21 世纪初期(Code Red、Nimda、UPnP 等)出现了一系列影响重大的恶意软件事件,促使微软重新考虑开发人员安全过程和策略24SDLSDL的阶段和安全活动的阶段和安全活动v软件安全开发生命阶段 5+2个阶段 16项必需的安全活动25SDL每个阶段用到的工具每个阶段用到的工具26序号序号工具工具需求需求设计设计实现实现验证验证发布发布1SDL过程模板和MSF-Aglie+SDL过程模板2SDL威胁建模工具3Banned.h、SiteLock ATL模板、FxCop、C/C+源代码分析工具、Anti
13、-XSS库、32位的CAT.NET、64位的CAT.NET4BinScope、MiniFuzz、SDL Regex Fuzzer、AppVerifierIE采用采用SDL后的效果后的效果27Source:Browser Vulnerability Analysis,Microsoft Security Blog 27-NOV-2007采用采用SDL之前之前采用采用SDL之后之后漏洞总数降低了35%高危漏洞数降低了63%正式发布后12个月内修复的漏洞总数BSIBSI系列模型系列模型vBSI使安全成为软件开发必须的部分 Building Security IN,BSI Gray McGraw,Ci
14、gital公司v在整个软件开发生命周期中要确保将安全作为软件的一个有机组成部分。无须改变你的软件开发方法 适用各种软件开发生命周期v合作 NIST 美国国土安全部 大学(加州大学戴维斯分校、普林斯顿、莱斯)28软件安全的三根支柱软件安全的三根支柱v三根支柱 应用风险管理 软件安全的接触点 知识29接触点模型接触点模型v接触点,即在软件开发生命周期中保障软件安全 一套最优方法、一种战术性方法 在每一个开发阶段上尽可能地避免和消除漏洞“黑帽子”和“白帽子”30SSFSSFvSSF(Software Security Framework)软件安全框架31监管监管信息信息/情报情报SSDLSSDL接触
15、点接触点部署部署策略和度量攻击模式架构分析渗透测试履约和策略安全特征和设计代码审计软件环境培训标准和需求安全测试配置管理和漏洞管理BSIMMBSIMMvBSI成熟度模型 Building Security In Maturity Mode Gary McGraw、Brian Chess和Sammy Migues 使用SSF对所有项目进行描述 了解别人的安全项目过程,指导自己的安全项目v目标 是对真实的软件安全项目所开展的活动进行量化 构建和不断发展软件安全行动的指南vBSIMM 3.0 2011年 42个公司(Microsoft、Intel、Google、)32BSIMMBSIMM结果图结果图
16、33SAMMSAMMvOWASP SAMM Software Assurance Maturity Mode 软件保证成熟度模型 OWASP(开放Web应用安全项目)v一个开放的框架,用以帮助制定并实施针对软件安全特定风险的策略 评估一个组织已有的软件安全实践;建立一个迭代的权衡的软件安全保证计划;证明安全保证计划带来的实质性改善;定义并衡量组织中与安全相关的措施。34SAMMSAMMv规定了四个软件开发过程中的核心业务功能 治理:组织管理其软件开发的过程和活动 构造:组织在开发项目中确定目标并开发软件的过程与活动 验证:组织测试和验证软件的过程与活动 部署:组织软件发布的相关管理过程与活动v
17、4个成熟度级别 0-3级35OWASPOWASP SAMMSAMM36CLASPCLASPv综合的轻量应用安全过程(Comprehensive,Lightweight Application Security Process(CLASP))v选取了30个特定的基于角色的活动(activities),用于提升整个开发团队的安全意识,并针对这些活动给出了相应的指南、导则和检查列表37CLASPCLASP介绍介绍v基于角色 项目经理、需求分析师、软件架构师、设计者、实施人员、集成和编译人员、测试者和测试分析师、安全审计员v对于每个活动,CLASP描述了以下内容 安全活动应该在什么时间、应该如何实施
18、如果不进行这项安全活动,将会带来的多大的风险 如果实施这项安全活动,估计需要多少成本38TSP-SecureTSP-SecurevTSP-Secure:安全软件开发之团队软件过程v目标 在软件设计和实施过程中减少或者消除软件漏洞,提供评估和预测其它软件开发商所交付的软件中可能存在漏洞情况的能力v为此,TSP-Secure定义了一套开发安全软件的过程和方法,并在软件开发生命周期内置入下列安全措施:漏洞分析 建立可预测的过程度量和检查点 安全编程质量管理 导致常见漏洞的设计方式 安全验证 消除以前版本软件中的漏洞39各模型比较各模型比较40SDL文档丰富,维护更新及时较多工具支持适合大型企业BSI
19、接触点强调开发安全重点注重实用方法上手容易BSIMM最佳实践参考他山之玉不强制实践CLASP 轻量级过程;以角色及其职责为核心适合小型企业SAMM开放框架安全知识要求较低和BSIMM的安全活动能对应知识域:软件安全开发的关键阶段知识域:软件安全开发的关键阶段v知识子域:软件安全设计 了解软件安全设计的重要性 理解软件安全设计基本原则 理解受攻击面概念和常用减少受攻击面的保护措施 了解威胁建模的概念和目的 理解威胁建模的关键因素及作用41安全设计的重要性安全设计的重要性v安全编码?安全测试?传统方法:软件发布后测试、等待修复Bug Gary McGraw:50%的安全问题由设计瑕疵引起 安全提前
20、介入,效益高,成本低42v设计缺陷举例 Microsoft Bob 明文存储口令,甚至将口令拿到客户端对比验证安全设计目标安全设计目标v安全设计工作目标:制定项目计划来定义安全行为 制定安全检查点来保证安全控制措施的质量 识别配置过程和变更控制过程v主要设计内容 确定访问控制机制,定义主体角色和权限 选择加密方法和算法 解决敏感数据处理问题 评估内部通信机制 确定完整性机制 43安全设计原则安全设计原则v 保护最薄弱的环节v 纵深防御v 最小特权v 最小共享v 权限分离44安全设计原则安全设计原则v 经济性原则v 保护隐私v 正确理解“秘密”v 安全的错误处理v 心理接受能力45受攻击面受攻击
21、面v受攻击面 对一个软件系统可以采取的攻击方法集合 Attack Surface Reduction,ASR 功能、API、接口、资源、数据存储等v一个软件的攻击面越大安全风险就越大46降低受攻击面的方法降低受攻击面的方法v第一步:分析产品功能的重要性 是否必须v第二步:分析从哪里访问这些功能v第三步:采取合理措施(降低特权)47受攻击面增加远程访问受限访问本地访问仅管理员访问用户访问匿名访问较少软件受攻击面较少软件受攻击面48较高受攻击面较高受攻击面较低受攻击面较低受攻击面默认执行默认关闭打开网络连接关闭网络连接同时侦听UDP和TCP流量仅侦听TCP流量匿名访问鉴别用户访问弱ACLs强ACL
22、s管理员访问普通用户访问因特网访问本地子网访问代码以管理员或root权限运行代码以Network Services、Local Services或自定义的低权限账户运行统一缺省配置用户可选的配置ActiveX控件.NET代码标记有脚本安全的ActiveX控件未标记有脚本安全的ActiveX控件非SiteLocked ActiveX控件SiteLocked ActiveX控件微软产品微软产品ASR举例举例Windows XP SP2 所有RPC都必须认证 防火墙默认开启IIS6 默认关闭 仅以Network service权限运行 默认仅支持静态文件SQL Server 2005 默认关闭xp_
23、cmdshell 默认关闭CLR和COM 网络服务Visual Studio 2005 Web服务器默认仅运行本地连接 SQL Server Express 默认仅允许本地连接49威胁建模威胁建模v威胁建模是以结构化的方式,识别、评估应用系统面临的威胁v目的 帮助在设计阶段充分了解各种安全威胁,并指导选择适当的应对措施 对可能的风险进行管理 可以重新验证其架构和设计 有助于软件的受攻击面降低50威胁建模流程威胁建模流程v确定建模对象v识别威胁v评估威胁v消减威胁51威胁建模流程威胁建模流程确定建模对象确定建模对象 应用的可信任边界之内的所有功能组件 边界之外的应用最实际部分识别威胁识别威胁 发
展开阅读全文