聚焦源代码安全,网罗国内外最新资讯!
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
该漏洞由Tenable 公司的安全研究员 Liv Matan 发现,它利用谷歌 Gerrit 代码协作平台中的配置不当问题,使未授权用户通过复杂的供应链来攻陷受信任的软件仓库。
GerriScary 利用三个互联组件实现越权代码提交。首先,Gerrit 的默认配置授予所有注册用户 “addPatchSet” 权限,导致任何具有谷歌账户的人员均可修改现有的代码变更。第二,易受攻击项目的“复制条件”设置中包含多个逻辑漏洞,而该设置用于判断此前的代码审计所批准的标签是否携带到新的版本。
而最危险的地方在于利用自动提交机器人的竞争条件。攻击者可识别那些已被“Commit-Queue+2”标签标记为准备自动合并的代码变更,赶在机器人执行合并前的简短窗口期注入恶意代码。在 ChromiumOS 和 Dart 仓库中,该时间窗口持续大约5分钟,而其它谷歌仓库仅提供数秒到数分钟的时间。
Liv Matan 发现,通过在尝试修改提交信息时分析HTTP响应代码,可以对存在漏洞的项目进行指纹识别。返回“209”状态码说明拥有所需权限且不会在项目日志中产生噪音。这一技术可用于大规模扫描谷歌的 Gerrit 基础设施,识别出受影响的仓库。
该供应链的运作方式是,先监控那些已经满足所有要求、可以提交的代码更改,然后与自动化机器人的提交过程进行竞争。当利用代码检测出被标记为 “Commit-Queue+2”的变更时,它将注入恶意补丁,而由于复制条件配置不当,这些补丁依然保留了之前所有的审批,从而导致未经用户交互的未授权代码合并。
该漏洞影响了谷歌多个领域的关键项目,而其中最有影响力的目标是 Chrome OS 设备的基础 ChromiumOS。其它受影响项目包括 Dart(Flutter的编程语言)、Dawn 和 BoringSSL(Chromium的第三方依赖)、Bazel(给个的构建系统)和Gerrit本身。其它易受攻击的仓库还包括 Ceres Solver、Quiche、Android KVM和各种与Linux相关的项目。
Liv Matan 通过成功将无害注释注入 ChromiumOS 项目,演示了该漏洞的影响。为了遵守道德规范,他们并没有在生产环境中测试完整的条件竞争组件。
谷歌迅速响应,采取了多项修复措施,重新配置了受影响项目的标签保留设置,确保新的补丁集都需要重新进行代码审计和验证。另外,ChromiumOS 团队删除了注册用户的 “addPatchSet” 权限,仅供可信的贡献人员使用。虽然谷歌保护了受管理项目的安全,但研究人员提醒称其它使用 Gerrit的机构可能也易受类似攻击。
正确配置“复制条件”的复杂程度表明,配置不当问题可能广泛存在于更宽泛的Gerrit 生态系统中,或导致很多开源项目和企业项目易受供应链攻击。
如下是受影响的项目列表。
项目名称 |
Gerrit 审计URL |
说明 |
ChromiumOS |
https://chromium-review.googlesource.com/c/chromiumos |
Chrome OS 设备的基础操作系统 |
Dart |
https://dart-review.googlesource.com/ |
前端编程语言、Flutter应用的骨干 |
Dawn |
https://dawn-review.googlesource.com/ |
WebGPU实现的Chromium第三方依赖 |
BoringSSL |
https://boringssl-review.googlesource.com/ |
加密操作的Chromium第三方依赖 |
GN |
https://gn-review.googlesource.com/ |
Chromium、 Fuchsia和相关项目使用的构建系统 |
Bazel |
https://bazel-review.googlesource.com |
谷歌的主要构建引擎和自动化系统 |
Gerrit |
https://gerrit-review.googlesource.com/#(/zull/jobs) |
本身是代码审计平台(/zull/jobs 和 /gcompute-tools 组件) |
Ceres Solver |
https://ceres-solver-review.googlesource.com/ |
建模和解决优先级问题的C++ 库 |
Code Review |
https://code-review.googlesource.com/ |
通用代码审计系统,包括Git镜像实现 |
Quiche |
https://quiche-review.googlesource.com |
谷歌面向生产环境的QUIC、HTTP/2、 HTTP/3 协议 |
Android KVM |
https://android-kvm-review.googlesource.com/ |
Android 虚拟化运行时环境 |
OpenSecura |
https://opensecura-review.googlesource.com/ |
AI 硬件骨干基础设施 |
CUE |
https://cue-review.googlesource.com/ |
数据验证语言和工具 |
Linux |
https://linux-review.googlesource.com/ |
谷歌对开源操作系统的fork |
Plan9port |
https://plan9port-review.googlesource.com/ |
带有Plan 9 工具和扩展的Unix实现 |
Hafnium |
https://hafnium-review.googlesource.com/ |
提供内存隔离能力的系统组件 |
Nginx |
https://nginx-review.googlesource.com/ |
高性能 web 服务器实现 |
Weave |
https://weave-review.googlesource.com/ |
网络应用层协议实现 |
原文始发于微信公众号(代码卫士):谷歌 Gerrit 代码平台漏洞可用于供应链攻击,18个谷歌项目受影响
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论