Sneaky Git Commits
9 months ago
- #security
- #git
- #version-control
- Git合并提交可以包含任意修改,但这些修改不会在`git log -u`中显示,因此具有'隐蔽性'。
- 可通过`git merge --no-commit`或`git commit --amend`命令创建隐蔽的合并提交。
- Git官方文档警告不要滥用合并提交进行重大修改,但允许小的修复。
- 文中描述了一个精心设计的供应链攻击场景:通过在合并提交中隐藏后门来绕过代码审查。
- 可以通过重新执行每个合并操作并比较结果树来检查Git仓库历史中的隐蔽合并。
- 语义冲突(例如函数调用新增与函数重命名)可能导致检测隐蔽合并时出现误报。
- 对Linux内核(v6.14到v6.15版本)的分析显示不存在隐蔽合并,仅存在语义冲突。