freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

无许可的开源软件可以使用吗?
2021-08-12 14:32:55

背景

中国第一个关涉GPL协议的诉讼案件,数字天堂(北京)网络技术有限公司起诉柚子(北京)科技有限公司侵犯计算机软件著作权纠纷一案中,原告数字天堂公司起诉柚子公司发布的APICloud软件抄袭了数字天堂公司HBuilder软件中的三个插件的源代码,侵犯其多项权利[1]。

而柚子公司辩称,HBuilder软件属于应遵循GPL协议开放源代码的软件,应遵循开源,其构建衍生软件作品并不对数字天堂著作权造成侵犯。

也就是说,使用GPL协议的软件为开源软件,基于GPL协议作品产生的衍生作品也要遵循GPL协议,开放源代码。

在一审及二审判决中,法院大篇幅引用GPL v3.0协议[2]的原文,论证GPL协议对涉案插件是否具有约束力。这相当于默认了GPL协议在中国同样具有法律约束力,对于开源软件许可协议在中国司法程序中的效力认定具有重大参考意义。中国法院已经开始认同国际开源许可证的法律效力,中国绝不会成为开源许可协议违反行为的避风港。

2021年《开源安全和风险分析报告》显示,目前大约有65%的代码库中包含许可证冲突,26%的代码库使用了没有许可证或定制许可证的开源代码[3]。可见,开源软件许可证冲突、缺乏已知许可证是如今许多项目面临的问题。

因此,我们在软件审计时更要慎重,对于代码库中的开源软件要谨慎判断是否拥有相关许可证以及是否存在许可证冲突,规避不必要的法律风险。

许可证的引入

研发人员在编写代码时引入无许可的开源软件,主要有以下三种方式:

1.开源软件创建时没有分配许可证

未经许可的开源组件被引入代码库最直接的方式,就是版权所有者在创建开源组件的时候没有为其分配或选择许可证。这里有一个常见的误区:**缺乏许可证并不代表该组件可以毫无限制的进行使用。依据版权保护法,没有创作者的明确许可,任何人都没有权利对其作品进行使用、复制、散布和修改。**也就是说,这部分开源组件一旦被使用,就要承担着知识产权诉讼的危险。

2.开源组件被修改后丢失许可信息

在开发过程中,开发人员经常会对某些开源组件进行修改,使其能够执行项目所需要的功能。然而,在修改这些组件时,开发者很有可能会改变或者移除组件的头文件及许可信息,造成许可证丢失。一旦缺失许可证,就无法清晰准确地认识我们的权利范围。例如,我们不知道许可证是否提供了明确的专利授予、分发软件时是否需要开源等等。即使在不知情的情况下违反了相关许可证协议,也要承担相应法律责任。

3.使用无许可信息的开源片段代码

开发人员编写代码遇到问题时,第一反应就是去互联网上搜索,看看前人是否遇到过类似的问题。因此,开发人员有时会从CSDN、Stack Overflow这样的网站或论坛中摘取部分代码,用于实现某些特定的功能。但是,从互联网中获取的片段代码通常并不伴随适用的许可条款。这就是说,即使是无许可的片段代码,依旧面临着许可证不合规的风险。

然而,关于片段代码是否值得版权保护的问题一直存在争议。有人认为片段代码只是纯粹功能性代码,不应包含在版权保护的范围内。

例如,在Oracle与Google长达十年的版权之争上,Oracle起诉Google侵权,原因是Google在开发Android时,使用Java语言并调用了Java库中约20%应用程序编程接口(API)的11000个声明。此案最大的争议点就在于API是否可以有版权,因为有部分API在表达方式上仅有一种,Google认为这些方法的实现不应当受到著作权保护。

尽管在2021年4月5日,美国最高法院最终判定Google胜诉,认为其并未构成侵权[4]。但并不意味着使用开源功能性片段代码不存在风险,我们要依据具体情况谨慎考虑,判断是否能承担相应风险。

思考

由此可见,在编写代码期间,无许可的开源软件正在以程序员意想不到的方式引入到代码库中。据统计,现如今应用程序的70%由开源软件组成,几乎是五年前的两倍[5]。日益增长的开源组件比例要求我们在代码审计中一定要注意对其进行许可证合规检测,识别项目中使用了哪些第三方开源组件,是否拥有相应的权限。

对于第三方开源软件的审查是一件耗时耗力、成本高昂的事情。因此,使用自动化代码成分分析工具(SCA- Software Composition Analysis)[6]帮助简化许可证合规问题检测,成为了许多优秀开发团队的选择,华为、阿里、百度等国内大厂也纷纷购进SCA工具。

此外,明确第三方组件不仅能够规避不必要的许可证冲突,也会大大提升代码的安全性。据统计,大约有84%的代码库中至少包含一个未被修复的已知漏洞[7],而黑客们往往热衷于利用这样的漏洞。因此,明确项目中的第三方开源软件,也有利于我们对这样的问题做出预防和修补。

由于开源软件的概念以及绝大部分的开源协议都来源于国外,英文的开源软件许可协议在中国的法律效力问题始终存在疑虑,也并不重视开源软件的合规问题。但时代终将向前,中国与国际接轨已是大势所趋,防患于未然,才是一个软件企业乃至国家行稳致远的正道。

参考文献

[1] 数字天堂(北京)网络技术有限公司与柚子(北京)移动技术有限公司等一审民事判决书(2015)京知民初字第631号
[2] 柚子(北京)移动技术有限公司等与数字天堂(北京)网络技术有限公司侵犯计算机软件著作权纠纷二审判决民事判决书(2018)京民终471号
[3] 2021 Open Source Security & Risk Analysis Report
[4] 18-956 Google LLC v. Oracle America, Inc. (04/05/2021)
[5] Now Tech: Software Composition Analysis, Q2 2021 Forrester’s Overview Of 22 Software Composition Analysis Providers
[6] http://www.redrocket.cn/Home/Product_introduction/index.html?id=13
[7]http://www.eet-china.com/news/11464.html

本文作者:, 转载请注明来自FreeBuf.COM

# 代码安全 # 软件安全 # 开源组件安全 # 软件成分分析
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
评论 按热度排序

登录/注册后在FreeBuf发布内容哦

相关推荐
\
  • 0 文章数
  • 0 评论数
  • 0 关注者
文章目录
登录 / 注册后在FreeBuf发布内容哦
收入专辑