微软自2004年以来采用SDL,即安全开发生命周期。之后,许多安全企业提出了S-SDLC。这一概念也得到安全行业公益组织OWASP的支持。安全性方面的SDLC是指将原本关注软件开发生命周期后期的工作,放置在软件开发生命周期的不同阶段,在不同阶段进行安全处理。我认为这是软件内生安全的一部分。因此,我仍然使用软件测试行业的传统词语:软件质量是开发的,而不是测试的。软件测试工作本身是软件开发过程工作的一部分,不是决定分离的过程。
在第二阶段需求排列中,强调确定安全需求。需要专职安全团队成员参与系统安全分析和需求整理;开发团队和安全团队识别软件中的重要安全风险,包括软件必须遵循的标准,如组织和法律、法规等。确保开发团队和安全团队之间的沟通顺利;消除团队之间的差异,达成共识。
质量门的建设立即坚持最低水平的安全接受指标。例如,具有中等水平以上安全漏洞的软件不能投入生产或进入下一个研究开发阶段。标识中,高风险漏洞的任何代码都应返回开发团队修复。一旦建立了质量门,即建立了质量制度和代码质量标准,无论应用系统发布的过程如何紧急,都不允许包含中高风险漏洞的软件投入生产。有理由说服上司和上司,确保通过质量限制后进入下一阶段。只有质量门建立后,下一步才能分析开发软件系统的攻击面。进出软件的所有命令和数据,以及软件中需要保护的有价值的数据。当然,可以采用微软迈克尔霍华德设计的相对攻击面商数方法,也可以采用卡内基梅隆的攻击面测量方法进行攻击面分析,确定代码中最重要、最容易攻击的区域,确保在开发和测试中关注这些攻击面。
进攻面分析完成后,进行威胁建模,威胁建模可以帮助开发商了解应用程序需要哪些安全控制,从一开始就构建安全性。通过模塑过程,掌握需要保护哪些资产和资源,获得这些资产和资源的入口和访问点,建立威胁优先级矩阵,为每个威胁制定缓和措施。无论是进行攻击面分析还是威胁建模,都是建立的质量门,当然也可以称之为安全门。建立Devops或DevSecOps也必然有这一环节。建立安全门需要安全人员具有建立安全代码规范的能力、代码安全漏洞识别能力和缺陷识别能力,传统安全人员多集中在应用安全水平的能力上,建立质量门需要安全人员、测试人员、开发人员等合作但是现在有一种更简单、更高效的方法,基于SAST技术的代码安全检测工具,内置了大量的安全检测器,包括安全代码规范、运行中的缺陷和安全漏洞的规则检测器,企业可以根据工具本身提供的全量检测器定制自己的检测器集合,这个检测器集合可以确定为安全门和质量门。当然,一些企业有特定的安全检查要求,可以在工具中增加定制规则,真正创造适合企业自身的品质门。通过自动化检测工具,不仅高效,而且客观公正地保证质量门的落地性,对任何团队和开发人员都是公平的,如果你的代码不能跨越质量门,就不能提交SVN和Git,不能与团队的代码整合。国内外有很多这样的工具,但国内真正自主可控的检测工具比较少。例如,Sinesafe可以说是国内最成熟、最自主、最可控的、具有专利技术的代码安全检测工具,是企业国产化替换的优先工具。