在现代软件开发中,供应链安全成为一个不可忽视的重要议题。尤其是在大型开源项目和云计算巨头背后,如何保证代码的完整性和可信度备受关注。谷歌作为科技界的重要参与者,其开源项目的安全与否直接影响全球数以亿计用户的数字体验。最近,Tenable云安全研究团队发布了一项震惊业界的研究成果——关于谷歌Gerrit代码协作平台的供应链攻击漏洞,代号为GerriScary。该漏洞不仅影响了ChromiumOS、Chromium等多款谷歌核心项目,也暴露了广泛存在的权限配置缺陷和流程漏洞。 Gerrit是由谷歌开发的基于Web的代码协作与审查平台,广泛应用于谷歌内部及其对外开源项目代码管理。
该平台支持开发者提交代码变更请求,通过投票标签(Label)系统进行审核和批准,从而确保代码质量和安全。然而,正是Gerrit的灵活设计和默认权限配置,成为了此次GerriScary攻击的突破口。 漏洞核心源于“addPatchSet”权限的默认开放。根据Gerrit自身文档,注册用户默认拥有在任何代码变更(Change)上上传新的代码版本(Patch Set)的权限。这本意是为了方便社区维护和扩展项目,但未加严格限制却潜藏风险。恶意用户只需注册Gerrit账号,即可对已批准的代码提交添加新的补丁版本,而不需经过二次审批。
同时,部分谷歌项目在标签复制逻辑(Copy Conditions)配置中存在缺陷,使得之前的批准标签(如Code-Review+2、Verified+1)被自动沿用到新补丁版本,不触发重新审核流程。 进一步加剧风险的是自动化提交机器人的存在。谷歌部分项目中,有专门的“Commit-Queue”标签,当投票达到最高分时,自动机器人将触发代码合并操作。攻击者可以利用竞态条件(Race Condition)在机器人合并之前,快速将恶意补丁提交至已批准的代码更改,利用标签复制逻辑使恶意代码被认可为合法代码,最终实现零点击的供应链远程代码执行攻击。 此次安全研究中,Tenable团队通过对谷歌旗下多个Gerrit实例的动态扫描,发现至少18个项目受影响,包括ChromiumOS、Dart编程语言、Bazel构建系统及多个第三方依赖库如Dawn、BoringSSL等。扫描技术利用了HTTP响应状态码差异,巧妙识别拥有“addPatchSet”权限的项目,避免了对服务的过度干扰。
案例分析显示,攻击链结合了默认权限放宽、标签复制误配置和自动提交机器人竞态条件,构成了极其隐蔽且高效的攻击路径。攻击者无需高级权限或持续控制,就能注入恶意代码到高信任度的代码仓库中,并借助自动构建流水线传播至生产环境。这一风险不仅威胁谷歌的产品安全,也为所有采用Gerrit平台的第三方项目敲响警钟。 面对该攻击,谷歌迅速采取了安全加固措施。首先对受影响项目的标签复制逻辑进行了修正,确保新补丁需要重新获得审核标签,避免自动继承过时审批。其次,ChromiumOS团队限制了“addPatchSet”权限,变更为仅授权可信的贡献者,防止普通注册用户滥用该权限。
此类变更显著提升了代码审查流程的安全性,有效阻断了供应链攻击路径。 此事件折射出开源协作平台权限与审核机制复杂性与安全维护的挑战。Gerrit设计宗旨是促进开发者协作而非限制,而这种开放态度若无严密的权限管理和流程把控,将导致潜在的安全隐患被放大。对于其他组织及开源项目而言,及时检查Gerrit平台的权限配置极为必要,推荐禁用默认对注册用户的“addPatchSet”权限,慎重设计标签复制规则,避免自动继承审核批准标签,确保每次代码修改都严格复审。 此外,加强自动化流程中的竞态检测和异常监控同样重要。诸如自动合并机器人需要引入延迟检测、多因素审核触发条件,或通过引入基于行为分析的安全检测模块,提升发现并阻断疑似恶意代码注入的能力。
持续的安全培训和敏感权限核查流程,配合自动化工具辅助,形成多层次防御架构,以抵御未来潜在的供应链攻击。 供应链攻击的影响极其深远,不仅导致代码质量下降,还有可能引发广泛的安全漏洞和用户数据泄露。历史上众多大型开源及企业软件供应链事件,均重创生态信任和用户安全感。GerriScary事件则提醒我们,在推动开源和开放协作技术创新的同时,决不能忽视安全基础建设和细节防护。遵循最小权限原则,强化审核流程,细化自动化工具的安全提升,成为保障供应链安全的核心策略。 总结来看,Tenable揭示的GerriScary漏洞不仅爆出了谷歌内部多项目的安全隐患,也为全球依赖Gerrit协作平台的开源社区和企业技术团队敲响警钟。
通过深入理解其权限配置、标签管理和自动化合并机制的交互,开发者和安全专家能有针对性地修复风险点,筑牢供应链安全防线。未来,随着代码协作与自动化水平不断提升,更多复杂权限逻辑及竞态条件漏洞或将涌现,需要业界持续投入资源开展安全检测、应急响应和安全意识培养。通过构建安全、透明且高效的供应链环境,方能真正实现开源生态的可持续与安全发展。 持续关注供应链安全新动态,及时更新最优实践,是确保软件项目安全的关键所在。GerriScary事件虽已修复,但留下的经验和教训应当成为行业宝贵财富,指引我们避免重蹈覆辙,推动更安全的数字未来。