持续集成服务(CI)漏洞挖掘
字数 1640 2025-08-26 22:11:22
持续集成服务(CI)漏洞挖掘技术指南
1. CI服务漏洞挖掘概述
持续集成(CI)服务如Travis CI、Circle CI和GitLab CI等是现代软件开发中广泛使用的工具,它们也成为安全研究人员挖掘漏洞的重要目标。这些平台由于处理大量敏感信息且部分数据公开,常常成为信息泄露的源头。
1.1 研究背景
- CI服务用于自动构建和测试代码变更
- 公开的构建日志可能包含敏感信息
- 历史案例:HackerOne员工GitHub访问令牌泄露、Travis CI API攻击事件
1.2 主要攻击面
- GitHub访问令牌泄露
- SSH私钥泄露
- 环境变量暴露
- 敏感配置信息泄露
2. 信息收集方法
2.1 目标识别
- 通过Google搜索"公司名称 GitHub"寻找目标GitHub组织
- 使用浏览器书签快速从GitHub跳转到Travis CI:
javascript:window.location="https://travis-ci.org"+window.location.pathname;
2.2 API利用
Travis CI API端点示例:
- 获取项目列表:
https://api.travis-ci.org/owner/%s/repos?limit=100&offset=%d - 获取构建ID:
https://api.travis-ci.org/repo/%s/builds?limit=100&offset=%d - 获取构建日志:
https://api.travis-ci.org/job/%d/log.txt
2.3 扩展目标范围
收集组织成员的构建日志,脚本示例:
#!/bin/bash
users=$(curl -s -H "application/vnd.github.hellcat-preview+json" -H "Authorization: token $GH_TOKEN" https://api.github.com/orgs/"$1"/members | jq -r .[].login);
while read -r hehe; do
secretz -t "$hehe";
done <<< "$users"
3. 自动化检测技术
3.1 日志分析工具
使用ripgrep(rg)高效搜索大型数据集:
$ rg -ia "$1" -j 12 --no-filename --no-line-number --pretty
3.2 关键搜索模式
-
环境变量导出:
$ rg -ia "export " -j 12 --no-filename --no-line-number --pretty -
常见敏感关键词:
- "token"
- "key"
- "password"
- "secret"
建议追加"="或":"减少误报
-
利用[secure]标记:
- 收集所有被标记为[secure]的变量名
- 使用这些变量名在所有项目中搜索未受保护的同名变量
3.3 依赖错误监控
查找包管理错误信息,可能指示攻击面:
- npm: "不在npm注册表中。"
- PyPI: "没有匹配的发行版"
- RubyGems: "找不到有效的宝石"
4. 漏洞类型与案例研究
4.1 GitHub访问令牌泄露
影响:
- 对组织仓库的读写权限
- 可能推送恶意代码
案例:
- 某公共程序员工账户泄露的令牌获得最高奖金
- 2013年私人Bugcrowd项目中的令牌被评为P1严重性
- Discourse组织令牌仅获128美元奖金(争议案例)
4.2 SSH私钥泄露
案例:
- 加密货币程序在Travis CI中使用秘密变量创建SSH密钥
- 开发者使用
cat deploy_key导致私钥输出到日志 - 攻击者可登录基础设施部署服务器
- 获得1000美元奖励
4.3 其他敏感信息
- API密钥
- 数据库凭证
- 云服务访问密钥
- 内部系统端点信息
5. 高级技巧与持续监控
5.1 监控策略
- 设置对目标CI构建的持续监控
- 在每次新提交时自动运行检测工具
- 实时捕获暴露的秘密
5.2 侦察扩展
- 从日志中挖掘隐藏端点和URL
- 检查GitHub上的CI配置文件识别其他集成平台
- 关注不常见的CI服务(超出Travis CI、Circle CI等)
5.3 误报减少技术
- 使用精确匹配模式(如追加=或:)
- 建立常见敏感变量名数据库
- 结合上下文分析(如识别真正的凭证格式)
6. 防御措施与最佳实践
6.1 CI服务安全功能
- Travis CI的[secure]标记替换敏感信息
- 自动过滤超过3个字符的安全环境变量
6.2 开发人员建议
- 避免在日志中输出敏感信息
- 使用CI服务提供的秘密管理功能
- 定期审计构建日志
- 限制令牌权限(最小权限原则)
6.3 组织安全措施
- 教育开发人员CI安全风险
- 实施代码审查防止敏感信息提交
- 监控公开日志中的组织信息泄露
7. 研究扩展方向
- 覆盖更多CI平台(如Jenkins、Azure Pipelines等)
- 自动化实时监控系统开发
- 结合静态分析与动态监控
- 研究CI/CD管道中的其他攻击面
8. 总结
CI服务漏洞挖掘是一项高回报的研究领域,通过系统化的信息收集、自动化分析和持续监控,安全研究人员可以有效地发现敏感信息泄露等高危漏洞。本指南介绍的技术已在多个知名项目中验证有效,获得了从128美元到最高级别不等的奖金。随着CI/CD实践的普及,这一领域的研究价值将持续增长。