2021 年 4 月 18 日,一位安全研究员发现我们用于 Homebrew 组织中的 homebrew-cask
和所有 homebrew-cask-*
分支(非默认存储库)的 review-cask-pr
GitHub Action 中存在一个漏洞,并在我们的 HackerOne 上进行了报告。
每当受影响的分支收到仅更改某个分支版本的拉取请求时,review-cask-pr
GitHub Action 会自动审核并批准该拉取请求。然后,批准将触发 automerge
GitHub Action,该 Action 会合并已批准的拉取请求。演示了该漏洞的概念验证 (PoC) 拉取请求已在获得我们许可的情况下提交。随后,我们还原了 PoC 拉取请求,禁用并删除了 automerge
GitHub Action,并禁用并删除了 review-cask-pr
GitHub Action,这些操作均针对所有存在漏洞的存储库执行。
影响范围
发现的漏洞允许攻击者向分支注入任意代码并自动合并该代码。这是因为 review-cask-pr
GitHub Action 的 git_diff
依赖项存在缺陷,该依赖项用于解析拉取请求的 diff 以进行检查。由于此缺陷,可以欺骗解析器完全忽略有问题的行,从而成功批准恶意拉取请求。
在演示拉取请求期间,一个分支受到无害更改的影响,直到其被还原。由于此事件,用户无需执行任何操作。
我们的应对措施
- 易受攻击的
review-cask-pr
GitHub Action 已被禁用并从所有存储库中移除。 - 已禁用
automerge
GitHub Action 并从所有存储库中移除(支持 GitHub 内置功能,该功能在创建此操作时不存在)。 - 我们已取消我们的机器人提交到
homebrew/cask*
存储库的能力。 - 所有
homebrew/cask*
拉取请求都需要维护人员手动审核和批准。 - 我们正在改进文档,以帮助新
homebrew/cask
维护人员加入,并培训现有homebrew/core
维护人员,以帮助homebrew/cask
。
我们确实、一直并将继续非常重视项目和我们用户的安全性。我们尽最大努力在及时响应安全问题方面表现得像一家营利性公司。
为了确保和提高 Homebrew 的安全性,请考虑将你的代码和代码审查贡献到我们的 GitHub 项目。
感谢使用 Homebrew!