GitHub 上别人 fork 的项目可能被篡改吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nikoo
V2EX    问与答

GitHub 上别人 fork 的项目可能被篡改吗?

  •  
  •   nikoo 2017 年 9 月 2 日 3733 次点击
    这是一个创建于 3097 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如已经不存在的 SS 和 SSR 项目,仅可以从别人 fork 的备份下载源码,那这个 fork 的项目是否安全?
    如何确认与 fork 源是一致的?
    15 条回复    2017-09-02 23:11:11 +08:00
    Yvette
        1
    Yvette  
       2017 年 9 月 2 日 via iPhone
    看 commit 记录
    nikoo
        2
    nikoo  
    OP
       2017 年 9 月 2 日
    @Yvette 看了 commit 记录是与官方一致的情况下,可以确保是安全的吗?
    Yvette
        3
    Yvette  
       2017 年 9 月 2 日 via iPhone   1
    @nikoo 你这反问得我有点愣了,既然都能看到官方的 commit 记录那还要看 fork 的干啥…不过话说回来,每个 commit 的哈希值跟前一个 commit 以及提交时间都有关系,所以不可能被篡改的,确保一致。
    FrankFang128
        4
    FrankFang128  
       2017 年 9 月 2 日
    check sum?
    dong3580
        5
    dong3580  
       2017 年 9 月 2 日 via Android   1
    @FrankFang128
    他没有源的情况下无法核对每次 commitSum 吧。
    另外 commit 记录也可以改作者信息,
    nikoo
        6
    nikoo  
    OP
       2017 年 9 月 2 日
    @Yvette 谢谢!比如这个 SSR fork 项目: https://github.com/ssrbackup/shadowsocksr

    可以看到他的 commits 记录 https://github.com/ssrbackup/shadowsocksr/commits/manyuser
    都是作者本人提交的,这个提交者是无法篡改的把?
    是不是可以说明这个 fork 是与官方一致的?
    nikoo
        7
    nikoo  
    OP
       2017 年 9 月 2 日
    @dong3580 commits 记录里面的作者信息例如 "breakwa11 committed on Jul 27" 可以被修改?
    Pastsong
        8
    Pastsong  
       2017 年 9 月 2 日   1
    @nikoo 可以,只要原 commit 没有签名
    momocraft
        9
    momocraft  
       2017 年 9 月 2 日   1
    我在本地简单实验了一下:

    1. 建立 repo A,commit 某个文件
    2. 把 repo A 中那个文件对应的 blob 换成另外内容
    3. git clone A B 能正常结束,B 中的这个文件会是改过的 blob 的内容。
    4. 此时在 A 和 B 中运行 git fsck 都会说 `error: sha1 mismatch for .git/objects/8f/150a442a97cd4ad6320768029b7a1e13a42ca2 (expected 8f150a442a97cd4ad6320768029b7a1e13a42ca2)
    `。但 fsck 不会自动运行。

    因此即使一个 commit 和内部所有 blob 的 sha1 都和原 repo 一样,仍然有可能内容是被篡改过的。这样的篡改可以用 git fsck 检查出来。不知道 github 对这种事情有没有预防。
    nikoo
        10
    nikoo  
    OP
       2017 年 9 月 2 日
    @Pastsong 谢谢

    如果就这个 SSR fork 项目 /ssrbackup/shadowsocksr
    从哪些方面可以对比确保与原项目 /shadowsocksr 一致,并且是安全的?
    dong3580
        11
    dong3580  
       2017 年 9 月 2 日 via Android   1
    @nikoo
    这种可以修改的,
    momocraft
        12
    momocraft  
       2017 年 9 月 2 日
    #9 的补充: 最后一段 "内部所有 blob 的 sha1" 是指那个 blob 路径中的 sha1,不是内容的。
    ProjectAmber
        13
    ProjectAmber  
       2017 年 9 月 2 日   2
    无法确保安全,因为 git 的一切都可以伪造。唯一能保证 commit 来自特定开发者的是其主动添加的签名。
    https://github.com/blog/2144-gpg-signature-verification
    nbndco
        14
    nbndco  
       2017 年 9 月 2 日
    commit 是可以篡改的,在 GitHub 上所有没显示 verified 的都是可能被改过的。
    Yvette
        15
    Yvette  
       2017 年 9 月 2 日
    学习了,以前没听说过有 Verified 的 commit
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     811 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 21:49 PVG 05:49 LAX 13:49 JFK 16:49
    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