轻量级安全开发框架CLASP及应用于DevSecOps的探讨

1、CLASP特点

可以看出,CLASP从较为广泛的角度处理安全性,它以安全作为核心,定义为一组独立的活动,并且活动必须集成到开发过程及其操作环境中,使用较为灵活。CLASP基于角色,每个角色在其中做什么工作都有指定。具备丰富的资源,特别是104个问题类型的归纳。

但是,CLASP也有其自身的不足,首先,CLASP更多关注白盒测试,24个活动中,都是规范性活动,而缺少攻击性评估活动,如渗透测试;其次,没有对这些活动按重要性进行分类,以便用户在选择时有所侧重,也便于最小集的选择;再次,对于开发团队来说,除了固有角色,需要增加一个安全顾问/安全审计员的角色,可能会带来成本的增加;最后,供应链方面,虽然有对供应商和产品的评估,但是对开源软件风险的识别方法未提及。

2、CLASP与DevSecOps的契合点

首先,理念契合。DevSecOps一个核心的理念是协同工作,开发、安全、运维团队互相参与,而CLASP中指定了每个角色应该完成的安全工作,实际上就是把安全划分到每个角色的日常工作中,让安全与开发、设计、运维等融合。并且CLASP作为轻量级过程,具有灵活性,满足DevSecOps持续快速交付的需要。但是活动(20)管理安全问题揭露过程,应该由运维人员作为主责角色,当然由项目经理/产品经理来统一协调也没有问题。

其次,内容契合。DevSecOps的要求包括:持续监控、将安全融入开发部署中、进行风险分析和威胁建模、扫描源代码和API等、扫描代码漏洞并修复等,而CLASP的活动(22)、(18)、(2)、(3)、(17)、(3)、(4)、(20)、(21)等正是规定的这些内容,只是侧重点可能要根据具体的系统来确定。

最后,对象契合。DevSecOps虽然动作是检测开发中的安全问题并修复,但其最终目的还是在快速持续开发的方法下如何保护系统资源、资产和数据的安全性,而这一点在CLASP中似乎体现的更加直接,如活动(5)、(8)、(9)、(12)、(16)、(23),以及(2)中的“识别资产/功能上的威胁”等都明确说明了对资源或数据的保护动作。

3、使用CLASP进行DevSecOps的几点思考

虽然两者之间有许多契合点,但直接将CLASP应用于DevSecOps中并不合适,可以考虑从以下五个方面改进CLASP:

1). 增加重要活动

在CLASP中增加活动“开源组件安全分析”和“安全性黑盒测试”两个活动,并且都属于“执行应用程序评估”的最佳实践。前者用于分析开发系统中的开源成分,并扫描其中的漏洞、后门、恶意代码等安全风险和开源许可证使用问题的知识产权风险。后者用于对系统进行模糊测试、渗透测试等黑盒测试。

2). 自动测试工具

测试评估中尽量使用自动化工具(每个活动对应的工具将在后期专题中归纳),并将工具集成到开发部署流程中。例如,针对最佳实践2中的威胁建模、源码安全审查、安全测试等活动均可借助自动化辅助工具实施。对于符合性验证评估工作,如活动(5)、(7)、(11)、(17)、(23)等,可使用该方面的通用工具或编写专用工具进行辅助验证。另外,与开发过程的融合,即活动(18)也可以自动化实现。

3). 安全需求列表

活动(7)-(15)是关于安全需求和安全设计的。开发前,架构师、需求描述者、设计者应当与安全人员、开发总责人等进行深入讨论,通过评审等方式形成安全需求列表,并与开发人员进行充分沟通确认。每次迭代开发时快速更新需求列表(内容尽量少)。还要制定相应的评估列表,以便于对每次开发完成的系统进行对照评估。当然,这些评估项能够自动化测试的应尽量使用工具实现。

4). 自主适应框架

对CLASP中的活动按照适用性进一步分类,并根据待开发软件的严重程度的等级,确定所需的最小安全活动集和活动执行的深度,并选取对应的自动化工具和安全需求设计列表,将时间花费降至最低水平。

5). 增强优势活动

CLASP中对于业务、资产、资源、数据等的安全相关的活动应予以保留和加强,能够发现针对用户核心资产的安全威胁,才是最有意义的。

https://www.aqniu.com/learn/47061.html

标签