科技云报道:开源真的香,风险知多少?

news/2024/7/10 19:44:32 标签: 科技, 开源

科技云报道原创。

过去几年,开源界一片火热,开源软件技术已全面进军操作系统、云原生、人工智能、大数据、半导体、物联网等行业领域。

数据显示,我国超九成企业在使用或正计划使用开源技术。

与此同时,全球各大开源组织相继兴起,头部科技企业均投入大量人力进行开源生态建设。

然而,随着开源软件的发展,其数量和影响力在不断的上升,开源风险也随之而来。

不恰当地使用开源软件,可能会给企业造成负面舆论甚至经济损失的风险。

2021年12月,抖音海外版TikTok上线了一款名为TikTok Live Studio的APP,但不久其下载页面就被删除。

TikTok官方对此事做出回应,原因是该APP违反GPL许可证,使用了GPL许可证下的开源软件源码,却没有按照GPL许可证要求开源

近年来,类似抖音因违规使用开源软件而引发开源合规风险的案例屡有发生。

开源软件的风险并不止于此,看似免费使用的开源代码之下,暗藏着多重风险。

在这里插入图片描述

开源软件的风险

一般来说,开源软件的风险可能来自四个方面:

安全风险
其中又分为开源软件本身的安全漏洞导致的风险,和目前关注度很高的软件供应链攻击的风险。

根据Sonatype 2021年的报告,29%的流行项目包含了已知的第三方库安全漏洞,也就是说接近1/3的软件项目都包含了已知安全漏洞,足以可见安全漏洞的普遍性。

而软件供应链方面的安全问题,是比较难以发现的。

例如Log4Shell与Spring4Shell是2021-2022年影响非常广泛的两个安全漏洞。

这类安全漏洞的特点在于,通过对供应链上游软件进行攻击,进而可以影响大量下游使用的软件。

在这种情况下,开源软件来源的安全把控非常重要,但目前开源软件供应链面临的最大挑战,就是企业自己都不知道用了哪些开源软件,大公司已经开始关注到开源合规治理的内容,但是很多小公司还没有这个意识。

法律风险
其中又分为许可证协议和专利方面的风险。

常见的许可证主要有GPL、LGPL、AGPL、MPL、MIT、BSD、Apache,各个许可证还包含不同版本。根据使用条件不同,可以将这些许可证大致分为两类:Copyleft 许可证和宽松许可证(permissive license),主要对使用、修改和分发的场景作出相应约束。

由于目前很多的开源项目里面嵌套着其他开源项目,那么可能存在内部许可证上的冲突。对于代码组件的分析,以及对组件背后相应许可证是否冲突,需要专业的分析。

如果未按照开源许可证的规定,履行开源合规义务,可能会造成侵权而遭到索赔、诉讼、产品下架、商誉受损等风险。

在专利方面,一种是本身的创建者/贡献者实现的专利,有可能预埋专利陷阱,另一种是第三方专利维权风险。此外,还有商标侵权及出口管制方面的风险。

运维风险
如果企业自己没有能力支撑,或没有商业公司帮忙的话,开源项目的维护成本也很高。

断供风险
俄乌事件后,GitHub不允许俄罗斯开发人员下载代码,甚至把俄罗斯账号的代码提交删掉,这一“断供”事件为全球开发者敲响了警钟。

此外,2022年1月,Faker.js 的作者主动恶意破坏自己的项目后“删库跑路”,甚至还注入了导致程序死循环的恶意代码,引起众多应用程序崩溃,瞬间引发了开源圈“震动”。

直面开源软件的风险

面对开源软件的种种风险,企业和开发者应如何安全合规地使用开源技术,合理“避坑”呢?

事实上,无论是开源还是闭源,本质上都是软件,都会存在安全漏洞,不能因为害怕风险而拒绝使用开源软件。

因此,业内专家提出了一些应对开源安全风险问题的办法,从多个角度来提升开源软件的安全性。

首先,针对整个开源软件供应链安全加大关注,去寻找供应链中相对来说比较薄弱的风险点,并在这个风险点上加大投入。

中国信通院云大所开源和软件安全部副主任郭雪认为,在企业侧有三个重要的关键动作:

建立相应的开源安全管理的流程机制;
勇于盘点软件资产,建立SBOM软件物料清单,对所有的组件一目了然。
建立预警机制、维护团队和维护机制。例如,长期追踪开源软件最近是否有更新和版本发布,并检查目前使用的版本是否有安全漏洞等。安全漏洞发生后的第一时间,及时去打相应的补丁等。
其次,在使用开源软件时,需要谨慎选择开源软件,关注其开源许可证的内容及相关条件,避免潜在的法律风险。

对此,企业应当建立一个完善机制,识别企业中所使用的开源软件清单,明确对应的开源许可证及权利约束,及时规避相关合规风险。

同时,通过隔离机制避免开源许可证传染。

例如,对于MPL许可证下代码的使用,应把该许可证的代码放在单独的文件内避免许可证传染;LGPL下的代码,可采用动态链接调用该许可证的库实现隔离。

目前,国内很多大中型公司已经成立了专门的开源治理办公室,以应对开源合规问题。

据上海安势信息技术有限公司资深解决方案架构师朱贤曼介绍,在实际业务中,对商业应用比较友好的是Apache,法务风险相对较低,而AGPL、SSPL一般很多公司会直接禁用。

企业在对外发布开源项目时,如果希望商业化之后保留一个商业版本、一个社区版本,可能会选择类似GPL的许可,一方面可以收集到用户意见,也就是开源的反馈意见,用于改进商业版,同时也不希望被直接白嫖。

此外,国家层面也在慢慢重视开源合规,出台了开源技术相关的法律法规。

例如,2021年,中国人民银行、中央网信办等五部门联合发布了《关于规范金融业开源技术应用与发展的意见》,对金融机构安全可控、合规使用开源技术进行了指导和规范。

其中,《意见》明确提出:推动金融机构建立健全评估体系;支持金融机构对开源技术版权、专利、商标、声明等进行事前合规审查,梳理开源技术间依赖性等,避免法律纠纷;支持金融机构制定应急处置预案;支持金融机构加强开源技术供应链管理,通过合同或协议条款,明确开源技术提供商义务和责任等。

第三,如果企业自己没有支持开源软件的能力,建议选择有商业背景的公司,可以购买公司提供的服务。

企业可以与其签订法律合同,提出SLA或问题修复时效相关的承诺,这些开源软件背后的公司扮演了一个让供应链更牢固的角色。

最后,断供事件不可避免,中国企业还需未雨绸缪。

开源本身不限制地域,但是承载开源这件事情的通常是一个商业实体,商业实体会受到所在地区的出口管制法,或者其他制裁条例的限制。

目前,几乎所有著名的开源软件团体都位于美国,且有的许可证规定了管辖法院为美国法院,且适用法律为美国法。

这些事实无不在提醒我们,开源软件受到美国出口管制的影响。

从这个角度来看,企业内部可以建内部代码库,所依赖的东西可以将其放在内部代码库上,万一有一天访问不了国外的开源托管平台,也有备份的源码池可以获得这些代码。

从更长远的角度看,开源世界是彼此相互依赖的,在一个生态当中,谁在生态位的高端,谁就具备抵御相互依赖的打击能力。

目前,在开源代码的贡献率上,中国已经位居全球第二。

中国科技公司成为美国开源代码托管平台的重要客户,中国的GitHub用户已居全球第二,仅次于美国。

中国作为最大的开源技术受惠者之一,并正在成为最大的反哺者之一,因话语权的不断扩大也将降低开源断供的风险。

同时,国家层面也在主导建设自己的开源社区和开源平台,开展“开源生态培育”专项行动,统筹推进建设高水平基金会,打造优秀开源项目,建设我国自己的开源生态体系。

结语

开源风险从来不是一个简单的问题,对于开源软件的风险管理,其实是一个软件生态式的管理,涉及软件开发使用过程中的各种角色。

无论是哪一方,都需要尽快提升开源安全合规意识,并遵循国际上的开源风险治理最佳实践,尽量将开源风险扼杀在源头。

【关于科技云报道】

专注于原创的企业级内容行家——科技云报道。成立于2015年,是前沿企业级IT领域Top10媒体。获工信部权威认可,可信云、全球云计算大会官方指定传播媒体之一。深入原创报道云计算、大数据、人工智能、区块链等领域。


http://www.niftyadmin.cn/n/49925.html

相关文章

​力扣解法汇总1797. 设计一个验证系统

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个…

码上【call,apply,bind】的手写

一、call (1)官方用法 call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。 语法:function.call(要绑定的this值,参数,参数,…)。不一定这些参数都需要,这些参数都…

【Django】云笔记项目

一、介绍 用户可在系统中记录自己的笔记,用户的数据被存储在云笔记平台;用户和用户之间的数据为隔离存储(登陆后才能使用相关笔记功能,且只能查阅自己的笔记) 二、功能拆解 1、用户模块 注册:成为平台…

云仓仓储的运行模式是什么?

仓库能够简单地定义为一个规划空间,通常是一个用于处置和贮存货物的大型商业建筑。因而,仓储是指在这样一个规划空间中存储和处置货物所触及的一切过程。仓库中常见的货物包括:;机械零配件、建筑资料、废品农产品、家具和电子产品。仓库中的一…

2023年rabbitMq面试题汇总4(7道)

一、如何保证消息的顺序性?1. 通过某种算法,将需要保持先后顺序的消息放到同⼀个消息队列中(kafka中就是partition,rabbitMq中就是queue)。然后只⽤⼀个消费者去消费该队列。2. 可以在消息体内添加全局有序标识来实现。二、使⽤RabbitMQ增加rest服务吞吐…

UMI入门(创建react项目)

1、umI的环境要求确保 node 版本是 10.13 或以上React 16.8.0 及以上的 React2、什么时候不用 umi需要支持 IE 8 或更低版本的浏览器需要支持 React 16.8.0 以下的 React需要跑在 Node 10 以下的环境中有很强的 webpack 自定义需求和主观意愿需要选择不同的路由方案3、与其他框…

Containerd 的 Bug 导致容器被重建!如何避免?

作者简介邓宇星,SUSE Rancher 中国区软件架构师,6 年云原生领域经验,参与Rancher 1.x 到 Rancher 2.x 版本迭代,目前负责 Rancher For openEuler(RFO) 项目开发。最近我们关注到一个关于 containerd 运行时的 issue(​​https://g…

分析了 200 个 DeFi 项目,我发现了这些规律

作者:Ren & Heinrich翻译:dongdong在这篇文章中,我分享了我通过分析当前排名前 200 的 DeFi 加密项目的见解。这不是一项学术研究。尽管如此,这些发现对加密货币投资者来说具有附加值。我使用 https://defillama.com/ 的公共数…