GitHub开源供应链安全:秘密窃取攻击成新趋势与防御指南
GitHub安全实验室深度分析开源供应链攻击新趋势:攻击者转向窃取API密钥等秘密,利用GitHub Actions工作流漏洞发起攻击。文章提供CodeQL审查、OIDC令牌、可信发布等防御措施,并展望npm与Actions安全路线图。适用于开发者、安全运维人员。
⛓️ High 供应链攻击
近期针对开源供应链的攻击模式出现新变化,攻击者专注于窃取API密钥等秘密,以发布恶意包并横向扩散攻击。攻击常始于GitHub Actions工作流漏洞利用。本文分析了攻击链、GitHub的防御措施(如CodeQL、可信发布)及未来安全路线图。
来源:GitHub Security Lab | 0 | 原文链接
🔍 关键发现
- 攻击者模式转变:从篡改代码转向窃取秘密(如API密钥),以控制发布管道并横向移动。
- 攻击入口点:GitHub Actions工作流是主要攻击目标,特别是错误使用`pull_request_target`触发器或未固定第三方Action版本。
- GitHub防御措施:推广OpenID Connect令牌(OIDC)替代静态秘密,并与npm、PyPI等包仓库合作实现可信发布(Trusted Publishing),消除构建管道中的秘密。
⚔️ 攻击链分析
1. 攻击者寻找并利用GitHub Actions工作流中的安全漏洞(如脚本注入、未固定Action版本)。 2. 成功利用后,窃取工作流中存储的API密钥或访问令牌。 3. 使用窃取的凭据从攻击者控制的机器发布恶意包至包仓库(如npm)。 4. 恶意包被其他项目依赖,进一步窃取更多凭据,形成感染链条。
🛡️ 缓解建议
- ✅ 立即启用CodeQL审查GitHub Actions工作流,检查安全最佳实践。
- ✅ 避免在`pull_request_target`触发器上运行工作流;将第三方Actions固定到完整的提交SHA哈希值。
- ✅ 使用OpenID Connect(OIDC)令牌代替静态秘密,实现可信发布。
- ✅ 利用Dependabot和GitHub Advisory Database监控和更新恶意或易受攻击的依赖项。
涉及漏洞:[]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 攻击者如何利用GitHub Actions窃取秘密?
通过诱骗维护者运行含恶意代码的fork PR(利用pull_request_target触发器),或利用未固定第三方Action的版本劫持,在CI环境中执行恶意脚本窃取环境变量中的秘密。
❓ 可信发布(Trusted Publishing)如何防止秘密泄露?
通过OIDC令牌授权,工作流无需存储静态API密钥。包仓库验证令牌中的工作流身份,若身份匹配则允许发布,即使令牌泄露也无法在其他环境复用。
❓ GitHub如何检测npm恶意包?
GitHub扫描每个新发布的npm包版本(每日超3万),使用持续更新的恶意软件检测模型。发现可疑包后由人工确认再下架,以控制误报率低于1%。