各行各业的组织,无论规模大小,都会使用开源应用,眼下这种趋势有增无减。在开发阶段,将源代码嵌入软件中既经济、又高效。借助于其他资源,开发人员可以将更多的精力集中于组织的内部代码。但
DevSecOps
的问题不容忽视。
据GitHub调查,94%的受访者表示至少会时不时地使用开源应用,而81%的人则经常使用。实际上,82%的开发人员透露,所在单位接受使用开源软件,而84%的人被鼓励在应用中使用开源代码。
虽然使用开源代码 还需要在持续交付中确保安全
虽然开源部件可节约时间和成本,但其许可协议中均规定了相关责任。此外,在请求下载的开源软件中,有1/16的软件存在已知漏洞。
在瀑布开发模式中,开源部件存在漏洞显然让人头疼,但远没有现在这么严重。敏捷开发速度快,每个周期结束都应该交付可用、安全的产品用于销售。在要求持续、敏捷开发的同时,如何才能保证解决方案中不存在开源漏洞呢?
图
1
传统的非协调业务交付生命周期与现代持续应用安全测试方法对比
(
来源
:Forrester,2016
年
5
月
3
日
.Amy DeMartine —
加速现代业务交付
)
坚持在开发阶段发现漏洞 强化安全测试
但开源代码呢?现在,这些代码在组织的产品代码中比私有代码还要常见。Gartner于2017年2月发布的应用安全测试魔力象限报告中提到
“到2019年,80%的应用安全测试厂商将在其产品中包含软件构成分析,而当前这一比例为40%。”
这说明在仅仅两年时间中增长
40
个百分点 。正常的应用安全产品中除了静态分析安全测试(SAST)、动态分析安全测试(DAST)和交互式应用安全测试(IAST)方案外,再加入软件构成分析(SCA),这对客户来说意味着什么呢?总的来说,Gartner的预测表明,客户可能会利用厂商的方案包来测试自己的老旧、现代、移动或组合应用。
图 2 应用安全测试工具类型 ( 来源 :Forrester,2017 年 8 月 7 日 .Amy DeMartine — 厂商比较 : 应用安全测试 )
(小编,安全测试服务的相关介绍可参考:
你不要觉得渗透测试随便拿个工具就可以做了 要了解业务还需要给出解决方案
)
防止代码出现漏洞只要三步
如今,应用安全工具越来越早地出现在软件开发生命周期(SDLC)中。最理想情况下,它们会与组织的构建工具绑定,若存在有漏洞的部件,构建就会失败,或者至少会通知相关漏洞部件的发布经理。
对于开发经理和首席安全官(CSO)来说,这样的日常做法能满足六个
DevOps
安全要求中的五项:自动化、速度、覆盖率、检测与修复。
但第六个要求“预防”呢?这正是未来最佳实践要发挥作用的地方:让开发人员去防止有漏洞的开源部件进入到代码中。为此目的,安全主管应采取如下步骤:
-
定义需自动实施的开源策略。
理想情况下,可利用公司的SCA工具设置任何策略,包括安全漏洞严重性、许可团队、漏洞级别及入库年限。
-
要求开发人员只下载安全部件。
使用浏览器扩展,在开发人员欲下载有漏洞的开源部件时,发出警告。
-
利用集体智慧 , 采用同类公司已实施过的策略 , 包括类似垂直行业(如健康和金融服务)开发者实施的策略。
还可以利用相同规模组织实施过的策略。学习他人经验,占据主动,拒安全漏洞于代码之外。
精心规划 实践安全开发生命周期SDL 保证安全
持续交付与组合应用的安全性很快将成为日常活动。要确保下一步的最佳实践—能力最终左移至开发人员,防止安全漏洞进入到代码中。在这个方面绿盟科技已经总结并实践了一套安全开发生命周期SDL