V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
t41372
V2EX  ›  分享发现

在 git 上伪造 commit 者身份

  •  
  •   t41372 · 336 天前 · 2511 次点击
    这是一个创建于 336 天前的主题,其中的信息可能已经有所发展或是发生改变。

    只要有提交 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, 不过我没有找到

    11 条回复    2023-04-27 16:25:47 +08:00
    duke807
        1
    duke807  
       336 天前 via Android
    用 git 自带的图形工具 gitk 可以很容易看到 commiter 和 author
    falsemask
        2
    falsemask  
       336 天前
    我之前在 github 看到一个开源项目伪造了 Linus 的提交记录
    duke807
        3
    duke807  
       336 天前 via Android
    另外要说的是,git 提交本身是可以数字签名的
    Reficul
        4
    Reficul  
       336 天前
    GPG 签名的重要性
    duke807
        5
    duke807  
       336 天前 via Android
    不考虑签名的情况下,认准库的管理者就行

    2 楼说的是 fork kernel 库,在 fork 出来的库里面搞事情,结果用主库路径 + fork 的库的自己的提交 hash ,也能正常访问自己的提交,这个 bug 据说已经解决,这个 bug 是 github 的问题,不是 git 的问题
    hahastudio
        6
    hahastudio  
       336 天前   ❤️ 1
    SleepyRaven
        8
    SleepyRaven  
       336 天前
    vue 作者也被伪造过 commit ,内容是停止维护 vue:)
    Aoang
        9
    Aoang  
       336 天前 via iPhone   ❤️ 1
    这不算伪造,算是一个 Future 。

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

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

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

    而且我觉得这个“feature”用来作恶也是能增加取信度的
    weeei
        11
    weeei  
       336 天前
    最初从 SVN 迁移到 Git 就考虑这个问题了,结论是内部成员不会这样干。外部项目需要在接受 PR 的时候看一眼就行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1197 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:16 · PVG 07:16 · LAX 16:16 · JFK 19:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.