当前位置:网站首页>5个开源组件管理小技巧
5个开源组件管理小技巧
2022-08-02 03:34:00 【SEAL安全】
开源正在吞噬软件世界,SourceClear 在2020年发布的调查报告指出开源项目已呈现指数级增长趋势,2026 年预计超过 3 亿。开源软件(OSS)的出现简化了软件开发流程,这正是超过90%的组织在其应用程序中使用开源组件的原因之一。这也意味着企业代码库中拥有的代码正在从闭源自研转向开源。
开源的优势在哪里?
开源已经改变了软件行业。这种增长趋势背后的原因很明显:使用开源组件避免了“重复造轮子”,可以加快应用程序开发速度,使开发人员更加高效和富有成效。
此外,开源组件为开发人员提供了一种无缝的方式来构建代码并借助开源社区的协作工作进行应用程序开发。这意味着开发团队可以专注于其组织独有的自定义代码,同时使用开源工具和库来提高开发效率。
使用开源组件的风险
随着开源代码的日益普及,安全风险也随之而来。研究发现,开源漏洞经常出现在间接依赖项(也称为“传递依赖”)中。但问题在于,许多开源组件已经过时,并且包含修改过的或缺失的许可证,因此这些问题在开源项目可能包含的间接依赖项中特别难以找到。
以下是使用开源组件可能会面临的几个风险:
软件质量 – 使用开源代码模块会增加参与开发人员的可变性,并减少对应用于第三方代码的 QA 流程的控制。
长期维护 - 如果开源模块没有被维护,软件开发人员需要额外分配时间和精力来处理漏洞。
软件许可 – 开源组件的最终用途决定了开源许可证合规性的类型:permissive 或 copyleft。Permissive license 允许实施和分发企业软件,而 copyleft license 进一步要求使用 OSS 组件构建的软件是免费提供的,从而存在泄露信息的风险。随着大型应用程序的开源依赖项数量的增加,确认模块的版权状态和使用限制变得愈发困难。
开源软件安全 - 与质量风险类似,如果开发人员没有在开发过程中妥善解决安全问题,使用的开源组件可能会伴随安全风险。
如何有效降低开源风险?
为软件项目选择适当的开源组件可以降低与软件质量、许可和版权侵权相关的风险,在此有一些关键问题亟待解决。例如,“企业是否应该将软件细节作为商业秘密进行保护?”以及“企业在使用组件的方式是否会与开源提供商的协议相冲突?”
为帮助企业更好地了解上述开源安全风险,并帮助企业在不影响安全性的情况下利用开源组件的优势。请参考以下五个安全管理开源组件 Tips。
1. 保护软件供应链
软件供应链中某个地方引入的漏洞对源代码产生了连锁反应。现代应用程序是模块化构建的,它们由互连的内部和外部模块组装而成。因此,在进行完整的代码开发之前,应当反复自动测试软件供应链中的模块是否存在安全问题。
2. 建立自动化执行策略
添加外部开发的软件模块会带来风险,因此,组织需要调整其风险承受能力,并落实在软件开发生命周期(SDLC)的各个阶段。创建评估开源组件的内部策略是避免添加构成安全威胁的模块的有效方法。
3. 着重定位 SCA
软件成分分析(SCA)是一种保护使用开源组件的应用程序的方法。SCA 的重要性在于提高开发团队跟踪和分析外部组件(如支持库、依赖项、许可证和安全漏洞)的速度。
4. 将 SCA 工具添加到安全测试工具包
SCA 工具的可追溯性可帮助团队快速查找和解决许可证和安全问题,使其成为开源策略和现有开发工作流程不可或缺的一部分。
5. 对外部源代码的 Fork 更改
Fork 是开发人员在修改开源代码之前克隆开源代码的过程。Fork 允许跟踪代码更改,但也将原始代码与修改后的代码分开,它还利用了 OSS 的一大优势:能够为特定应用程序自定义现有模块的源代码。
边栏推荐
猜你喜欢
随机推荐
学习(二):单例模板
Mac安装MySQL详细教程
学习(四):显示FPS,和自定义显示调试
MQ-5 combustible gas sensor interface with Arduino
bluez5.50蓝牙文件传输
Chrome 里的小恐龙游戏是怎么做出来的?
最长公共子串
unity学习(五):Excel表格读取和数据类生成
跨域问题解决办法
STM32F4 CAN 配置注意的细节问题
idea中创建jsp项目详细步骤
【数据库】事务的四大特性<详解>
只出现一次的字符
【面试必看】链表的常见笔试题
Comparison between Boda Industrial Cloud and Alibaba Cloud
如何用 Lightly 进行 Debug 断点调试?
剑指Offer 33.二叉搜索树的后序遍历序列
MPU6050 accelerometer and gyroscope sensor is connected with the Arduino
音视频文件码率与大小计算
剑指Offer 36.二叉搜索树与双向链表 中序遍历