在 git 上伪造 commit 者身份

查看 106|回复 7
作者: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, 不过我没有找到

commit, GitHub, git, username

duke807   
用 git 自带的图形工具 gitk 可以很容易看到 commiter 和 author
falsemask   
我之前在 github 看到一个开源项目伪造了 Linus 的提交记录
duke807   
另外要说的是,git 提交本身是可以数字签名的
Reficul   
GPG 签名的重要性
duke807   
不考虑签名的情况下,认准库的管理者就行
2 楼说的是 fork kernel 库,在 fork 出来的库里面搞事情,结果用主库路径 + fork 的库的自己的提交 hash ,也能正常访问自己的提交,这个 bug 据说已经解决,这个 bug 是 github 的问题,不是 git 的问题
hahastudio   
比较近的一次广泛讨论的 "Linus commit"
https://github.com/torvalds/linux/tree/8bcab0346d4fcf21b97046eb44db8cf37ddd6da0
/t/830735
hahastudio   
7.4 Git Tools - Signing Your Work
https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work
Signing commits
https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits
您需要登录后才可以回帖 登录 | 立即注册

返回顶部