1
Cyrusss 2021-07-01 01:55:10 +08:00 via Android
代码放出来就是开源,而二进制文件没关系。
|
2
Cyrusss 2021-07-01 01:58:41 +08:00 via Android 5
你说的「不干净」编译是存在的,比如微软提供的 VS Code,它的「干净」版是 VSCodium 。
|
3
vk42 2021-07-01 02:02:28 +08:00 1
那除了 Gentoo 以外的各 Linux 发行版也算“伪开源“了?
我觉得关键在于项目开源的代码是不是能完整构建可用成品,之前有些所谓开源放点代码出来但实际啥都编译不出来,只能用他们自己的二进制 |
4
AkideLiu 2021-07-01 04:06:35 +08:00 via iPhone 1
release 的时候人家放 executable 只是方便你用...既然都开源了你不信任作者编译的可以自己编译啊。
说实话哈就算源代码里面嵌入点乱七八糟的,自己编译也不会每行代码都看吧。 所以可以相对信任 |
5
neteroster 2021-07-01 05:57:33 +08:00 via Android
有可能。
信不过自己编译。 |
6
msg7086 2021-07-01 06:08:27 +08:00
是有可能的。不放心可以从头来。
|
7
lesteryu 2021-07-01 07:10:24 +08:00 via iPhone
Software supply chain attacks…
|
8
expy 2021-07-01 07:39:24 +08:00 3
一样的代码保证编译出一样的程序。
https://en.wikipedia.org/wiki/Reproducible_builds 或者用 GitHub Action 来编译发布,公开配置文件就行了,不过需要信任 GitHub 。 https://github.com/marketplace/actions/github-action-publish-binaries |
9
jorneyr 2021-07-01 08:50:29 +08:00
楼主是不是有误会: 放在 Github 管理的东西都是开源的?
|
10
cominghome 2021-07-01 08:53:29 +08:00
有可能,你可以自己编译源码
|
12
Rocketer 2021-07-01 08:58:27 +08:00 via iPhone
一样的代码用不同的编译器,编出来并不完全一样。RedHat 就是这么玩的,你拿着他的源码编译出来就是不如他。
|
13
jorneyr 2021-07-01 08:59:43 +08:00
@cathedrel Github 只是个存储用的仓库,存储的内容可以是私有的,也可以是开源的,只是大量开源的代码存储到了 Github,因为免费。
|
14
cathedrel OP @jorneyr 你这段话我本来就懂,我的问题就是:某些自称是开源的项目它们的可运行软件包是否真的是用“公开的干净的“源码编译出来的??有没有办法鉴别??有没有办法防范开源幌子下的后门和暗桩??
|
15
no1xsyzy 2021-07-01 09:15:43 +08:00 2
「开源」描述源代码的授权方式和(暗示地描述)与社区之间交互模式,提供二进制与「开源」与否无关。
比如 ries 你甚至找不到现成的可执行文件。 至于放 Github 且不开源的,我知道的就有 Mega Sync 的客户端,是 Code Review License,属于「源代码可获取许可」,应当还有 MongoDB 这种 Server Side Public License 当然,根据 Github ToS,合法版权持有者上传到 Github 的代码具有最低程度的可获取性。 |
16
no1xsyzy 2021-07-01 09:18:28 +08:00 1
|
17
j0hnj 2021-07-01 09:28:34 +08:00 via iPhone 1
release 文件是作者可以随便上传的,跟库本身的代码没有强关联
|
18
agagega 2021-07-01 09:32:13 +08:00 via iPhone 1
是的。但作者可以提供一组编译参数,让你拿它的代码以同样的参数编译出来,然后比较两个可执行文件的 hash
|
19
yfugibr 2021-07-01 09:33:56 +08:00 via Android
你去看看 v2*n, 源码只能编译得到很久以前的版本
|
20
icyalala 2021-07-01 09:43:33 +08:00 1
开源说得关键一点就是开放了源码,
"伪开源" 一般是指责那些看上去是开源的项目,但是部分或者全部源码都没公开,而是只提供 binary 的行为。 至于那些有全部源码,也提供构建后二进制的项目,无论如何都算不上伪开源。 在 binary 加入后门或者私有内容,是安全问题。 |
21
freevioce 2021-07-01 09:46:49 +08:00
提点题外话
1. 偏商业用的开源工具版本不会是最新的 而且会编译 2. 不存在绝对的安全 还有黑客恶意修改源码 只要用了无论编译不编译都会中招 |
22
shangsharon 2021-07-01 09:49:07 +08:00
@agagega 相同参数编译出的文件 hash 不一定是一样的吧
|
23
coolcoffee 2021-07-01 09:58:57 +08:00 1
印象中能做大做强的开源项目,基本上都采用了 Circleci 、Github Action 自动化构建,人工去维护 release 的成本是非常高且容易出错的。投毒的可能性很低很低,至少收益上划不来。
但是整合没开源的私有功能是非常可能的,很多开源软件也都是这么玩的,但是这样会降低社区参与度。 |
24
icyalala 2021-07-01 10:11:45 +08:00 1
|
25
3dwelcome 2021-07-01 10:16:50 +08:00
V2 不就有人放 Github 不开源,其实也没什么。
要说二进制文件有后门,全球网站下载安全系数里,github 上应该是很安全的。 |
26
skys215 2021-07-01 10:42:15 +08:00
开源=开放源代码,他开放了源代码,那就等于开源了。
但开源也有部分开源和全部开源。也有见过在 github 上只放编译好的文件,不放源代码的。 |
27
xinJang 2021-07-01 10:52:06 +08:00
引申一下,目前我们用的操作系统都是 win 或 mac 吧。
这...放了啥后门咱也不知道吧,所以重点是不想被放后门还是不爽被 github 里这个作者放了后门? |
28
lithiumii 2021-07-01 10:58:31 +08:00
我感觉楼上骂你的没看懂你的意思。
release 里的编译好的文件技术上可以是假的,可以跟仓库里的代码相比有加料,甚至完全无关,都可以做到。有些仓库甚至没有源码,只有 release,就是用 github 来分发而已 所以真正在乎的人都会自己编译 |
29
jim9606 2021-07-01 11:10:36 +08:00
Release 里的 Artifacts 是作者自己上传的,确实有这个可能。
最安全的方法肯定是自己编译,不过你没法重现作者的签名。如果你非常需要作者签名,退而求其次的方法是自行审查 CI 脚本,从可信的在线 CI 获取 Artifacts,例如 Github Actions 之类的。 |
30
AlexDec 2021-07-01 13:43:56 +08:00
不能排除,但可能性很小。一旦被发现了,开发者或组织,那不全球玩完了吗?
|
31
ikas 2021-07-01 13:52:31 +08:00
当然有可能有私货...所以你看 fdroid 都是自己编译 apk..但是如果真的多想一步..那么开源软件用的 lib,是不是也要全部引入源码编译....
|
32
muzuiget 2021-07-01 14:08:44 +08:00 1
谁告诉你 github 上一定要开源的,私有项目也完全可以只放一个 README 文件,然后 release 页放二进制文件。
本来直接用 release 页的二进制文件就是基于对作者的信任,毕竟自己编译也麻烦。 |
33
Tink 2021-07-01 14:45:44 +08:00 via Android
肯定有可能啊
|
34
Jirajine 2021-07-01 14:57:34 +08:00 via Android
reproducible build 或者通过 GitHub action 发布。
各种发行版和 fdroid 这种自行编译打包,才能确保二进制与源码对应。 |
35
solider245 2021-07-01 15:15:13 +08:00 1
印象中好像是有过类似的事情的。
理论上,代码开源之后,软件都应该你自己在本地直接编译。但是开发者打包好了,你要使用直接下载就可以了。 那么,在开发者打包和你下载这个环节确实就存在漏洞,有可能会被利用。 所以,具体还是要看你的安全性来考虑。如果你要绝对安全,那么你查看源码,然后本地编译是最安全的。 如果你要求便捷性,那就直接安装开发者提供的包就可以了 |
36
Felldeadbird 2021-07-01 15:38:21 +08:00
你可以自己编译,然后和 release 里面的做对比。人家加料,和伪开源不相关。
|
37
coosir 2021-07-01 17:14:24 +08:00 1
当然是有可能的,毕竟无法保证 release 的内容就是对应源码编译出来的
如果不在乎自己的声誉,甚至连源码里也放暗桩,很多使用者并不会细看代码 |
38
billlee 2021-07-01 17:21:05 +08:00
我想起了某个反对 fdroid 的 android 代理软件
|
39
pmispig 2021-07-01 17:54:31 +08:00
这个种情况是肯定存在的,还不少
|
40
zerofancy 2021-07-01 21:33:03 +08:00 1
有。
1. Typora 本身并不开源,只是用来收集 issue,但仍然有很多人认为 Typora 是开源的。 2. tox 的某个客户端实现 Tok ( https://github.com/InsightIM/Tok-Android )基于 c-toxcore ( GPLv3 )开发,其在 github 发布了 v1.0 的代码,而后来添加的功能在应用商店(以开源自由等说法宣传)发布版本,但并未更新 github 代码。 |
41
cdlnls 2021-07-01 21:43:09 +08:00
是有可能的,不光是 release 部分,直接 git push 上去的代码也是可以包含二进制文件的,如果代码下载下来不自己过一遍,直接打包,也是有可能发现不了的。
|
42
Trim21 2021-07-01 21:49:48 +08:00 via Android
完全有可能,release 里面的 exe 放什么都有可能。
|
46
jfdnet 2021-07-02 08:10:01 +08:00
源代码都有。你信不过可以自己编译。
|
47
kingfalse 2021-07-02 08:20:09 +08:00 via Android
源码是开源的,但是安装包啥的放上面就是图个方便,不然给你贴个百度网盘链接让你去下?
|
48
zhuweiyou 2021-07-02 09:53:25 +08:00
你可以自己编译源码, 但是源码投毒你也不知道, 不会一行一行看代码吧... 既然用了 就信任了.
|
49
ShionMashmallow 2021-07-02 10:10:08 +08:00 via Android
这种情况是有的,不开源但是 release 也会有说明吧(
比如说 Clash 两个内核 |