DevSecOps敏捷安全
上QQ阅读APP看书,第一时间看更新

1.2.2 开发阶段的安全活动

在开发阶段,绝大部分的安全活动是围绕着如何实现安全开发展开的,其中包括保证组件合规与制品库统一,基于最小攻击面原则进行代码编写,及时修复已知漏洞等内容。在开发阶段,开发人员需要确保编码安全,测试人员则应确保及早发现并阻止或缓解代码威胁。

在开发阶段,传统的安全活动包括但不限于以下几方面。

1)确保环境安全:严格控制第三方和开源组件的来源,统一制品库,对已知的开源组件、框架及时进行漏洞修复、更换无风险版本或更新升级等,避免源头的污染。

2)建立安全编码规范和安全测试标准:建立安全编码规范,对开发人员进行相应的安全培训,并通过引入相对安全的开发框架等,帮助开发人员尽可能高效地写出更加安全和可靠的代码,避免引入各类潜藏的高危安全漏洞及严重代码缺陷,进而降低代码维护成本并方便代码审查等后续工作开展。建立统一的安全测试标准,旨在确保测试工作尽可能地覆盖各种潜在的安全漏洞,从而提高软件安全属性,而不仅仅是将关注点放在软件业务功能的实现上。

3)模糊测试:一种通过对目标软件系统提供无效或非预期的输入,继而监测软件系统是否异常(如崩溃、断言、故障等),以发现如内存泄漏等异常缺陷的软件测试技术。模糊测试是一种相对较新但并不复杂的软件测试技术,其原理非常简单,在测试过程中用一个随机坏数据(即Fuzz)攻击目标程序,进而观察哪里出现了异常。模糊测试能够发现软件程序中的重要漏洞,比如与数据库或共享内存相关的漏洞。由于是利用超过可信边界的随机数据进行测试,其相较于其他通用软件安全测试技术,有时甚至会收到意想不到的检测效果,特别是对畸形文件及复杂协议有着较好的检测效果。

4)静态应用安全测试(Static Application Security Testing,SAST):一种传统的代码安全测试技术,侧重软件程序的结构测试、逻辑测试和代码测试,主要覆盖通用漏洞、缺陷及代码不规范等问题。作为在编码阶段主要使用的代码安全测试技术,SAST需要从语义上理解程序的代码、依赖关系、配置文件。

SAST主要特点如下。

·相比黑盒漏洞扫描[1]技术,SAST技术介入时间更早,可以较好地辅助程序员做安全开发,可通过IDE插件形式与集成开发环境结合,实时检测代码漏洞。漏洞发现越及时,修复成本越低。

·测试对象相比黑盒漏洞扫描技术更为丰富,除Web应用程序之外还能检测App及二进制程序的漏洞。

·较高的漏洞误报率。一般,商业级的SAST工具误报率普遍在30%以上,误报在一定程度上会降低工具的实用性,需要花费更多的时间来清除误报。

·检测时间较长。利用SAST技术扫描代码仓库,稍微大型的项目需要数小时甚至数天才能完成,这不利于持续集成和持续交付。

5)代码审计:这里的代码审计,主要是指安全专家人工检查软件源代码的安全性,以审查和指导修复潜在的安全漏洞。这一步骤是传统软件开发安全活动中主要的漏洞发现和消除手段。

[1] 黑盒漏洞扫描是黑盒漏洞检测技术的一种工作模式。