安全研究人员发现编号为CVE-2025-1568的"GerriScary"高危供应链漏洞,攻击者可利用该漏洞向ChromiumOS、Chromium、Dart和Bazel等至少18个谷歌核心项目注入恶意代码。
Tenable安全研究员Liv Matan发现,该漏洞利用谷歌Gerrit代码协作平台的配置缺陷,使未授权用户能通过复杂攻击链入侵受信任的软件仓库。GerriScary通过三个相互关联的组件实现未授权代码提交:首先,Gerrit默认配置向所有注册用户授予"addPatchSet"权限,任何拥有谷歌账户者均可修改现有代码变更。
其次,受影响项目存在"Copy Conditions"(复制条件)设置逻辑缺陷,该功能本应决定先前代码审查的批准标签是否延续至新修订版本。最危险的环节是利用自动化提交机器人(bot)的竞争条件(race condition)漏洞——攻击者可识别已获"Commit-Queue +2"标签(表示准备自动合并)的代码变更,在机器人执行前的短暂时间窗口内注入恶意代码。
ChromiumOS和Dart代码库的时间窗口约为5分钟,其他谷歌仓库仅提供数秒至数分钟的操作时间。
Liv Matan发现可通过分析修改提交信息时的HTTP响应代码(209状态码表示具备所需权限且不会触发日志记录)来指纹识别脆弱项目。该技术实现了对谷歌Gerrit基础设施的大规模扫描。
完整的攻击链包括:监控满足提交条件的代码变更,然后与自动化机器人竞争提交过程。当漏洞利用代码检测到带有"Commit-Queue +2"标签的变更时,会注入保留所有先前批准的恶意补丁(由于配置错误的复制条件),最终在无需用户交互的情况下实现未授权代码合并。
该漏洞影响多个领域的关键谷歌项目,其中Chrome OS设备基础系统ChromiumOS是最重要目标。其他受影响项目包括:Flutter框架编程语言Dart、Chromium第三方依赖Dawn和BoringSSL、谷歌构建系统Bazel,以及Gerrit自身。此外还涉及Ceres Solver、Quiche、Android KVM等多个Linux相关项目。
研究人员通过向ChromiumOS项目成功注入无害注释验证了漏洞影响(证据可见于ChromiumOS代码搜索工具)。为遵守道德研究规范,未在生产环境测试完整竞争条件组件。
谷歌接到披露后迅速采取修复措施:重新配置受影响项目的标签持久化设置,确保新补丁集需经重新审核;ChromiumOS团队取消注册用户的"addPatchSet"权限,仅限受信任贡献者使用。
虽然谷歌已修复其管理项目,但研究人员警告其他使用Gerrit的组织可能仍面临类似攻击。由于正确配置复制条件的复杂性,整个Gerrit生态系统中可能存在广泛错误配置,使众多开源和企业项目面临供应链攻击风险。
参考来源:
Google’s Gerrit Code Platform Vulnerability Allows Hack of 18 Google Projects Including ChromiumOS