看我如何在30分钟内获得homebrew仓库的访问权限
字数 1282 2025-08-29 08:32:30
Homebrew仓库访问权限获取分析报告
漏洞概述
本报告详细分析了2018年披露的一个Homebrew安全漏洞,攻击者能够在30分钟内获取对Homebrew核心仓库的提交权限。该漏洞源于Jenkins实例中暴露的GitHub API令牌,可能导致供应链攻击风险。
漏洞发现过程
初始侦察
- 目标选择:攻击者选择Homebrew作为目标,因其是macOS上广泛使用的包管理器
- 攻击动机:受近期NPM、RubyGems和Gentoo安全事件启发,关注包管理工具的安全风险
信息收集阶段
- 使用gitrob工具:尝试通过gitrob(开源情报工具)查找Homebrew组织成员泄漏的凭证,但未获有效信息
- 审查HackerOne报告:通过https://hackerone.com/Homebrew 查看已披露问题
- 发现Jenkins实例:识别出公开的Jenkins实例(https://jenkins.brew.sh)
关键发现
- 构建配置分析:发现"Homebrew Bottles"项目向BrewTestBot/homebrew-core仓库进行认证推送
- 环境变量暴露:在Jenkins界面中发现"环境变量"链接,暴露了GitHub API令牌
漏洞验证
API令牌测试
curl https://api.github.com/user/repos -u $GITHUB_API_TOKEN:x-oauth-basic | jq '.[] | {repo: .full_name, permissions: .permissions}'
返回结果显示了令牌的权限范围:
- BrewTestBot/homebrew-core: 管理员权限
- Homebrew/brew: 推送权限
- Homebrew/formulae.brew.sh: 推送权限
- Homebrew/homebrew-core: 推送权限
实际利用测试
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"
成功创建blob,验证了写入权限。
潜在影响分析
-
供应链攻击风险:
- Homebrew每月openssl安装量超过50万次
- 攻击者可修改公式(formula)植入后门
- 影响范围包括硅谷大型公司的员工
-
安全弱点:
- 无保护的master分支
- 可进行快速更改(refs/heads/master)
- brew update会立即传播恶意修改
-
行业性问题:
- 包管理系统普遍存在类似弱点
- 凭证泄漏是互联网安全的薄弱环节
- 供应链攻击是持续性威胁
修复与响应
- 公开披露:Homebrew在博客(https://brew.sh/2018/08/05/security-incident-disclosure/)公开事件
- GitHub审计:与GitHub合作审计,确认令牌未被恶意使用
- 安全改进:加强核心仓库的安全措施
防御建议
-
凭证管理:
- 避免在构建系统中存储高权限令牌
- 使用最小权限原则配置访问令牌
- 定期轮换API令牌
-
基础设施安全:
- 保护Jenkins等CI/CD系统的访问
- 审查环境变量的暴露风险
- 实施分支保护策略
-
监控与响应:
- 监控异常仓库活动
- 建立快速响应机制
- 进行定期的安全审计
总结
此案例展示了供应链攻击的潜在风险,以及凭证管理不善可能导致的严重后果。安全研究人员在30分钟内获取关键仓库的提交权限,突显了开源基础设施安全的重要性。建议所有包管理项目进行类似的安全审查,防止此类漏洞被恶意利用。