当前位置:网站首页>5个开源组件管理小技巧
5个开源组件管理小技巧
2022-08-04 05:08: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 的一大优势:能够为特定应用程序自定义现有模块的源代码。
边栏推荐
- Towards Real-Time Multi-Object Tracking (JDE)
- 深度学习21天——准备(环境配置)
- drools从下载到postman请求成功
- DataTable使用Linq进行分组汇总,将Linq结果集转化为DataTable
- 解决错误:npm WARN config global `--global`, `--local` are deprecated
- centos 安装postgresql13 指定版本
- 【云原生--Kubernetes】Pod资源管理与探针检测
- How to open a CITIC Securities online account?is it safe?
- day13--postman interface test
- C Expert Programming Chapter 4 The Shocking Fact: Arrays and pointers are not the same 4.1 Arrays are not pointers
猜你喜欢

What is the salary of a software testing student?

在被面试官说了无数次后,终于潜下心来整理了一下JVM的类加载器

小程序 + 电商,玩转新零售

See how DevExpress enriches chart styles and how it empowers fund companies to innovate their business

深度学习环境配置

For Qixi Festival, I made a confession envelope with code

【一步到位】Jenkins的安装、部署、启动(完整教程)

应届生软件测试薪资大概多少?

触觉智能分享-SSD20X实现升级显示进度条

深度学习21天——准备(环境配置)
随机推荐
备份工具pg_dump的使用《postgres》
redis中常见的面试题
[One step in place] Jenkins installation, deployment, startup (complete tutorial)
C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.1 数组并非指针
TL431的基本特性以及振荡电路
Structure function exercise
8.Haproxy 搭建Web集群
el-Select 选择器 底部固定
The symbol table
编程大杂烩(四)
数的划分之动态规划
Bolb analysis of image processing (1)
[SemiDrive source code analysis] [MailBox inter-core communication] 47 - Analysis of RPMSG_IPCC_RPC mode limit size of single transmission and limit bandwidth test
How to keep the source code confidential in the development under the burning scenario
信息学奥赛一本通 1312:【例3.4】昆虫繁殖
Turn: Management is the love of possibility, and managers must have the courage to break into the unknown
7-1 LVS+NAT load balancing cluster, NAT mode deployment
C Expert Programming Chapter 4 The Shocking Fact: Arrays and pointers are not the same 4.1 Arrays are not pointers
【C语言进阶】程序环境和预处理
C专家编程 第5章 对链接的思考 5.1 函数库、链接和载入