原文链接

https://medium.com/@vesirin/how-i-gained-commit-access-to-homebrew-in-30-minutes-2ae314df03ab

引言

这个问题在Homebrew博客被公开披露
自打最近的NPM,RubyGems和Gentoo事件发生以来,我对包管理工具可能被用于分发恶意软件的攻击链,越来越感到兴趣并担心。特别是如何将这些项目的维护者和基础设施作为攻击媒介进行攻击。
6月31日,我带着试试看我是否可以获得Homebrew的GitHub仓库访问权限的目的进行测试。大约30分钟后,我向Homebrew / homebrew-core项目进行了第一次提交。

获取泄漏的信息

我最初的策略是基于盗取登入凭证的;查找Homebrew GitHub组织的成员是否有泄漏任何登入凭证。
Michael Henriksen开发的一个名为gitrob的OSSINT工具让这个搜索过程变得非常简单。我运行它以获得Homebrew组织的信息,但最终没有提取出任何有趣的东西。
接下来,我在https://hackerone.com/Homebrew 上查看了之前披露的问题。从那里,我发现Homebrew在https://jenkins.brew.sh 上对外运行了一个Jenkins实例。
经过一番挖掘,我发现了一些有趣的东西;在“Homebrew Bottles”项目中构建的版本正在向BrewTestBot / homebrew-core repo进行认证推送:

这让我想到,“登入凭据存储在哪里?”。我注意到左侧的“环境变量”链接,这暴露了一个GitHub的API令牌:


我在本地测试令牌具生效范围的结果:

$ curl https://api.github.com/user/repos -u $GITHUB_API_TOKEN:x-oauth-basic | jq '.[] | {repo: .full_name, permissions: .permissions}'
{
"repo": "BrewTestBot/homebrew-core",
"permissions": {
"admin": true,
"push": true,
"pull": true
}
}
{
"repo": "Homebrew/brew",
"permissions": {
"admin": false,
"push": true,
"pull": true
}
}
{
"repo": "Homebrew/formulae.brew.sh",
"permissions": {
"admin": false,
"push": true,
"pull": true
}
}
{
"repo": "Homebrew/homebrew-core",
"permissions": {
"admin": false,
"push": true,
"pull": true
}
}

这表明我已经拥有了向这些核心Homebrew仓库的提交内容的访问权限:
• Homebrew/brew
• Homebrew/homebrew-core
Homebrew/formulae.brew.sh
为了确定,我通过在Homebrew / homebrew-core repo中创建了一个blob来测试:

$ curl https://api.github.com/repos/Homebrew/homebrew-core/git/blobs -u $GITHUB_API_TOKEN:x-oauth-basic -d '{"content":"test"}' -H "Content-Type: application/json"
{
"sha": "30d74d258442c7c65512eafab474568dd706c430",
"url": "https://api.github.com/repos/Homebrew/homebrew-core/git/blobs/30d74d258442c7c65512eafab474568dd706c430"
}

然后向Homebrew维护者报告了这个问题。

这意味着什么

让我先提出以下的观点:
• 成千上万的人使用Homebrew,包括硅谷一些最大公司的员工。
• 最近30天内最常安装的软件包是openssl,安装量超过50w次:https://formulae.brew.sh/analytics/install/30d/
• 我拥有向Homebrew / homebrew-core repo直接提交的权限。同时,这个repo没有受保护的master分支,这意味着我可以对refs / heads / master进行快速更改。任何新安装Homebrew或运行brew update的人都会有我的恶意公式(formula)。
如果我是一个带有恶意的角色,我本可以对openssl公式(formula)做一个微小的,可能难以被察觉的修改,来向任何安装它的机器上放置一个后门。
如果我都能够在30分钟内获得提交的权限,那么一个拥有专有资源的国家和一支由17名志愿者组成的团队对抗会发生什么?可以访问多少个私人公司网络?这些有多少可被用于升级到大规模的数据泄露?还有哪些其他包管理系统有类似的弱点?
这些都是我越发关注的问题,包管理工具和登入凭证的泄漏一次又一次的被证明是互联网安全的薄弱环节,供应链攻击是一种真正的持续性威胁。这不是只有Homebrew才有的弱点,而是行业中的系统性问题,也是需要我们投入更多安全性研究的问题。

做出的努力

Homebrew已在地址为https://brew.sh/2018/08/05/security-incident-disclosure/ 的博客上公开披露了该问题。 Homebrew团队与GitHub合作进行审计并确保特定的访问令牌没有被恶意的利用,并且没有对核心Homebrew仓库进行任何意外提交。 我要特别感谢Mike McQuaid在他的陪产假期间快速而专业地处理我的报告。
很明显,为了提高Homebrew项目的安全性,还有很多的工作需要去做。 如果您在工作中使用到了Homebrew,请考虑向项目进行捐赠。作为一个行业,我们需要向我们都使用和依赖的核心OSS软件进行良性投资

源链接

Hacking more

...