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

2017-09-02 13:40:14 +08:00
 nikoo
比如已经不存在的 SS 和 SSR 项目,仅可以从别人 fork 的备份下载源码,那这个 fork 的项目是否安全?
如何确认与 fork 源是一致的?
3006 次点击
所在节点    问与答
15 条回复
Yvette
2017-09-02 13:47:31 +08:00
看 commit 记录
nikoo
2017-09-02 13:50:13 +08:00
@Yvette 看了 commit 记录是与官方一致的情况下,可以确保是安全的吗?
Yvette
2017-09-02 14:03:44 +08:00
@nikoo 你这反问得我有点愣了,既然都能看到官方的 commit 记录那还要看 fork 的干啥…不过话说回来,每个 commit 的哈希值跟前一个 commit 以及提交时间都有关系,所以不可能被篡改的,确保一致。
FrankFang128
2017-09-02 14:05:17 +08:00
check sum?
dong3580
2017-09-02 14:11:24 +08:00
@FrankFang128
他没有源的情况下无法核对每次 commitSum 吧。
另外 commit 记录也可以改作者信息,
nikoo
2017-09-02 14:14:17 +08:00
@Yvette 谢谢!比如这个 SSR fork 项目: https://github.com/ssrbackup/shadowsocksr

可以看到他的 commits 记录 https://github.com/ssrbackup/shadowsocksr/commits/manyuser
都是作者本人提交的,这个提交者是无法篡改的把?
是不是可以说明这个 fork 是与官方一致的?
nikoo
2017-09-02 14:17:54 +08:00
@dong3580 commits 记录里面的作者信息例如 "breakwa11 committed on Jul 27" 可以被修改?
Pastsong
2017-09-02 14:19:53 +08:00
@nikoo 可以,只要原 commit 没有签名
momocraft
2017-09-02 14:20:22 +08:00
我在本地简单实验了一下:

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
2017-09-02 14:23:29 +08:00
@Pastsong 谢谢

如果就这个 SSR fork 项目 /ssrbackup/shadowsocksr
从哪些方面可以对比确保与原项目 /shadowsocksr 一致,并且是安全的?
dong3580
2017-09-02 14:24:25 +08:00
@nikoo
这种可以修改的,
momocraft
2017-09-02 14:25:26 +08:00
#9 的补充: 最后一段 "内部所有 blob 的 sha1" 是指那个 blob 路径中的 sha1,不是内容的。
ProjectAmber
2017-09-02 14:25:36 +08:00
无法确保安全,因为 git 的一切都可以伪造。唯一能保证 commit 来自特定开发者的是其主动添加的签名。
https://github.com/blog/2144-gpg-signature-verification
nbndco
2017-09-02 17:24:36 +08:00
commit 是可以篡改的,在 GitHub 上所有没显示 verified 的都是可能被改过的。
Yvette
2017-09-02 23:11:11 +08:00
学习了,以前没听说过有 Verified 的 commit

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

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

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

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

© 2021 V2EX