2015版-CISP0209软件安全开发_v3.0

上传人:飞****9 文档编号:131858213 上传时间:2020-05-10 格式:PPT 页数:83 大小:4.84MB
返回 下载 相关 举报
2015版-CISP0209软件安全开发_v3.0_第1页
第1页 / 共83页
2015版-CISP0209软件安全开发_v3.0_第2页
第2页 / 共83页
2015版-CISP0209软件安全开发_v3.0_第3页
第3页 / 共83页
2015版-CISP0209软件安全开发_v3.0_第4页
第4页 / 共83页
2015版-CISP0209软件安全开发_v3.0_第5页
第5页 / 共83页
点击查看更多>>
资源描述

《2015版-CISP0209软件安全开发_v3.0》由会员分享,可在线阅读,更多相关《2015版-CISP0209软件安全开发_v3.0(83页珍藏版)》请在金锄头文库上搜索。

1、软件安全开发 培训机构名称讲师名字 版本 3 0发布日期 2014 12 1生效日期 2015 1 1 课程内容 2 知识域 软件安全开发概况 知识子域 软件安全开发背景了解软件的发展和产生的安全问题了解软件安全问题产生的原因 3 软件安全的基本概念 软件的定义计算机程序 方法 规则和相关的文档资料以及在计算机上运行时所需的数据 IEEE 软件安全采用系统化 规范化 数量化的方法来指导构建安全的软件软件安全基本概念使安全成为软件开发的必须部分软件安全工程化三个支柱 风险管理 软件安全切入点 安全知识 4 软件安全问题广泛存在 软件应用广泛电脑游戏 火车票售票系统 多媒体教学手机 航天飞机 人造

2、卫星 软件安全问题广泛存在运行错误售票系统反应慢 连不上 崩溃多媒体教学系统死机黑客盗取泄漏的银行密码 安全问题日益增加 5 软件安全问题产生后果 软件安全问题的后果造成产品运行不稳定 得不到正确结果甚至崩溃可靠性 可用性被恶意攻击 导致信息泄漏 数据破坏等后果保密性 完整性一些因软件安全问题导致的严重后果售票系统瘫痪美国放射治疗仪超剂量辐射事件阿丽亚纳5号火箭首发失败事件Stuxnet病毒攻击伊朗布什尔核电站 6 漏洞情况统计 中国国家漏洞库最近七年漏洞数量情况统计 7 软件产生安全问题的原因 内因软件开发安全意识淡薄软件开发缺乏安全知识软件趋向大型化和复杂化软件第三方扩展增多外因软件使用场

3、景更具威胁 8 软件越来越复杂 9 Windows系列软件源代码行数 漏洞与软件安全 漏洞普遍存在平均每1000行程序存在20个缺陷 Dacey2003 采用严格的软件开发质量管理机制和多重测试环节 软件公司的缺陷率 千行代码 普通软件开发公司的缺陷密度为4 40个缺陷高水平的软件公司的缺陷密度为2 4个缺陷美国NASA的软件缺陷密度可达到0 1个缺陷漏洞已经成为危害软件安全的主要因素危及用户对软件的信任 业务运营 还会危及一系列关键基础设施和应用 10 知识域 软件安全开发概况 知识子域 软件安全开发的必要性理解软件安全保障的含义 思路和目标了解传统软件开发的局限性理解软件安全开发生命周期的

4、概念和必要性 11 需要安全的软件 理想的安全软件不存在安全漏洞能抵御各种攻击威胁按照预期的方式执行 dowhatisintended软件安全保障的思路通过在软件开发生命周期各阶段采取必要的 相适应的安全措施来避免绝大多数的安全漏洞 采取措施只能有效减少 但并不能完全杜绝所有的安全漏洞 12 软件安全保障 软件可以规避安全漏洞而按照预期的方式执行其功能目标 在软件开发生命周期中提升软件的安全性可信赖性 无论是恶意而为还是无意疏忽 软件都没有可利用的漏洞存在可预见性 对软件执行时其功能符合开发者的意图的信心 遵循性 将 软件开发 跨学科的活动计划并系统化 以确保软件过程和软件产品满足需求 遵循相

5、关标准 13 软件安全保障与风险管理 在软件安全保障中 需要贯彻风险管理的思想 安全就是风险管理 软件安全是以风险管理为基础安全不必是完美无缺的 但风险必须是能够管理的最适宜的软件安全策略就是最优的风险管理对策这是一个在有限资源前提下的最优选择问题防范不足会造成直接的损失 防范过多又会造成间接的损失 14 传统的软件开发局限性 15 需要安全的软件开发 软件安全开发生命周期 软件安全开发采取措施防止由于设计 开发 提交 升级或维护中的缺陷而导致的系统脆弱性20世纪末 21世纪初开始展开研究安全软件开发生命周期安全软件开发涵盖了软件开发整个生命周期通过软件开发的各个步骤来确保软件的安全性 其目标

6、是确保安全的软件得以成功 16 安全软件开发生命周期 将安全融入在设计 开发 测试等过程中融入安全在传统的过程中增加安全过程安全提前介入NIST 在软件发布以后进行修复的代价是在软件设计和编码阶段即进行修复所花代价的30倍软件系统发布以后才进行漏洞修复代价是最高的 且常常伴随着软件系统使用者的极大损失实施软件安全开发规范指南最佳实践 17 降低解决软件安全问题的代价 早期发现并改正错误有以下优点在软件开发生命周期中 后面的阶段改正错误开销比前面的阶段要高出数倍早期发现并改正错误可以减少时间和开销 18 知识域 软件安全开发概况 知识子域 软件安全开发模型及研究了解安全开发生命周期 SDL 的发

7、展历程 理解SDL的主要内容了解使安全成为软件开发必须的部分 BSI 系列模型了解综合的轻量级应用安全过程 CLASP 的主要内容了解软件保障成熟度模型 SAMM 的框架了解各个模型的特点及适用性 19 可信计算安全开发生命周期 微软 2002 1 盖茨安全开发生命周期SDL TheTrustworthyComputingSecurityDevelopmentLifecycle 自2004起 SDL作为全公司的计划和强制政策 在将安全和隐私植入软件和企业文化方面发挥了重要作用 通过将整体和实践方法相结合 SDL致力于减少软件中漏洞的数量和严重性 SDL在开发过程的所有阶段中均引入了安全和隐私

8、20 SDL发展历史 2002 1 今20世纪90年代中期到后期 Melissa 和21世纪初期 CodeRed Nimda UPnP等 出现了一系列影响重大的恶意软件事件 促使微软重新考虑开发人员安全过程和策略 21 SDL的阶段和安全活动 软件安全开发生命阶段5 2个阶段16项必需的安全活动 22 SDL每个阶段用到的工具 23 IE采用SDL后的效果 24 Source BrowserVulnerabilityAnalysis MicrosoftSecurityBlog27 NOV 2007 采用SDL之前 采用SDL之后 漏洞总数降低了35 高危漏洞数降低了63 正式发布后12个月内修

9、复的漏洞总数 BSI系列模型 BSI 使安全成为软件开发必须的部分BuildingSecurityIN BSIGrayMcGraw Cigital公司在整个软件开发生命周期中要确保将安全作为软件的一个有机组成部分 无须改变你的软件开发方法适用各种软件开发生命周期合作NIST美国国土安全部大学 加州大学戴维斯分校 普林斯顿 莱斯 25 软件安全的三根支柱 三根支柱应用风险管理软件安全的接触点知识 26 接触点模型 接触点 即在软件开发生命周期中保障软件安全一套最优方法 一种战术性方法在每一个开发阶段上尽可能地避免和消除漏洞 黑帽子 和 白帽子 27 SSF SSF SoftwareSecurit

10、yFramework 软件安全框架 28 BSIMM BSI成熟度模型BuildingSecurityInMaturityModeGaryMcGraw BrianChess和SammyMigues使用SSF对所有项目进行描述了解别人的安全项目过程 指导自己的安全项目目标是对真实的软件安全项目所开展的活动进行量化构建和不断发展软件安全行动的指南BSIMM3 02011年42个公司 Microsoft Intel Google 29 BSIMM结果图 30 CLASP 综合的轻量应用安全过程 Comprehensive LightweightApplicationSecurityProcess C

11、LASP 选取了30个特定的基于角色的活动 activities 用于提升整个开发团队的安全意识 并针对这些活动给出了相应的指南 导则和检查列表 31 CLASP介绍 基于角色项目经理 需求分析师 软件架构师 设计者 实施人员 集成和编译人员 测试者和测试分析师 安全审计员对于每个活动 CLASP描述了以下内容安全活动应该在什么时间 应该如何实施如果不进行这项安全活动 将会带来的多大的风险如果实施这项安全活动 估计需要多少成本 32 SAMM OWASPSAMMSoftwareAssuranceMaturityMode软件保证成熟度模型OWASP 开放Web应用安全项目 一个开放的框架 用以帮

12、助制定并实施针对软件安全特定风险的策略评估一个组织已有的软件安全实践 建立一个迭代的权衡的软件安全保证计划 证明安全保证计划带来的实质性改善 定义并衡量组织中与安全相关的措施 33 SAMM 规定了四个软件开发过程中的核心业务功能治理 组织管理其软件开发的过程和活动构造 组织在开发项目中确定目标并开发软件的过程与活动验证 组织测试和验证软件的过程与活动部署 组织软件发布的相关管理过程与活动4个成熟度级别0 3级 34 OWASPSAMM 35 各模型比较 36 知识域 软件安全开发关键工作 知识子域 软件安全需求和设计了解软件安全需求分析和安全设计的重要性理解软件安全设计基本原则理解影响系统安

13、全性的6类威胁 以及威胁建模过程 37 软件安全需求及安全设计的重要性 安全编码 安全测试 传统方法 软件发布后测试 等待修复BugGaryMcGraw 50 的安全问题由设计瑕疵引起安全提前介入 效益高 成本低 38 设计缺陷 举例MicrosoftBob明文存储口令 甚至将口令拿到客户端对比验证 软件安全需求及安全设计的重要性 软件安全需求和设计是开发安全软件的基础软件安全需求分析以风险管理为基础 建立 威胁 分析计划建立软件安全需求定义 确保软件安全需求定义正确安全需求应文档化软件安全设计软件系统的每一项需求 都应该在软件安全设计阶段认真考虑 39 安全设计原则 最小特权权限分离最小共享

14、完全中立心理可接受默认故障处理经济机制不信任纵深防御保护最薄弱的环节公开设计隐私保护攻击面最小化 40 受攻击面概念 什么是受攻击面对一个软件系统可以采取的攻击方法集合 软件的功能 API 接口 资源 数据存储等都是受攻击面为什么要降低受攻击面一个软件的攻击面越大安全风险就越大 41 降低受攻击面的方法 第一步 分析产品功能的重要性 是否必须 第二步 分析从哪里访问这些功能第三步 采取合理措施 降低特权 42 降低软件受攻击面策略 重要等级为低的功能 攻击面大 取消该功能重要等级为中的功能 攻击面大 设置为非默认开启 需要用户配置后才予以开启重要等级为高的功能 攻击面大 关闭或限制一些接口方式

15、 增加一些安全的保证措施或技术 43 降低受攻击面对于提高软件源代码安全性至关重要 减少软件受攻击面 44 威胁建模 什么是威胁建模威胁建模是了解系统面临的安全威胁 确定威胁风险并通过适当的缓解措施以降低风险 提高系统安全性的过程 为什么要威胁建模帮助在设计阶段充分了解各种安全威胁 并指导选择适当的应对措施对可能的风险进行管理可以重新验证其架构和设计有助于软件的受攻击面降低 45 威胁建模流程 确定对象识别威胁评估威胁消减威胁 46 威胁 降低威胁 漏洞 攻击者 威胁建模流程 47 STRIDE建模方法 STRIDE建模微软SDL中提出发现或纠正设计级 design level 的安全问题 4

16、8 理解STRIDE威胁 49 消减威胁举例 50 消减威胁 知识域 软件安全开发关键工作 知识子域 软件安全编码理解通用安全编码准则 验证输入 避免缓冲区溢出 程序内部安全 安全调用组件 禁止使用不安全函数等理解使用安全编译技术对提高编码安全水平的作用 了解常用安全编译技术理解源代码审核的目的及方式 了解常见源代码静态审核工具 51 通用安全编码准则 验证输入避免缓冲区溢出程序内部安全安全调用组件禁止使用不安全函数 52 验证输入 安全程序第一道防线是检查每一个不可信的输入DirectXMIDI库 难以检查所有的输入 可能导致IE被恶意利用检查 验证或者过滤输入不让恶意数据进入程序后续处理类似网络中部署防火墙何处检查最初接收数据时 第一次 使用数据时 53 验证输入 常见输入源 命令行参数数量 数据格式 内容环境变量环境变量可能超出期望有的环境变量存储格式存在危险文件不信任可以被不可信用户控制的文件内容不信任临时文件网络来自网络的数据是 高度不可信的 其他来源 54 验证输入 常见数据类型 字符串确定合法范围 拒绝非法字符 串 0 NIL 行结束编码0 x0a unix 0 x0d0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号