不懂就问: github 里面 release 部分下载的各个系统上直接可以用的软件包, win 的 exe、mac 的 dmg、 Linux 的二进制文件或者 appimage、安卓的 apk 这些,有没有可能是“伪开源”? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
cathedrel
V2EX    程序员
<1>不懂就问: github 里面 release 部分下载的各个系统上直接可以用的软件包, win 的 exe、mac 的 dmg、 Linux 的二进制文件或者 appimage、安卓的 apk 这些,有没有可能是“伪开源”?
  •  
  •   cathedrel 2021-07-01 01:46:03 +08:00 9990 次点击
    这是一个创建于 1573 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如类似 keepass 这样的 app,releases 的程序文件是另外有后门的源码编译后上传的,不是其公开在 code 部分的“干净”源码编译的?有没有这种可能??
    51 条回复    2023-05-21 14:23:17 +08:00
    Cyrusss
        1
    Cyrusss  
       2021-07-01 01:55:10 +08:00 via Android
    代码放出来就是开源,而二进制文件没关系。
    Cyrusss
        2
    Cyrusss  
       2021-07-01 01:58:41 +08:00 via Android   5
    你说的「不干净」编译是存在的,比如微软提供的 VS Code,它的「干净」版是 VSCodium 。
    vk42
        3
    vk42  
       2021-07-01 02:02:28 +08:00   1
    那除了 Gentoo 以外的各 Linux 发行版也算“伪开源“了?

    我觉得关键在于项目开源的代码是不是能完整构建可用成品,之前有些所谓开源放点代码出来但实际啥都编译不出来,只能用他们自己的二进制
    AkideLiu
        4
    AkideLiu  
       2021-07-01 04:06:35 +08:00 via iPhone   1
    release 的时候人家放 executable 只是方便你用...既然都开源了你不信任作者编译的可以自己编译啊。
    说实话哈就算源代码里面嵌入点乱七八糟的,自己编译也不会每行代码都看吧。
    所以可以相对信任
    neteroster
        5
    neteroster  
       2021-07-01 05:57:33 +08:00 via Android
    有可能。
    信不过自己编译。
    msg7086
        6
    msg7086  
       2021-07-01 06:08:27 +08:00
    是有可能。不放心可以从头来。
    lesteryu
        7
    lesteryu  
       2021-07-01 07:10:24 +08:00 via iPhone
    Software supply chain attacks…
    expy
        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
    jorneyr
        9
    jorneyr  
       2021-07-01 08:50:29 +08:00
    楼主是不是有误会: 放在 Github 管理的东西都是开源的?
    cominghome
        10
    cominghome  
       2021-07-01 08:53:29 +08:00
    有可能,你可以自己编译源码
    cathedrel
        11
    cathedrel  
    OP
       2021-07-01 08:55:04 +08:00
    @jorneyr 确实好像有这种误会,你能否深入讲解一下?
    Rocketer
        12
    Rocketer  
       2021-07-01 08:58:27 +08:00 via iPhone
    一样的代码用不同的编译器,编出来并不完全一样。RedHat 就是这么玩的,你拿着他的源码编译出来就是不如他。
    jorneyr
        13
    jorneyr  
       2021-07-01 08:59:43 +08:00
    @cathedrel Github 只是个存储用的仓库,存储的内容可以是私有的,也可以是开源的,只是大量开源的代码存储到了 Github,因为免费。
    cathedrel
        14
    cathedrel  
    OP
       2021-07-01 09:13:39 +08:00
    @jorneyr 你这段话我本来就懂,我的问题就是:某些自称是开源的项目它们的可运行软件包是否真的是用“公开的干净的“源码编译出来的??有没有办法鉴别??有没有办法防范开源幌子下的后门和暗桩??
    no1xsyzy
        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 的代码具有最低程度的可获取性。
    no1xsyzy
        16
    no1xsyzy  
       2021-07-01 09:18:28 +08:00   1
    @cathedrel 唯一的检查方式是反汇编检验,担心的话不如自己重新编译。

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

    至于那些有全部源码,也提供构建后二进制的项目,无论如何都算不上伪开源。
    在 binary 加入后门或者私有内容,是安全问题。
    freevioce
        21
    freevioce  
       2021-07-01 09:46:49 +08:00
    提点题外话
    1. 偏商业用的开源工具版本不会是最新的 而且会编译
    2. 不存在绝对的安全 还有黑客恶意修改源码 只要用了无论编译不编译都会中招
    shangsharon
        22
    shangsharon  
       2021-07-01 09:49:07 +08:00
    @agagega 相同参数编译出的文件 hash 不一定是一样的吧
    coolcoffee
        23
    coolcoffee  
       2021-07-01 09:58:57 +08:00   1
    印象中能做大做强的开源项目,基本上都采用了 Circleci 、Github Action 自动化构建,人工去维护 release 的成本是非常高且容易出错的。投毒的可能性很低很低,至少收益上划不来。

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

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

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

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

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

    所以,具体还是要看你的安全性来考虑。如果你要绝对安全,那么你查看源码,然后本地编译是最安全的。
    如果你要求便捷性,那就直接安装开发者提供的包就可以了
    Felldeadbird
        36
    Felldeadbird  
       2021-07-01 15:38:21 +08:00
    你可以自己编译,然后和 release 里面的做对比。人家加料,和伪开源不相关。
    coosir
        37
    coosir  
       2021-07-01 17:14:24 +08:00   1
    当然是有可能的,毕竟无法保证 release 的内容就是对应源码编译出来的
    如果不在乎自己的声誉,甚至连源码里也放暗桩,很多使用者并不会细看代码
    billlee
        38
    billlee  
       2021-07-01 17:21:05 +08:00
    我想起了某个反对 fdroid 的 android 代理软件
    pmispig
        39
    pmispig  
       2021-07-01 17:54:31 +08:00
    这个种情况是肯定存在的,还不少
    zerofancy
        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 代码。
    cctv6
        41
    cctv6  
       2021-07-01 21:43:09 +08:00
    是有可能的,不光是 release 部分,直接 git push 上去的代码也是可以包含二进制文件的,如果代码下载下来不自己过一遍,直接打包,也是有可能发现不了的。
    Trim21
        42
    Trim21  
       2021-07-01 21:49:48 +08:00 via Android
    完全有可能,release 里面的 exe 放什么都有可能。
    Dreax
        43
    Dreax  
       2021-07-01 22:15:56 +08:00
    @yfugibr 因为仓库迁移到 v2fly/v2ray-core 了
    yfugibr
        44
    yfugibr  
       2021-07-02 01:42:06 +08:00 via Android
    v2rayn, 安卓项目,core 没问题
    @Dreax
    yfugibr
        45
    yfugibr  
       2021-07-02 01:42:29 +08:00 via Android
    @Dreax v2rayng*
    jfdnet
        46
    jfdnet  
       2021-07-02 08:10:01 +08:00
    源代码都有。你信不过可以自己编译。
    kingfalse
        47
    kingfalse  
       2021-07-02 08:20:09 +08:00 via Android
    源码是开源的,但是安装包啥的放上面就是图个方便,不然给你贴个百度网盘链接让你去下?
    zhuweiyou
        48
    zhuweiyou  
       2021-07-02 09:53:25 +08:00
    你可以自己编译源码, 但是源码投毒你也不知道, 不会一行一行看代码吧... 既然用了 就信任了.
    ShionMashmallow
        49
    ShionMashmallow  
       2021-07-02 10:10:08 +08:00 via Android
    这种情况是有的,不开源但是 release 也会有说明吧(
    比如说 Clash 两个内核
    lhx888
        50
    lhx888  
       2023-05-21 14:21:10 +08:00
    @AkideLiu 用源码编译,还是很可信的。因为项目都是一步步成长起来的,总有人会关注每一次提交的 commit.所以源码有问题的可能性还是很小的,个人认为。
    lhx888
        51
    lhx888  
       2023-05-21 14:23:17 +08:00
    @xinJang 你说的有道理,所有不开源的软件或系统。都有可能被放后门。但是也要看是谁放的后门,对象不同,危害程度不同。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     994 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 19:38 PVG 03:38 LAX 12:38 JFK 15:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86