在 git 上伪造 commit 者身份

2023-04-27 09:59:28 +08:00
 t41372

只要有提交 commit 的权限, 就可以很轻松的修改自己 commit 时的 email 和 username, 而这是 git commit 能辨别你身份的几乎唯一工具, 在 github 上会直接显示你伪装的人的头像...

比如如果你和你讨厌的某个 co-worker 共同贡献一个项目, 你完全可以假冒他的身份做一些奇怪的 commit...

这里有一个 10 年前的 repo 演示了这玩意儿 https://github.com/Mikulas/fake-author-attack 很显然我今天自己测试时也成功了

当然,GitHub 上, 如果你有在本机设置证书, 或是使用 GitHub 的网页端, 如果你的 email/username 跟你的实际账号一致, 在 commit 旁边会有 "verified" 的标志, 不过用本地客户端, 没设证书就没有这种功能了... 另外手机版的 GitHub 看不到 verified 的标志

How to Spoof Any User on Github…and What to Do to Prevent It

我问 chatGPT 的时候, 他说 git 还会保存真实的 author, 不过我没有找到

2564 次点击
所在节点    分享发现
11 条回复
duke807
2023-04-27 10:07:24 +08:00
用 git 自带的图形工具 gitk 可以很容易看到 commiter 和 author
falsemask
2023-04-27 10:08:58 +08:00
我之前在 github 看到一个开源项目伪造了 Linus 的提交记录
duke807
2023-04-27 10:11:38 +08:00
另外要说的是,git 提交本身是可以数字签名的
Reficul
2023-04-27 10:12:25 +08:00
GPG 签名的重要性
duke807
2023-04-27 10:16:13 +08:00
不考虑签名的情况下,认准库的管理者就行

2 楼说的是 fork kernel 库,在 fork 出来的库里面搞事情,结果用主库路径 + fork 的库的自己的提交 hash ,也能正常访问自己的提交,这个 bug 据说已经解决,这个 bug 是 github 的问题,不是 git 的问题
hahastudio
2023-04-27 10:21:14 +08:00
hahastudio
2023-04-27 10:21:37 +08:00
SleepyRaven
2023-04-27 11:08:44 +08:00
vue 作者也被伪造过 commit ,内容是停止维护 vue:)
Aoang
2023-04-27 11:30:10 +08:00
这不算伪造,算是一个 Future 。

因为 Git 最初设计出来是集成到邮箱里面的,邮箱有信任机制,直到现在 Linux kernel 还是用邮件列表开协作的。

抛弃邮箱之后,这个功能就成了一个 Bug ,但是也有 GPG 签名可以解决一半这个问题,GPG 签名来证明 Commit 。
为什么只解决了一半呢?功能设计出来似乎忽略了在 Web 界面中的 Squash 压缩提交
0o0O0o0O0o
2023-04-27 11:36:28 +08:00
dependabot[bot]
dependabot-preview[bot]
github-actions[bot]

我经常给自己的 repo 提交时“伪造”这几个,有头像,看着好玩。

而且我觉得这个“feature”用来作恶也是能增加取信度的
weeei
2023-04-27 16:25:47 +08:00
最初从 SVN 迁移到 Git 就考虑这个问题了,结论是内部成员不会这样干。外部项目需要在接受 PR 的时候看一眼就行。

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

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

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

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

© 2021 V2EX