重大安全漏洞危及 Google 开源软件 Bazel
关键要点
Google 开源软件开发工具 Bazel 中的命令注入漏洞,可能导致黑客插入恶意代码。涉及的受影响项目包括 Kubernetes、Angular、Uber、LinkedIn、Databricks、DropBox 和 Nvidia 等。漏洞在 11 月首次被发现,Google 在七天内进行了修复。Cycode 研究团队提供详细信息,并指出此漏洞对软件供应链具有直接影响。严重的供应链漏洞在 Google 的开源软件开发工具 Bazel 中被发现,使黑客有机会插入恶意代码。根据研究人员的说法,这一命令注入漏洞影响到了大量依赖 Bazel 的项目,包括 Kubernetes、Angular、Uber、LinkedIn、Databricks、DropBox、Nvidia 和 Google 自身。
该漏洞最初是由 Cycode 研究人员在 11 月发现的,并在七天之内被 Google 修复。Cycode 在 2 月 1 日的博客文章 中披露了该漏洞的更多细节。
“我们发现,恶意代码可以通过 Bazel 的某个依赖 Actions 中的命令注入漏洞,被注入到 GitHub Actions 工作流中。” Cycode 的研究员 Elad Pticha 写道:“该漏洞直接影响软件供应链,可能允许恶意行为者向 Bazel 代码库中插入有害代码,创建后门,影响任何使用 Bazel 的生产环境。”
漏洞的披露时间线包括 11 月 1 日 Cycode 向 Google 提交的漏洞悬赏报告。11 月 7 日,Google 对该报告进行了审查,次日发布了一个“新提交”更新以修复该漏洞。12 月 5 日,一个“拉取请求”完全解决了该漏洞,一周后,Cycode 被 Google 授予了 13337 美元的漏洞悬赏奖金。
漏洞解析
Pticha 指出,Google 已承认“漏洞的关键重要性”。研究人员表示,问题的核心与使用 GitHub 自定义 Actions 相关,这是一个“简化”软件开发工作流程的灵活方法,以及所谓的 樱桃采摘工作流程。
樱桃采摘工作流程是一种命令类型,允许通过引用选择任意 Git 提交,并将其附加到当前工作分支或 HEAD 上,根据 Atlassian 的描述。
科学上上网工具下载“自定义 Actions 可以与代码中的函数进行比较,我们在其中使用自己的函数并导入第三方函数,” Pticha 写道。Actions 包括 Docker、JavaScript 和 Composite。

他指出,“自定义 Actions 对组织的软件供应链带来了重大的负担。几行代码在顶层工作流程中可能会转化为成千上万甚至百万行代码,其中很多我们可能并不了解。”
通过使用 GitHub Actions一个用于自动化软件开发生命周期中构建、测试和部署的持续集成和持续交付CI/CD平台,Cycode 研究人员成功识别了命令注入漏洞如何针对樱桃采摘工作流程。
Pticha 解释道,这些 Actions 使用用 “JavaScript 和 Python 等语言” 编写的程序,并利用来自各种包管理器如 NPM 或 PyPI的库,形成了广泛的依赖链。
Cycode 研究人员通过向系统日志注入恶意负载,成功获取了 Bazel 和 GitHub 的认证令牌。间接依赖中的漏洞,例如自定义 Actions,通常“难以识别,因为它们可能位于不同的库中,存在于其他生态系统中,并由其他维护者管理。”
在公共库中大约 340 万个工作流程中,几乎所有工作流程约 9875均采用了一种或多种自定义 Actions,Pticha 表示。