CISP指定教材《注册信息安全专业人员培训教材》第十章是关于软件安全开发的。介绍了包括软件安全开发在内的相关概念,包括几种典型的软件开发生命周期模型、微软的软件开发生命周期模型、威胁建模流程、支持威胁建模的STRIDE模型、软件安全设计原则和软件安全测试方法。
我们以概述的方式介绍关键概念。要点如下:
1.软件开发生命周期模型包括瀑布模型、迭代模型、增量模型、快速原型模型、螺旋模型和净室模型。瀑布模型的一个特点是软件开发生命周期的阶段通常是不可逆的,即从需求分析到架构设计再到编码实现,就像瀑布一样,是自上而下一步步实现的。瀑布模型的另一个特点是反馈回路太长。一般在软件系统上线之前,客户不会感觉到软件产品的实现与理想要求的差距。因此,瀑布模型是基于初始需求不变的假设。在这个市场和客户需求快速变化的时代,我们都知道这个假设是不正确的。在尝试了各种模型之后,许多企业或组织最终选择了敏捷开发的短迭代增量模型。敏捷模型继承了迭代和增量模型的特点,强调价值的快速交付。
2.微软的软件开发生命周期模型是软件安全危机的典型解决方案。SDL(software development life cycle)是软件开发生命周期(software development life cycle)的缩写,由微软于2002年开发,旨在指导大型软件开发组织如何在整个生命周期内安全地开发软件。下图是SDL的阶段划分:
SDL强调对开发团队和高层管理人员进行安全意识和能力的培训,在软件需求阶段收集安全需求并进行必要的风险评估,在软件设计阶段考虑威胁建模,在软件验证阶段进行渗透测试和模糊测试。
3.威胁建模是以结构化的方式识别和评估应用系统面临的威胁,其具体过程包括建立建模对象、识别威胁、评估威胁和消除威胁四个步骤。微软提议使用STRIDE模型来有效地识别威胁。STRIDE是欺骗、篡改、否认、信息泄露、拒绝服务和特权提升的首字母的组合。我们最熟悉的是拒绝服务(Denial of Service),即黑客利用其感染的机器(俗称肉鸡)对某个业务应用服务器发起攻击,通过发送大量数据包请求耗尽目标服务器的CPU和内存资源,最终导致业务不可用。企业或组织可以使用STRIDE模型对威胁进行建模,反复进行建立建模对象、识别威胁、评估威胁、消除威胁四个步骤,直到所有威胁带来的风险都在可接受的范围内。
4.软件安全设计原则通常包括最小特权原则、默认故障处理和保护原则、不信任原则和最小化攻击面原则等十余种。比如不要轻易给运维人员root超级账号,这是符合最小特权原则的。应用程序失败后,错误号、服务器信息等敏感信息不应暴露给远程未授权用户,这符合默认的故障处理保护原则。
5.软件安全测试方法包括渗透测试和模糊测试。渗透测试是一种模拟攻击者(黑客)进行攻击,从攻击者的角度对软件系统进行测试的测试方法。模糊测试(Fuzzy testing)也称为Fuzz testing,是一种向被测系统提供意外输入以监控可能出现的异常结果并发现软件故障的方法。意外数据通常会显示出大量的异常数据,这些异常数据作为测试用例的具体输入。
本文为东方瑞通刘彤老师原创作品。未经授权禁止转载,侵权必究。