如何使用CodeQL保护您的GitHub Actions工作流

如何使用CodeQL保护您的GitHub Actions工作流

💡 原文约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中的不信任数据?

应将所有下载的工件视为不可信,并在使用前进行严格的验证检查,以防止潜在的恶意代码执行。

➡️

继续阅读