如何将安全导入DevOps的开发流程?白帽观点创办人披露心法

为了加速企业的软件开发流程,导入DevOps是相当常见的做法,然而,近年来攻击者针对开发流程下手的情况,可说是越来越严重,如何在维持同等的开发速度之下,保有信息安全,便成为许多企业的难题。在今年的Modern Web大会上,白帽观点创办人YSc分享如何在上述的开发流程里,做到信息安全(DevSecOps)。

YSc强调,安全是每个人的工作,必须内化,而非开发完成之后才来验证产品的安全性。然而,安全也不是无限上纲,绝非发现漏洞就是不计一切代价修补到好,商业价值衡量仍是最大的前提,因此,YSc说,企业必须先界定需要保护的标的为何,创建威胁模型,进而评估风险,最终要将安全工作标准化。

有了前述的准备工作之后,就要确定应该执行的测试范围,由于开发团队的工作繁重,同时必须兼顾产品品质与推陈出新的进度等要求,势必要尽可能采取自动化的检测措施,才能在影响最小的情况下做到这些安全测试。

由于自动化工具在采用的前期,往往会出现大量误报的情况,因此YSc指出,在每次做完检测之后,就要进行调整,并持续更迭,让测试工具能更加符合企业的需求,而使得这些安全工作越做越顺畅。

论及企业盘点所需执行的安全工作,YSc说,首先就是创建威胁模型,厘清需要保护和防范的标的。虽然业界常用的模型很多,像是STRIDE、PASTA(Process for Attack Simulation and Threat Analysis)等,但无论使用那一套模型,主要的精神还是在于,企业需要保护什么数据(What)、攻击者是谁(Who)、下手的标的(Where),以及如何攻击企业(How)等。

企业想要落实DevOps的开发安全,一开始必须审查需要保护的重要资产,以及面临的攻击为何。

例如,网站上的客户数据必须严加保护,一旦遭窃就可能面临索赔、名誉扫地;若是要防范脚本小子(Script Kids)在网络上任意扫描,而成为遭受攻击的对象,那么就要检查网站是否存在暴露的访问点。

通过在开发流程中的预防和自动化检测措施,企业可减少许多遭受攻击的情况,若要更进一步,就需要通过渗透测试和漏洞奖励计划,找出前述流程无法发现的弱点。

确定了上述的情况之后,接着就是要创建测试的方法,YSc指出,OWASP推出的Testing Guide v4,甚至是Application Security Verification Standard(ASVS),便是相当值得参考的准则。若要进行弱点评估,则可采用Common Vulnerability Scoring System(CVSS)3.0版。

对于企业开发流程里,那些部分需要纳入安全工作,在持续集成(CI)和持续交付(CD)的工作中,YSc表示,从程序设计到程序代码检核,然后进行部署和交互测试的过程里,几乎都有可以提升安全的工作。

不过,YSc认为,若要在DevOps纳入安全,企业应该优先从静态应用程序安全测试(SAST)、动态应用程序安全测试(DAST),以及软件组件分析(SCA)等3个部分,开始做起。

在静态应用程序安全测试的部分而言,主要是针对程序代码完整性,进行检查,而动态应用程序安全测试则是实际执行,以检核是否出现弱点,因此所需的时间相对也较长。至于软件组件分析,是锁定产品中可能会导入的第三方函数库,检查是否存在漏洞的情况。

而无论是前述的静态或是动态的应用程序安全测试工具,企业开始采用后,可能会面临大量的误报,因此执行检测之后的漏洞管理工作,便相形更加重要,例如,确认某些问题是误报,或是影响程度较低的弱点,也有些情况通过其他防护机制缓解等,借此调整测试工具的参数,过滤掉相关问题,这样才能在日后开发的检测流程之中,集中焦点在比较需要处理的漏洞。