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


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 代码的版权的声明,赤兔团队也从来未曾提及这部分代码来自

2024-06-25

stics 据介绍,自 2018 年以来,这 20 亿多下载量来自 2,600 多个应用程序。游戏和实用程序仍然是 Flathub 应用程序最受欢迎的类别。 整体而言,Flatpak 在 Linux 桌面上取得了巨大的成功,并继续被证明是 Snaps 和 AppImage 等工具的绝

2024-07-27

为应对传统包格式存在的系统与应用无明确界限、发行版碎片化、兼容性差等问题,openKylin社区全新推出开明软件包格式,目标是为新发布软件提供高兼容性、高安全性的解决方案。   1. 什么是软件包格式 1991年10月5

2023-03-22

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

2022-09-24

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

2024-10-17

利。这种情况只会越来越糟,并迫使维护者考虑替代开源许可证以进行反击。” 企业支持 虽然货币化可以有所帮助,但另一种选择是直接企业资助,它可以提供持续的支持,而无需更改项目许可证或收取访问费用。GitHub Sponsor

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