行业新闻与博客

CodeBuild 缺陷使 AWS 控制台供应链面临风险

AWS CodeBuild 中的一个严重配置错误使得攻击者能够控制核心 AWS GitHub 存储库,包括支撑 AWS 控制台的 JavaScript SDK 。

Wiz Research 将此次漏洞命名为 CodeBreach,它暴露了 AWS 管理的开源项目所使用的持续集成管道中的一个缺陷。通过利用该漏洞,未经身份验证的攻击者可以将恶意代码注入到受信任的代码库中,从而为入侵 AWS 控制台以及可能依赖于该控制台的每个 AWS 账户铺平道路。

该漏洞源于 CodeBuild 处理拉取请求触发器的方式。安全过滤器中的一个微小错误(仅缺少两个字符)允许不受信任的拉取请求运行特权构建。攻击者由此可以访问存储在构建内存中的 GitHub 凭据,并将权限提升至完全控制仓库。

Wiz 公司表示,最敏感的目标是 AWS JavaScript SDK,这是一个广泛使用的库,为客户应用程序和 AWS 控制台本身提供支持。该公司估计,66%的云环境都包含该 SDK,这加剧了供应链攻击的潜在影响。

一个小小的正则表达式错误如何导致巨大的风险

这些暴露的仓库依赖于一个 ACTOR_ID 过滤器来限制哪些 GitHub 用户可以触发构建。然而,Wiz 发现该过滤器是以非锚定正则表达式的形式实现的。这意味着,包含已批准 ID 作为子字符串的 GitHub 用户 ID 可以绕过此限制。

由于 GitHub 按顺序分配数字用户 ID,Wiz 的研究人员能够预测新 ID 何时会“覆盖”受信任的维护者 ID 。他们利用 GitHub 应用的自动化创建功能,捕获了能够绕过过滤器并触发构建的 ID 。

Wiz 成功演示了对 AWS/AWS-sdk-JS-v3 存储库的接管,通过窃取的凭证获得了管理员级别的访问权限。

至少还有三个其他 AWS 存储库存在同样的漏洞,其中一个与 AWS 员工的个人账户关联。

AWS 响应和缓解措施

Wiz 于 8 月 25 日披露了调查结果,AWS 在 48 小时内解决了该问题。该公司对受影响的正则表达式过滤器进行了加固,撤销了已泄露的凭证,并增加了保护措施以防止基于内存的凭证窃取。

AWS 还引入了一个新的 Pull Request Comment Approval 构建门,默认情况下会阻止不受信任的构建。

该公司在一份声明中表示,“AWS 确定没有对任何客户环境的机密性或完整性造成影响”,并补充说没有发现恶意利用的证据。

Wiz 建议 CodeBuild 用户采取以下几项防御措施:

  • 阻止不受信任的拉取请求触发特权构建

  • 使用权限最小的细粒度 GitHub 令牌

  • 锚点 webhook 过滤器正则表达式模式

该研究强调了 CI/CD 系统成为供应链攻击目标的趋势日益增长,此前发生了Nx S1ngularity 和 Amazon Q VS Code扩展程序被攻破等事件。

需要帮助吗?联系我们的支持团队 在线客服