修改软件许可证使用时间_开源治理:和应用软件中的“蚁穴”说再见

第三方组件已经成为各种行业应用软件的重要组成部分。

研发人员在开发过程中习惯性地大量使用三方组件提高开发效率,一个三方组件又会依赖其它更多组件,多级依赖关系最终形成一个复杂的树状结构,这种结构的安全性对于应用的研发人员和使用人员来说都是不可知、不可控的。即使开发人员受过严格的安全培训,写出了绝对安全的代码,也可能因为某个间接引用的未知组件引入严重的安全漏洞。

从这个角度来说,未知组件中藏匿的安全风险就像千里长堤中的一个个“蚁穴”,可能导致一个庞大的建筑毁于一旦。

国内颇为常见的术语是“开源治理”。在开源软件盛行的今天,开源组件的安全威胁和license合规问题是第三方组件安全中最为常见和典型的。而软件成分分析Software Composition Analysis(SCA)则是做好“开源治理”的有效工具。SCA能够对二进制软件的组成部分进行识别、分析和追踪,分析第三方组件的信息和相关风险。

第三方组件主要存在哪些风险?

第三方组件的安全风险主要包括两种:是否存在漏洞,是否为公开可利用漏洞;license合规风险。

漏洞风险

三方组件中的很多漏洞和如何利用的信息都是公开的。攻击者入侵网络系统只是时间早晚的问题。

在CVE的统计数据中,Jenkin的CVE收录量最高(646个),其次是MySQL(624个),并分别已有15个成熟的武器化漏洞利用工具。HashiCorp的Vagrant也是一个创建和部署虚拟开发环境的常用工具,目前只有9个CVE,但其中6个都有现成的武器化利用脚本,因此从比例上来说,Vagrant也是一个高风险的开源项目。另外,Apache Tomcat、Magento、Kubernetes、Elasticsearch和JBoss的漏洞也都是攻击者的心头好。

2018至2019年,有研究发现第三方开源组件的漏洞数量增加了50%;2018年相同开源项目中的漏洞仅为421个,而在2019年,这些项目中的漏洞数量激增为968个。

8ee42c90549c76bbc370b51c9ab0fc54.png

近10年每年的开源组件漏洞数 (图源:WhiteSource)

一个最有名的开源组件漏洞利用并造成重大安全事故的案例就是Equifax数据泄露事件。2017年,美国征信巨头Equifax因未及时修复Apache Struts中的高危漏洞而导致1.45亿美国居民个人隐私信息泄露。

针对第三方组件的攻击不仅会造成数据泄露,还会影响企业的市场声誉、估值、客户关系和营收。千里之堤,溃于蚁穴。第三方组件风险就像一个个“蚁穴”,可能会对一个原本庞大稳固的系统带来难以磨灭的伤害。

c1290c39822f1f5c14b0767a15c094b7.png

License合规风险

企业在引入第三方软件时,因开源许可证的规定或变动,可能还会面临合规风险:

  1. 可能因许可证的传染性规定被迫开源,如根据GPL许可证的规定,引入许可证为GPL的软件并修改其中代码分发给他人,需将修改后的代码开源;

  2. 商业软件是否遵守开源约定未知,如部分商业软件基于开源进行二次开发后以闭源形式提供给用户,却不遵守开源许可证的署名要求;

  3. 知识产权风险易被忽略,如BSD、MIT和GPL 2.0等开源许可证并未包含明确的专利授予条款;

  4. 开源许可证之间可能不兼容;

  5. 开源软件的使用规则存在不确定性,如2018年以来Redis、MongoDB、Kafka等多个开源软件开发商已对其过去使用的开源许可证进行了修改。

一项针对1253个应用软件的调研结果显示,其中有67%的代码存在许可证不兼容的情况,且有33%的代码存在未经许可的软件。在敏捷开发环境下,一个开发项目可能涉及数百个第三方开源组件,要同时遵守数百个开源许可对于一个开发团队来说是一项极其繁杂的工作。但不遵守又会让企业面临法律诉讼风险,同样会影响到企业的日常运营和财务安全。

第三方开源组件在企业整体攻击面中占据了相当大的比例,跟踪和修复开源安全风险的迫切性逐渐凸显。虽然开源带来了很多好处,但如何做好开源治理对每个企业来说都是严峻的考验。

SCA的价值与一般步骤

如第一段所说,SCA能够识别、分析和追踪二进制软件组成部分,在实现第三方组件治理方面的主要价值包括:

  • 监控软件开发过程中使用的所有组件

  • 及时发现和修复漏洞,同时规避许可证合规风险

  • 确保开发项目所需组件或工具的兼容性

  • 更加快速安全地将产品推向市场

  • 降低原本无法预知的商业风险

  • 降低风险修复的成本

第三方组件的治理可以总结为闭环式的5个步骤,包括应用软件清单的自动梳理、开源组件的持续跟踪、安全与合规政策的制定与执行、持续安全监控、构建环境扫描。

1b9c000f73094026c4a2b31aaf2349ad.png

1. 创建应用清单

该清单需包括单个应用软件所有组件的版本号、license类型等,帮助开发和安全团队掌握每个应用中的组件情况,这是发现安全与合规风险的基础步骤。

2. 开源组件的梳理与跟踪

通过扫描工具识别目标项目中所使用的每个开源组件,包括源码、容器、二进制文件、构建依赖项、操作系统组件等等,并跟踪整个软件供应链,一般包括第三方供应商、合作伙伴和开源项目。

3. 制定和执行合规政策

开源license的合规问题对研发各部门乃至整个管理层来说都是至关重要的。因此,组织相关人员制定license使用规范并进行安全与合规培训也是开源治理中不可或缺的步骤。当然,在日常开发流程中,通过软件成分分析工具对license进行自动监控、跟踪和违规告警,也是提高工作效率的有效方法。

4. 持续监控

积极主动地发现和监控安全问题,通过SCA工具进行漏洞告警,并根据自动修复建议完成高危漏洞的及时处置。

5. 在构建环境中运行源码扫描

将license和安全扫描集成至DevOps pipeline也非常重要,在构建环境中的代码扫描能够帮助发现依赖项,提高安全性,同时也也能实现开发与安全工作的同步开展,不用割裂开来而影响敏捷开发的效率。

软件成分分析能够为研发项目带来巨大的价值,包括成本控制、质量控制、灵活性、易用性、安全性以及满足合规要求等。因此,采用了开源软件的开发团队应该在CI/CD管道中嵌入一个可靠的软件成分分析工具,更好地管控每个研发项目。

如何选择SCA工具?

一个好的分析工具应具备这些能力:

  1. 对软件成分的梳理和可视化呈现,全面发现所有三方组件以及这些三方组件之间的互相依赖关系;

  2. 全面准确地发现所有组件的漏洞,并详细反馈漏洞信息,以及问题组件的引用位置,帮助开发人员快速定位和修复漏洞;

  3. 漏洞库数据量丰富并有专人定期或自动的维护;

  4. 涵盖各类常用开源许可证,提供开源许可证的完整信息,快速定位合规风险;

  5. 支持配置文件扫描、源代码片段扫描、代码仓库集成扫描、War包扫描等多种扫描方式,降低研发人员使用成本;

  6. 能够与CI/CD流程无缝集成,如Jenkins、JIRA、禅道等,并提供Web API接口。

默安科技自主研发的SCA是默安雳鉴DevSecOps全流程解决方案的重要组成部分,更是Gartner 《2020年软件成分分析市场指南》报告中唯一推荐的中国产品,能够帮助客户管理应用中第三方组件所带来的安全、质量以及许可证合规性等方面的问题,是开源治理研究的有效落地。

雳鉴SCA内置370w+第三方组件库数据、17w+第三方组件漏洞数据,支持检测Java、Python、C/C++、C#等多种代码语言;通过第三方组件智能识别引擎和代码分析引擎,精准全面地分析数据流、控制流、符号表、配置文件等;快速定位三方组件被引用的位置和相关信息,帮助安全人员快速复现漏洞,提高研发人员修复效率;同时支持1day漏洞应急,实时更新组件漏洞库数据,并在新漏洞公布后帮助企业确认受影响的第三方组件,并完成快速修复。

acbf87be6c2c0bbeb13f15d1bd203110.png

雳鉴SCA设计架构

雳鉴SCA软件成分分析系统产品介绍已在默安科技官网更新 ,

参考注释

medium《open source analysis checklist》、helpnetsecurity《oss vulnerabilities》、towardsdatascience《3 open source security risks and how to address them》、中国信通院《企业级开源风险及治理模式研究》

fbe46e134a4d328bcba82b0f07573da3.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值