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

2021-07-01 01:46:03 +08:00
 cathedrel
比如类似 keepass 这样的 app,releases 的程序文件是另外有后门的源码编译后上传的,不是其公开在 code 部分的“干净”源码编译的?有没有这种可能??
9221 次点击
所在节点    程序员
51 条回复
Cyrusss
2021-07-01 01:55:10 +08:00
代码放出来就是开源,而二进制文件没关系。
Cyrusss
2021-07-01 01:58:41 +08:00
你说的「不干净」编译是存在的,比如微软提供的 VS Code,它的「干净」版是 VSCodium 。
vk42
2021-07-01 02:02:28 +08:00
那除了 Gentoo 以外的各 Linux 发行版也算“伪开源“了?

我觉得关键在于项目开源的代码是不是能完整构建可用成品,之前有些所谓开源放点代码出来但实际啥都编译不出来,只能用他们自己的二进制
AkideLiu
2021-07-01 04:06:35 +08:00
release 的时候人家放 executable 只是方便你用...既然都开源了你不信任作者编译的可以自己编译啊。
说实话哈就算源代码里面嵌入点乱七八糟的,自己编译也不会每行代码都看吧。
所以可以相对信任
neteroster
2021-07-01 05:57:33 +08:00
有可能。
信不过自己编译。
msg7086
2021-07-01 06:08:27 +08:00
是有可能的。不放心可以从头来。
lesteryu
2021-07-01 07:10:24 +08:00
Software supply chain attacks…
expy
2021-07-01 07:39:24 +08:00
一样的代码保证编译出一样的程序。
https://en.wikipedia.org/wiki/Reproducible_builds

或者用 GitHub Action 来编译发布,公开配置文件就行了,不过需要信任 GitHub 。
https://github.com/marketplace/actions/github-action-publish-binaries
jorneyr
2021-07-01 08:50:29 +08:00
楼主是不是有误会: 放在 Github 管理的东西都是开源的?
cominghome
2021-07-01 08:53:29 +08:00
有可能,你可以自己编译源码
cathedrel
2021-07-01 08:55:04 +08:00
@jorneyr 确实好像有这种误会,你能否深入讲解一下?
Rocketer
2021-07-01 08:58:27 +08:00
一样的代码用不同的编译器,编出来并不完全一样。RedHat 就是这么玩的,你拿着他的源码编译出来就是不如他。
jorneyr
2021-07-01 08:59:43 +08:00
@cathedrel Github 只是个存储用的仓库,存储的内容可以是私有的,也可以是开源的,只是大量开源的代码存储到了 Github,因为免费。
cathedrel
2021-07-01 09:13:39 +08:00
@jorneyr 你这段话我本来就懂,我的问题就是:某些自称是开源的项目它们的可运行软件包是否真的是用“公开的干净的“源码编译出来的??有没有办法鉴别??有没有办法防范开源幌子下的后门和暗桩??
no1xsyzy
2021-07-01 09:15:43 +08:00
「开源」描述源代码的授权方式和(暗示地描述)与社区之间交互模式,提供二进制与「开源」与否无关。
比如 ries 你甚至找不到现成的可执行文件。

至于放 Github 且不开源的,我知道的就有 Mega Sync 的客户端,是 Code Review License,属于「源代码可获取许可」,应当还有 MongoDB 这种 Server Side Public License
当然,根据 Github ToS,合法版权持有者上传到 Github 的代码具有最低程度的可获取性。
no1xsyzy
2021-07-01 09:18:28 +08:00
@cathedrel 唯一的检查方式是反汇编检验,担心的话不如自己重新编译。

顺便一提,Fdroid 官方仓库里的是 Fdroid 搞的自动检测差异并编译的。
j0hnj
2021-07-01 09:28:34 +08:00
release 文件是作者可以随便上传的,跟库本身的代码没有强关联
agagega
2021-07-01 09:32:13 +08:00
是的。但作者可以提供一组编译参数,让你拿它的代码以同样的参数编译出来,然后比较两个可执行文件的 hash
yfugibr
2021-07-01 09:33:56 +08:00
你去看看 v2*n, 源码只能编译得到很久以前的版本
icyalala
2021-07-01 09:43:33 +08:00
开源说得关键一点就是开放了源码,
"伪开源" 一般是指责那些看上去是开源的项目,但是部分或者全部源码都没公开,而是只提供 binary 的行为。

至于那些有全部源码,也提供构建后二进制的项目,无论如何都算不上伪开源。
在 binary 加入后门或者私有内容,是安全问题。

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

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

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

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

© 2021 V2EX