💡
原文约3800字/词,阅读约需14分钟。
📝
内容提要
过去几个月,我们在开源项目中发现了90多个GitHub Actions工作流的漏洞,并为CodeQL增加了新支持以提升安全性。尽管已有安全指南,漏洞依然普遍,主要由于对工作流交互理解不足。新支持包括对Bash脚本的基本支持和污点跟踪,帮助识别和修复潜在安全问题。
🎯
关键要点
- 过去几个月发现90多个GitHub Actions工作流的漏洞,并为CodeQL增加了新支持以提升安全性。
- 漏洞普遍存在,主要由于对工作流交互理解不足。
- 新支持包括对Bash脚本的基本支持和污点跟踪,帮助识别和修复潜在安全问题。
- CodeQL支持GitHub Actions,帮助识别和修复现有工作流中的漏洞。
- 之前的CodeQL查询存在局限性,无法有效识别复杂的代码注入漏洞。
- 污点跟踪是识别复杂注入漏洞的关键,能够追踪不可信数据的来源。
- 新CodeQL包能够解析Bash脚本,识别来自Bash脚本的污点数据。
- 分析了数千个流行的第三方操作,识别了62个数据源、129个总结和2199个漏洞点。
- 新查询包括代码注入、环境变量注入、路径注入等18种类型。
- 在多个关键组织和代码库中成功识别和报告了漏洞。
- 识别出常见的漏洞模式,如误用pull_request_target触发器和缓存中毒。
- 建议通过严格的仓库检查和工作流拆分来增强安全性。
- workflow_run事件触发器可能导致特权升级攻击,需谨慎使用。
- 有效的缓解措施包括限制工作流范围、验证事件来源和将工件视为不可信。
- 新CodeQL支持GitHub Actions的公共预览,帮助防止供应链攻击。
❓
延伸问答
CodeQL如何帮助保护GitHub Actions工作流?
CodeQL通过增加对GitHub Actions的支持,帮助识别和修复工作流中的漏洞,特别是通过污点跟踪和对Bash脚本的支持。
GitHub Actions中常见的安全漏洞有哪些?
常见的安全漏洞包括代码注入、环境变量注入、路径注入等,尤其是误用pull_request_target触发器和缓存中毒。
如何增强GitHub Actions的安全性?
可以通过严格的仓库检查、工作流拆分和限制工作流范围来增强安全性,确保不信任的数据不会被执行。
污点跟踪在CodeQL中有什么作用?
污点跟踪用于识别复杂的注入漏洞,能够追踪不可信数据的来源,帮助开发者理解数据流动和潜在风险。
新版本的CodeQL支持哪些查询?
新版本的CodeQL支持18种查询,包括代码注入、环境变量注入和路径注入等多种类型的安全漏洞检测。
如何处理GitHub Actions中的不信任数据?
应将所有下载的工件视为不可信,并在使用前进行严格的验证检查,以防止潜在的恶意代码执行。
➡️