被多个发行版采用的开源软件,竟存在无许可证的依赖项


tea 是 Gitea 的 CLI 前端命令行程序,已被 Manjaro 、Arch Linux 等多个 Linux 发行版采用。但网友 Artemis Everfree 在打包 tea 程序的时候,意外发现该程序的多个依赖项都没有明确的开源许可。 

举个例子,在使用 Golicense(一个扫描 Go 程序的依赖性及许可的工具)进行扫描后,扫描结果显示:

🚫 gitea.com/noerw/unidiff-comments <license not found or detected>

这是一个 Go 的文件差异解析器 ,Artemis 进一步检查了这个 gitea.com/noerw/unidiff-comments 依赖,发现这个 unidiff-comments 包实际上只是 GitHub 上 godiff 项目的镜像,针对 Go 模块进行了单独打包。

而更搞的是:原版 godiff 仓库就是没有许可证的,而且已经六年没有更新了。unidiff-comments 的作者 noerw 也意识到自己 Fork 了一个无许可的项目,早在 2020 年就在原始仓库提过 Issue 让作者加一个开源许可证,但一直没有得到回应。

不过,在 Artemis Everfree 关于此事的博客引起热议之后,有网友联系到了原作者,原作者惊奇地评论道:“这是 7 年前的项目啊,当初实在是没想到有人会用我的代码,所以就没管许可证的事情。不过如果它能提供帮助,那我就添加一个 MIT 许可证好了。”

关于这个依赖项的问题暂时得到了解决,但这也反映了一些问题: Linux 发行版只关注软件包自身的许可证,但对该软件包的依赖树缺乏审查。要知道,GNU 自由系统发行指南上明确规定:

  • 发行版的信息和源文件必须按照合适的自由许可证提供。
  • 发行版不应该带有非自由软件的资源库,或安装非自由软件的指导。
  • 发行版也不应该指向未承诺只包含自由软件的第三方资源库。
  • 发行版的开发者尽力避免非自由软件,并承诺一旦发现有非自由程序就移除。

而此次众多的 Linux 发行版中存在着不满足许可条款的 go 软件包,里面包含大量无许可的代码,这显然不符合发行指南的要求。

当然问题肯定不止于 Go 包,只是静态编译依赖项的生态进一步加剧了 Linux 分发基础设施的脆弱性。

静态链接意味着将程序的依赖项直接嵌入到程序中,它与动态链接(或动态加载)相反,动态链接将依赖库保存在单独的文件中,这些文件在程序启动(或运行时)时加载。

静态链接会使依赖项成为程序的一个组成部分,不能轻易地被另一个版本取代。如果其中一个库易受攻击,则必须将整个程序重新链接到新版本。

长期以来,Linux 发行版(Debian / Fedora /Gentoo 等)都在反对静态链接、固定依赖和依赖捆绑,但收效甚微,因为 Go 和 Rust 这些编程语言完全依赖于静态链接,而这些语言的生态仍在不断发展壮大。这导致发行版每纳入一个新的 GO/Rust 软件,就需要对它自身以及爆炸性的依赖树逐一盘查许可,这对审查工作是非常沉重的负担。

另外,该事件在 Reddit 帖子的热议也暴露另一个问题 —— 大多数开发者对开源许可证的重要性没有明确的认知,对不同许可证之间的差异也只是一知半解,开源许可的科普之路任重而道远。


相關推薦

2023-06-29

并始终向上游发送我们的代码,遵守我们产品使用的开源许可证,其中包括GPL。当我说我们遵守适用于我们代码的各种开源许可证时,我说的是事实。有那么多的人对开源软件和GPL产生如此多的误解,我感到震惊和失望,特别是

2022-07-01

如果用户直接从官方下载了上述版本的免费 Elasticsearch 发行版,并且基于 Elasticsearch 向第三方提供服务,那么按照 Elastic License 的条款,这已经违反了使用许可,Elastic 会保留追究权利。 因为从 Elasticsearch 6.3 开始,原本闭源的

2022-05-19

区,并基于 deepin 衍生出 UbuntuDDE、Manjaro deepin 等多个发行版本。 从发展历程上看,深度社区从成立、壮大到建设“根”社区,7年一步,用产品和技术积累,用开源文化和社区机制引领中国开源操作系统发展,得到了国

2021-11-25

,Debian 除了遵循 copyleft 之外,也遵循着一些其他的自由许可证。所以当时的 Debian 在自由软件方面还存在一些问题,因为它没有向 Debian 之外去明确其自由软件的理念。 ” Bruce Perens 在后来的文章回忆说。 这个草案在 Debian 开

2023-02-24

提供对远程目标的正确权限。 Kubernetes Pass-through 随企业许可证一起提供,使外部编排器能够控制节点内的 Kubernetes API 功能。 SSH 密钥上传 通过多个用户简化了 TrueNAS 上的管理。 无 Root 登录错误修复和改进 简化了非根用户

2022-08-20

择等内容。 除了 Meta,之后 Felix Krause 还发现 TikTok 也会采用类似的方式来收集用户数据。 为了让所有用户都可以清楚地看到通过应用内浏览器注入的 JavaScript 代码,安全研究员 Felix Krause 推出了一个全新的开源工具 —— InApp

2023-04-04

他功能增强和错误修复。此外开发团队还向 Pyodide 添加了多个新的软件包,包括 fastparquet, pynacl 和 mypy 的二进制包。 Pyodide 0.23.0 主要变化: 升级到 Python 3.11.2 Pyodide 0.23 使用 CPython 3.11.2,除了许多新特性和功能增强外,它

2023-04-28

行时没有保留 Apache 软件基金会和 Apache StreamPark 的 LICENSE(许可证)和 NOTICE(告知)文件。 此外,我们在对方的网站上和公众号等媒体平台也找不到任何关于使用 StreamPark 代码的版权的声明,赤兔团队也从来未曾提及这部分代码来自

2022-07-15

bution documents to learn how you can take part in improving Furion. 许可证 / License Furion 采用 MulanPSL-2.0 开源许可证。 Furion uses the MulanPSL-2.0 open source license. Copyright (c) 2020-2022 百小僧, Baiqian Co.,Ltd. Furion is licensed under Mulan

2023-03-22

一致的方式来理解和衡量 OSS 的风险。OSS 中的风险管理从许可证管理开始,然后演变为 CVE,但我们仍然缺乏包含安全、法律和应用程序弹性的整体 OSS 风险管理方法。” 十大 OSS 风险具体包括: 风险 描述 类别 O

2022-09-24

库中删除所有依赖 python2 的项目,python2 已彻底从该发行版中移除。如果你的 Arch Linux  上仍然安装了 python2,请考虑删除它和任何 python2 软件包。 2018 年,Python 之父宣布将在 2020 年初终止对 Python 2 的支持

2021-11-12

协议,外部供应商将在 Öppna skolplattformen 和该市之间设立许可证。 此举被斯德哥尔摩市议员 Isabel Smedberg-Palmqvist 称是对 Öppna skolplattformen 的努力的验证,其团队已经投入了数百小时到开发工作中去。而有了这个解决方案,斯

2023-04-17

努力工作。” Linux 的第一个版本使用了禁止商业用途的许可证,一些早期贡献者建议其更改为自由软件许可证。1991 年秋天,Lars 带 Linus 去听了 Richard Stallman 在芬兰的演讲;于是,在贡献者的压力以及 Lars 的劝说下,Linus 在 1992

2022-04-14

但是,对开放核心和 FOSS 之间差异的了解不足可能会限制采用的优势以及业务的额外成本和风险。该报告则揭示了企业内关键决策者对开源软件与开放核心软件的一些关键看法。 研究的主要发现包括有: FOSS 可以免费获得