开源代码中的安全隐患 要从DevOps的角度 进行6个方面的预防

简介:

各行各业的组织,无论规模大小,都会使用开源应用,眼下这种趋势有增无减。在开发阶段,将源代码嵌入软件中既经济、又高效。借助于其他资源,开发人员可以将更多的精力集中于组织的内部代码。但 DevSecOps 的问题不容忽视。

据GitHub调查,94%的受访者表示至少会时不时地使用开源应用,而81%的人则经常使用。实际上,82%的开发人员透露,所在单位接受使用开源软件,而84%的人被鼓励在应用中使用开源代码。

虽然使用开源代码 还需要在持续交付中确保安全

虽然开源部件可节约时间和成本,但其许可协议中均规定了相关责任。此外,在请求下载的开源软件中,有1/16的软件存在已知漏洞。

在瀑布开发模式中,开源部件存在漏洞显然让人头疼,但远没有现在这么严重。敏捷开发速度快,每个周期结束都应该交付可用、安全的产品用于销售。在要求持续、敏捷开发的同时,如何才能保证解决方案中不存在开源漏洞呢?

图 传统的非协调业务交付生命周期与现代持续应用安全测试方法对比 ( 来源 :Forrester,2016 年 月 日 .Amy DeMartine — 加速现代业务交付 

坚持在开发阶段发现漏洞 强化安全测试

但开源代码呢?现在,这些代码在组织的产品代码中比私有代码还要常见。Gartner于2017年2月发布的应用安全测试魔力象限报告中提到,

“到2019年,80%的应用安全测试厂商将在其产品中包含软件构成分析,而当前这一比例为40%。”

这说明在仅仅两年时间中增长 40 个百分点 。正常的应用安全产品中除了静态分析安全测试(SAST)、动态分析安全测试(DAST)和交互式应用安全测试(IAST)方案外,再加入软件构成分析(SCA),这对客户来说意味着什么呢?总的来说,Gartner的预测表明,客户可能会利用厂商的方案包来测试自己的老旧、现代、移动或组合应用。

图 应用安全测试工具类型 ( 来源 :Forrester,2017 年 月 日 .Amy DeMartine — 厂商比较 : 应用安全测试 

(小编,安全测试服务的相关介绍可参考: 你不要觉得渗透测试随便拿个工具就可以做了 要了解业务还需要给出解决方案 

防止代码出现漏洞只要三步

如今,应用安全工具越来越早地出现在软件开发生命周期(SDLC)中。最理想情况下,它们会与组织的构建工具绑定,若存在有漏洞的部件,构建就会失败,或者至少会通知相关漏洞部件的发布经理。

对于开发经理和首席安全官(CSO)来说,这样的日常做法能满足六个 DevOps 安全要求中的五项:自动化、速度、覆盖率、检测与修复。

但第六个要求“预防”呢?这正是未来最佳实践要发挥作用的地方:让开发人员去防止有漏洞的开源部件进入到代码中。为此目的,安全主管应采取如下步骤:

  1. 定义需自动实施的开源策略。 理想情况下,可利用公司的SCA工具设置任何策略,包括安全漏洞严重性、许可团队、漏洞级别及入库年限。
  2. 要求开发人员只下载安全部件。 使用浏览器扩展,在开发人员欲下载有漏洞的开源部件时,发出警告。
  3. 利用集体智慧 , 采用同类公司已实施过的策略 , 包括类似垂直行业(如健康和金融服务)开发者实施的策略。还可以利用相同规模组织实施过的策略。学习他人经验,占据主动,拒安全漏洞于代码之外。

精心规划 实践安全开发生命周期SDL 保证安全

持续交付与组合应用的安全性很快将成为日常活动。要确保下一步的最佳实践—能力最终左移至开发人员,防止安全漏洞进入到代码中。在这个方面绿盟科技已经总结并实践了一套安全开发生命周期SDL

我们不仅希望自己更少遇到风险,更希望自己遇到风险之后能够有足够强的能力应对。针对一个企业来说,开发人员应该通过安全培训来具备足够强的安全风险意识和安全开发能力。对于企业的安全管理,应该要具备一套健全的安全开发规范制度和系统上线运营安全流程。在一个互联网金融的项目上线之前,应该做好完善的安全准备,建立各个层面的安全防线,从项目的各个阶段引入安全控制,从源头上来避免安全风险。一个完善的开发项目应该引入SDL(Security Development Lifecycle,安全开发生命周期)流程,从安全风险管理的视角来避免安全风险。

SDL从需求阶段、设计阶段、实施阶段、测试阶段和发布响应阶段来引入安全管理。SDL的各个阶段相关内容可参考上图。



原文发布时间:2017年8月23日

本文由:security intelligence发布,版权归属于原作者

原文链接:http://toutiao.secjia.com/prevent-opensource-security-risks

本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站

相关文章
|
2月前
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率
DevOps实践中,如何平衡开发速度和安全审核的效率
|
16天前
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
在DevOps实践中,确保安全审核和合规性至关重要。通过自动化合规审查、持续安全集成、基础设施即代码管理、敏捷合规框架、跨部门合作、教育与培训、实施DevSecOps模型、使用安全编码技术、整合正确工具及采用安全即代码等措施,组织能有效管理并降低合规与安全风险,促进高效可靠的DevOps文化发展。
|
16天前
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率
在DevOps实践中,为平衡开发速度与安全审核效率,可采取自动化安全测试、安全编码实践、持续监控与日志分析、集成安全工具、合规性代码审查、基础设施即代码、权限和访问控制、安全培训、漏洞及补丁管理和持续反馈改进等措施,确保高效安全的开发流程。
|
26天前
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
DevOps实践中的安全审核和合规性
|
26天前
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率?
DevOps实践中,如何平衡开发速度和安全审核的效率?
|
29天前
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
DevOps实践中的安全审核和合规性
|
2月前
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
DevOps实践中的安全审核和合规性
|
4月前
|
Java Devops 持续交付
探索Java中的Lambda表达式:简化代码,提升效率DevOps实践:持续集成与部署的自动化之路
【8月更文挑战第30天】本文深入探讨了Java 8中引入的Lambda表达式如何改变了我们编写和管理代码的方式。通过简化代码结构,提高开发效率,Lambda表达式已成为现代Java开发不可或缺的一部分。文章将通过实际例子展示Lambda表达式的强大功能和优雅用法。
|
4月前
|
运维 Devops Java
DevOps 工具链:从代码到生产
【8月更文第30天】在现代软件开发中,DevOps(Development 和 Operations 的结合)已成为确保快速而可靠的软件交付的关键方法。DevOps 通过自动化流程将软件开发与 IT 运维相结合,从而实现持续集成 (CI) 和持续部署 (CD)。本文将介绍一个典型的 DevOps 工具链,并提供实际的代码示例来帮助您理解如何将这些工具集成在一起。
163 5
|
4月前
|
Kubernetes 监控 Devops
【独家揭秘】.NET项目中的DevOps实践:从代码提交到生产部署,你不知道的那些事!
【8月更文挑战第28天】.NET 项目中的 DevOps 实践贯穿代码提交到生产部署全流程,涵盖健壮的源代码管理、GitFlow 工作流、持续集成与部署、容器化及监控日志记录。通过 Git、CI/CD 工具、Kubernetes 及日志框架的最佳实践应用,显著提升软件开发效率与质量。本文通过具体示例,助力开发者构建高效可靠的 DevOps 流程,确保项目成功交付。
85 0