Day2_软件安全开发生命周期精编版

上传人:ahu****ng1 文档编号:145294079 上传时间:2020-09-18 格式:PPTX 页数:74 大小:1.47MB
返回 下载 相关 举报
Day2_软件安全开发生命周期精编版_第1页
第1页 / 共74页
Day2_软件安全开发生命周期精编版_第2页
第2页 / 共74页
Day2_软件安全开发生命周期精编版_第3页
第3页 / 共74页
Day2_软件安全开发生命周期精编版_第4页
第4页 / 共74页
Day2_软件安全开发生命周期精编版_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《Day2_软件安全开发生命周期精编版》由会员分享,可在线阅读,更多相关《Day2_软件安全开发生命周期精编版(74页珍藏版)》请在金锄头文库上搜索。

1、软件安全开发生命周期,软件安全开发生命周期(SDL) 基于WEB应用程序的SDL,目录,简介 安全需求分析 安全设计 安全编程 安全测试 安全部署及安全响应,软件安全开发生命周期,简介 安全开发周期,即Security Development Lifecycle (SDL),是微软提出的从安全角度指导软件开发过程的管理模式。SDL不是一个空想的理论模型。它是微软为了面对现实世界中安全挑战,在实践中的一步步发展起来的软件开发模式。 典型的软件开发流程中,如瀑布模型,中心围绕着产品功能,完全没有安全方面的考虑。这样的开发流程可以造就功能上相对完善的软件,但是无法满足在安全上的需要。由于软件开发过程

2、中未进行任何有效的安全控制措施,导致软件开发后由于其固有的安全隐患所引起的安全事件频频发生,给黑客及恶意人员可趁之机,由此导致的经济损失不可估量。,软件安全开发生命周期,虽然目前企业和组织已经逐步意识到软件安全的重要性,但是他们把目光更多的聚焦到了软件开发后的漏洞扫描或渗透测试,尽管这个过程能够发现和解决大多数的安全隐患,但是后期的安全评估和安全整改,将带来更大的成本投入和人力投入;甚至由于开发人员的流动导致许多安全漏洞无法得到解决。据美国国家标准局(NIST)早年发表的一份调查报告估计,更好的安全控制措施将为后期安全整改的总体成本节省三分之一以上的费用,且有效规避70%以上由于软件安全隐患所

3、引发的安全事件。,软件安全开发生命周期,软件安全开发生命周期,简介 安全需求分析 安全设计 安全编程 安全测试 安全部署及安全响应,软件安全开发生命周期,安全需求分析设定安全目标 在需求分析阶段,加入以下的安全考虑 产品提供的安全功能 产品如何安全的与用户(或其它软件模块)交互 特别的,安全方面的考虑对产品开发计划的影响 产品的风险评估和威胁模型(threat modeling) 产品的缺省功能配置,软件安全开发生命周期,简介 安全需求分析 安全设计 安全编程 安全测试 安全部署及安全响应,软件安全开发生命周期,安全设计 在安全设计阶段,特别加入以下两方面的考虑 减少攻击界面。例如,对一个网络

4、软件的设计,它需要监听那些网络端口,是否可以减少监听端口的数目?那些用户可以与这些端口建立连接,是否要加强身份验证? 深层防御。底层模块的设计中,假设上层模块有可能出现安全漏洞。对传递的数据考虑进一步校验,软件安全开发生命周期,简介 安全需求分析 安全设计 安全编程 安全测试 安全部署及安全响应,软件安全开发生命周期,安全编程 独立、完整且集中的输入验证 创建并使用了独立的用户输入验证模块以完成对所有用户的输入校验,以此可带来: 统一的输入检测策略 统一的验证逻辑 统一的错误验证处理 降低升级和维护成本,软件安全开发生命周期,校验全部的程序输入 保证所有变量在使用之前都经过严格的校验,防止被污

5、染的数据进入程序。 校验全部的输入长度 通过限制输入长度,可以有效的控制一些攻击使其不给系统带来过大的威胁: SQL Inject XSS File Include ,软件安全开发生命周期,校验全部的输入类型 不同的程序所接收到的参数类型应严格区分并校验,对于非法的类型应有相关异常进行处理以防止其进入程序。 不使用任何方式验证失败的数据 当程序对某个数据校验失败时(如:校验数据类型),相关的异常处理程序应抛弃该数据并中断操作,而不应对数据进行任何的修复尝试。 对HTTP所有内容进行校验 除需对传统的HTTP GET、POST等数据进行严格校验外,还应对HTTP内所有可能使用到的字段进行校验,防

6、止字段中包含恶意字符而污染程序,如: Referer Host Cookie ,软件安全开发生命周期,校验向用户输出的数据 当程序通过查询后台数据库或其他方式从后台获取数据后,在将数据输出给用户前应对该数据进行校验,校验其中是否包含有非法字符、可执行客户端脚本等恶意信息。 使用安全的SQL查询方式 在进行SQL查询时,必须使用安全的查询方式,如:Prepared Statement,以避免查询语句中由用户恶意插入SQL语句所带来的风险。 禁止使用JavaScript进行任何校验 由于JavaScript为客户端脚本,因此任何试图使用JavaScript对用户数据进行校验的行为都可能被用户构造的

7、本地脚本所绕过,因此,所有校验工作应由服务端程序完成而不是客户端。,软件安全开发生命周期,使用安全、统一的编码或转义方式 创建并使用独立、统一的编码或转移方式,而且编码或转移中,至少应包含对以下类别数据的编码或转移: 可能造成SQL注入的数据,如:分号、单引号等 可能造成XSS的数据,如:script、javascript等 设定有安全的权限边界 所有的程序都应清楚的了解到自己能做什么,而在其所能做的范围之外,均属于其权限边界之外,应严格禁止对其权限之外的任何操作。 校验被调用的后台命令 若程序需要调用后台可执行程序,则在调用时,应通过使用完整路径或对程序进行HASH校验等方式保证程序的调用正

8、确。,软件安全开发生命周期,校验被调用的文本或配置文件 若程序需要调用后台文本或配置文件,则在调用前,应相对文件或配置文件的完整性和有效性进行检查,以确保读入的文本或配置文件是正确可用的。 确保程序所记录的日志可控 若程序需要记录额外的操作日志等信息,应保证这些日志中的某些或全部内容不来自用户输入,否则用户可能通过外部恶意提交信息的方式填充日志。,软件安全开发生命周期,简介 安全需求分析 安全设计 安全编程 安全测试 安全部署及安全响应,软件安全开发生命周期,安全测试 安全测试是什么? 在产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准

9、的过程。 安全测试目标 提升产品安全质量 尽量在发布前兆到安全问题予以修补降低成本 度量安全 当前安全测试方法有 模式匹配方法,将程序看作字符串 状态机模型,将程序看作状态机 黑盒模型,将程序看作黑盒子 白盒模型,将程序看作路径的组合,软件安全开发生命周期,安全测试 当前安全测试的问题 覆盖性 完备性 可度量性 当前安全测试困难 测试理论很难适用于安全领域 安全测试基础理论薄弱,当前测试方法缺少理论指导,也缺乏技术产品工具 测试 VS 安全测试 BUG VS 安全漏洞 (并非是BUG的一个子集) 信息泄露,WMF,LNK,SYN FLOOD漏洞是BUG吗?,软件安全开发生命周期,安全测试 假设

10、条件 测试:导致问题的数据是用户不小心构成的(只考虑提供给用户的界面) 安全测试:导致问题的数据是攻击者处心积虑构成的(考虑所有攻击界面,包括可污染/渗透传递的界面) 思考域 测试:功能本身 安全测试:功能,系统机制,外部环境,应用与数据自身安全风险与安全属性 问题发现模式 测试:违反功能定义的输出 安全测试:违反权限,能力与约束 黑盒:状态或行为异常 灰盒:未完备的约束检测 静态白盒:基于规范,软件安全开发生命周期,安全测试 安全测试与渗透测试 出发点与目的 成本 测试对象 覆盖/完备/度量 解决方案 过程参与,软件安全开发生命周期,软件安全开发生命周期,安全自身要素 安全包括了三个层次 安

11、全功能(特性) 安全策略(部署,配置 ,全局设计准则) 安全实现 安全测试是对以上几个层次的验证和度量 外部防护系统是一种补充保护,安全测试 安全功能测试 是否足够 是否实现 实现正确性 安全策略测试 是否足够 是否实现 实现正确性 代码自身安全 数据边界检测是否正确足够 体系设计是否正确足够 权限限制与检测是否正确足够 处理逻辑是否正确,软件安全开发生命周期,安全测试 黑盒思路:基于功能与边界值 FUZZ 智能FUZZ 全局数据结构 白盒思路:基于路径 源码审计 二进制静态分析 二进制数据流动态追踪分析,软件安全开发生命周期,简介 安全需求分析 安全设计 安全编程 安全测试 安全部署及安全响

12、应,软件安全开发生命周期,安全部署及安全响应 安全部署 软件需提供相应的文档和工具,指导用户如何安全的使用。 安全响应 当前任何一个软件开发模式(包括SDL在内),都无法确保发布的软件没有安全漏洞。因此,需要事先制订对应的相应模式,包括: (内部或外部发现的)安全漏洞以何种途径汇报 如何评估安全漏洞的严重级别 开发安全补丁的流程 测试安全补丁的流程 发布安全补丁的流程 如何在以后开发中避免类似的安全漏洞,等等,软件安全开发生命周期,软件安全开发生命周期(SDL) 基于WEB应用程序的SDL,目录,概述 在公开提供的 SDL 文档中,找不到专门针对如何保护 Web 应用程序或在线服务的指南。诚然

13、,大多数 SDL 非实现要求同样适用客户端/服务器和 Web 应用程序。就象威胁模型对 Web 窗体应用程序与 Windows 窗体应用程序同样重要。而对 SOAP 服务和对 Windows 服务执行最终安全审查也同样重要。但对于跨站点脚本 (XSS) 和 SQL 注入等与 Web 相关的漏洞会是怎样的情况呢?如果 SDL 如此注重防御客户端/服务器应用程序的缓冲区溢出,它为什么会忽视针对在线服务发起的 XSS 攻击这一 Web 头号公敌的防御呢? 下面以JAVA编程安全为例说明。,基于WEB应用程序的SDL,简介 跨站脚本(XSS) 注入漏洞(Injection Flaws) 恶意文件执行

14、不安全的直接对象引用 跨站点请求伪造(CSRF) 信息泄露和错误处理不当 残缺的认证和会话管理 不安全的加密储存 不安全的通信 限制URL访问失效,JAVA安全编程OWASP TOP 10 AND ESAPI,简介,OWASP TOP 10 OWASP(开放Web应用安全项目- Open Web Application Security Project)是一个开放社群、非营利性组织,目前全球有82个分会近万名会员,其主要目标是研议协助解决Web软体安全之标准、工具与技术文件,长期 致力于协助政府或企业了解并改善网页应用程式与网页服务的安全性。 OWASP TOP 10是10个最关键的Web应用

15、安全问题清单。 这份名单是每隔数年更新(最近2010年)。 名单上都是那些通常很简单的,危险的安全问题。 这里是一个以在OWASP十大项目的链接。,ESAPI(Enterprise Security API) 其实简单一点来说,ESAPI就是为编写出更加安全的代码设计出来的一些API,方便使用者 调用,从而方便的编写安全的代码。它本身是开源的,同时提供JAVA版本和.NET版本。 代码下载地址: 下图显示了提供的API与OWASP列出的10个安全问题的涵盖关系:,What is an Enterprise Security API?The ESAPI Family Community Brea

16、kdown,OWASP,What is an Enterprise Security API?Addressing The OWASP Top Ten,OWASP Top Ten,OWASP ESAPI,A1: Injection,A2: Cross Site Scripting (XSS),A3: Broken Authentication and Session Management,A4: Insecure Direct Object Reference,A5: Cross Site Request Forgery (CSRF),A6: Security Misconfiguration,A7: Insecure Cryptographic Storage,A8: Failure to Restrict URL Access,A9: Insufficient Transport Layer Protection,A10: Unvalidated Redirects and Forwards,Encoder,Enc

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

当前位置:首页 > 商业/管理/HR > 管理学资料

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