不懂就问: github 里面 release 部分下载的各个系统上直接可以用的软件包, win 的 exe、mac 的 dmg、 Linux 的二进制文件或者 appimage、安卓的 apk 这些,有没有可能是“伪开源”?

2021-07-01 01:46:03 +08:00
 cathedrel
比如类似 keepass 这样的 app,releases 的程序文件是另外有后门的源码编译后上传的,不是其公开在 code 部分的“干净”源码编译的?有没有这种可能??
8902 次点击
所在节点    程序员
51 条回复
freevioce
2021-07-01 09:46:49 +08:00
提点题外话
1. 偏商业用的开源工具版本不会是最新的 而且会编译
2. 不存在绝对的安全 还有黑客恶意修改源码 只要用了无论编译不编译都会中招
shangsharon
2021-07-01 09:49:07 +08:00
@agagega 相同参数编译出的文件 hash 不一定是一样的吧
coolcoffee
2021-07-01 09:58:57 +08:00
印象中能做大做强的开源项目,基本上都采用了 Circleci 、Github Action 自动化构建,人工去维护 release 的成本是非常高且容易出错的。投毒的可能性很低很低,至少收益上划不来。

但是整合没开源的私有功能是非常可能的,很多开源软件也都是这么玩的,但是这样会降低社区参与度。
icyalala
2021-07-01 10:11:45 +08:00
@shangsharon @agagega
最简单的例子,如果 C 代码里用了 __TIME__ 宏,
那编译时会被替换成编译时间,每次编译产物肯定不一样。
3dwelcome
2021-07-01 10:16:50 +08:00
V2 不就有人放 Github 不开源,其实也没什么。

要说二进制文件有后门,全球网站下载安全系数里,github 上应该是很安全的。
skys215
2021-07-01 10:42:15 +08:00
开源=开放源代码,他开放了源代码,那就等于开源了。

但开源也有部分开源和全部开源。也有见过在 github 上只放编译好的文件,不放源代码的。
xinJang
2021-07-01 10:52:06 +08:00
引申一下,目前我们用的操作系统都是 win 或 mac 吧。
这...放了啥后门咱也不知道吧,所以重点是不想被放后门还是不爽被 github 里这个作者放了后门?
lithiumii
2021-07-01 10:58:31 +08:00
我感觉楼上骂你的没看懂你的意思。
release 里的编译好的文件技术上可以是假的,可以跟仓库里的代码相比有加料,甚至完全无关,都可以做到。有些仓库甚至没有源码,只有 release,就是用 github 来分发而已
所以真正在乎的人都会自己编译
jim9606
2021-07-01 11:10:36 +08:00
Release 里的 Artifacts 是作者自己上传的,确实有这个可能。
最安全的方法肯定是自己编译,不过你没法重现作者的签名。如果你非常需要作者签名,退而求其次的方法是自行审查 CI 脚本,从可信的在线 CI 获取 Artifacts,例如 Github Actions 之类的。
AlexDec
2021-07-01 13:43:56 +08:00
不能排除,但可能性很小。一旦被发现了,开发者或组织,那不全球玩完了吗?
ikas
2021-07-01 13:52:31 +08:00
当然有可能有私货...所以你看 fdroid 都是自己编译 apk..但是如果真的多想一步..那么开源软件用的 lib,是不是也要全部引入源码编译....
muzuiget
2021-07-01 14:08:44 +08:00
谁告诉你 github 上一定要开源的,私有项目也完全可以只放一个 README 文件,然后 release 页放二进制文件。

本来直接用 release 页的二进制文件就是基于对作者的信任,毕竟自己编译也麻烦。
Tink
2021-07-01 14:45:44 +08:00
肯定有可能啊
Jirajine
2021-07-01 14:57:34 +08:00
reproducible build 或者通过 GitHub action 发布。
各种发行版和 fdroid 这种自行编译打包,才能确保二进制与源码对应。
solider245
2021-07-01 15:15:13 +08:00
印象中好像是有过类似的事情的。

理论上,代码开源之后,软件都应该你自己在本地直接编译。但是开发者打包好了,你要使用直接下载就可以了。
那么,在开发者打包和你下载这个环节确实就存在漏洞,有可能会被利用。

所以,具体还是要看你的安全性来考虑。如果你要绝对安全,那么你查看源码,然后本地编译是最安全的。
如果你要求便捷性,那就直接安装开发者提供的包就可以了
Felldeadbird
2021-07-01 15:38:21 +08:00
你可以自己编译,然后和 release 里面的做对比。人家加料,和伪开源不相关。
coosir
2021-07-01 17:14:24 +08:00
当然是有可能的,毕竟无法保证 release 的内容就是对应源码编译出来的
如果不在乎自己的声誉,甚至连源码里也放暗桩,很多使用者并不会细看代码
billlee
2021-07-01 17:21:05 +08:00
我想起了某个反对 fdroid 的 android 代理软件
pmispig
2021-07-01 17:54:31 +08:00
这个种情况是肯定存在的,还不少
zerofancy
2021-07-01 21:33:03 +08:00
有。
1. Typora 本身并不开源,只是用来收集 issue,但仍然有很多人认为 Typora 是开源的。
2. tox 的某个客户端实现 Tok ( https://github.com/InsightIM/Tok-Android )基于 c-toxcore ( GPLv3 )开发,其在 github 发布了 v1.0 的代码,而后来添加的功能在应用商店(以开源自由等说法宣传)发布版本,但并未更新 github 代码。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/786805

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX