科技云报道原创。
过去几年,开源界一片火热,开源软件技术已全面进军操作系统、云原生、人工智能、大数据、半导体、物联网等行业领域。
数据显示,我国超九成企业在使用或正计划使用开源技术。
与此同时,全球各大开源组织相继兴起,头部科技企业均投入大量人力进行开源生态建设。
然而,随着开源软件的发展,其数量和影响力在不断的上升,开源风险也随之而来。
不恰当地使用开源软件,可能会给企业造成负面舆论甚至经济损失的风险。
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用户已居全球第二,仅次于美国。
中国作为最大的开源技术受惠者之一,并正在成为最大的反哺者之一,因话语权的不断扩大也将降低开源断供的风险。
同时,国家层面也在主导建设自己的开源社区和开源平台,开展“开源生态培育”专项行动,统筹推进建设高水平基金会,打造优秀开源项目,建设我国自己的开源生态体系。
结语
开源风险从来不是一个简单的问题,对于开源软件的风险管理,其实是一个软件生态式的管理,涉及软件开发使用过程中的各种角色。
无论是哪一方,都需要尽快提升开源安全合规意识,并遵循国际上的开源风险治理最佳实践,尽量将开源风险扼杀在源头。
来源:科技云报道
免责声明:此文内容为第三方自媒体作者发布的观察或评论性文章,所有文字和图片版权归作者所有,且仅代表作者个人观点,与 无关。文章仅供读者参考,并请自行核实相关内容。投诉邮箱:editor@fromgeek.com。
免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。