GitHub 发布 Commit Push Attribution 功能,终结提交伪造漏洞
在软件供应链安全日益严峻的背景下,GitHub 于 2026 年 10 月 12 日推出了重大安全更新——Commit Push Attribution(提交归属)。这一功能旨在解决长期以来困扰开源社区的“提交伪造”问题,通过引入经过身份验证的推作者(Pusher)元数据,确保代码提交来源的真实性。
背景:Author 与 Committer 字段的脆弱性
在传统的 Git 工作流中,每个提交包含 author(作者)和 committer(提交者)字段。然而,这些字段本质上是提交客户端(如 git commit 命令)提供的字符串数据。这意味着,任何拥有仓库写权限的用户,无论其真实身份如何,都可以随意设置这两个字段为任意姓名和邮箱。
这种机制存在严重的安全隐患:一旦攻击者窃取了某个低权限账号的凭证,他们就可以伪造出看起来像是由高权限维护者(Trusted Maintainer)所提交的代码。这种伪造的提交可以绕过代码审查流程,混淆审计线索,甚至引入恶意代码而难以被追溯。
核心突破:持久化的身份验证归属
本次更新的核心在于将经过身份验证的推作者(Authenticated Pusher Identity) 与每个提交永久绑定。无论 author 或 committer 字段如何设置,每个提交都会附带一个独立的、不可篡改的推作者身份信息。
关键特性
- 独立于元数据的真实性:Pusher 身份独立于 Author 和 Committer 字段,即使攻击者篡改了元数据,也无法掩盖真实的推作者身份。
- 全链路可见性:Pusher 身份现在在所有显示提交的界面(包括 UI 和 API)中可见,使得安全团队能够快速定位可疑活动。
- 自动化规则 enforcement:GitHub 引入了新的仓库规则条件
Committer must match pusher。该规则会阻止任何提交,除非提交者元数据中的邮箱地址与经过身份验证的推作者邮箱完全匹配。这从根本上堵住了身份冒用的漏洞。
对开发者与安全团队的价值
- 提升审计可信度:安全团队不再需要依赖不可信的字符串元数据进行调查,而是可以直接查询经过身份验证的 Pusher 记录,大幅缩短安全事件响应时间。
- 强化合规性:对于需要严格代码审计的企业(尤其是 GitHub Enterprise 用户),该功能提供了符合审计要求的不可篡改日志。
- 简化权限管理:开发者可以更清晰地了解代码变更的真实来源,减少因身份混淆导致的协作摩擦。
当前状态与获取方式
目前,Commit Push Attribution 功能处于有限的公共预览(Limited Public Preview) 阶段,仅面向 GitHub Enterprise 客户开放。感兴趣的用户需联系其账户团队申请访问权限。GitHub 还提供了详细的配置指南,帮助用户设置相应的规则集(Rulesets)以强制执行严格的身份验证要求。
"GitHub 已经对推送进行了身份验证,但这次更新将这种认证持久化地记录在每个提交中,使其成为代码历史中不可分割的一部分。" —— GitHub 官方团队
通过这一更新,GitHub 不仅修复了一个长期的安全漏洞,更重新定义了代码提交审计的标准,为构建更安全的软件生态系统奠定了坚实基础。