CVE-2025-24362:CodeQL Action调试构件泄露敏感令牌的漏洞剖析

本文详细分析了CVE-2025-24362漏洞,该漏洞导致GitHub CodeQL Action在特定条件下可能将包含GITHUB_TOKEN等敏感信息的调试构件上传,使得拥有仓库读取权限的攻击者能够获取仓库的临时访问权限。

漏洞详情

:actions / github/codeql-action (GitHub Actions)

受影响版本

  • = 3.26.11, <= 3.28.2

  • = 2.26.11, < 3.0.0

已修复版本:3.28.3

影响摘要

在某些情况下,CodeQL Action在代码扫描工作流运行失败后上传的调试构件,可能包含工作流运行期间的环境变量,包括任何作为环境变量暴露给工作流的密钥。拥有该仓库读取权限的用户将能够访问此构件,从而获取环境中的任何密钥。

对于一些受影响的工作流运行,调试构件中暴露的环境变量包含了该工作流运行的有效GITHUB_TOKEN。该令牌有权访问运行工作流的仓库,并拥有工作流或任务中指定的所有权限。GITHUB_TOKEN在任务完成或24小时(以先到者为准)之前保持有效。

只有在满足以下所有条件的工作流运行中,环境变量才会被暴露:

  • 配置为扫描Java/Kotlin语言的代码扫描工作流。
  • 在包含Kotlin源代码的仓库中运行。
  • 启用了调试构件。
  • 使用CodeQL Action版本 <= 3.28.2,以及CodeQL CLI版本 >= 2.9.2 (2022年5月) 和 <= 2.20.2。
  • 工作流运行在github/codeql-action/analyze步骤内数据库最终完成之前失败。
  • 在任何GitHub环境中运行:GitHub.com、GitHub Enterprise Cloud和GitHub Enterprise Server。(注意:构件仅对同一GitHub环境内且有权访问被扫描仓库的用户可访问。)

以这种方式暴露的GITHUB_TOKEN仅在满足上述所有条件之外,还满足以下所有条件的工作流运行中有效:

  • 使用CodeQL Action版本 >= 3.26.11 (2024年10月) 且 <= 3.28.2,或 >= 2.26.11 且 < 3。
  • 仅在GitHub.com或GitHub Enterprise Cloud上运行(在GitHub Enterprise Server上无效)。

在高级设置中,少数情况下,在创建Java、Swift和C/C++的数据库时也可能发生环境变量记录。请阅读相应的CodeQL CLI安全公告GHSA-gqh3-9prg-j95m以了解更多细节。

影响详情

在CodeQL CLI版本 >= 2.9.2 且 <= 2.20.2中,CodeQL Kotlin提取器在创建Kotlin代码的CodeQL数据库过程中,默认会将所有环境变量记录到一个中间文件中。这是CodeQL CLI的一部分,由CodeQL Action调用以分析Kotlin仓库。

在Actions上,记录的环境变量包括GITHUB_TOKEN,该令牌授予对被扫描仓库的权限。包含环境变量的中间文件在最终确定数据库时会被删除,因此不会包含在成功创建的数据库中。然而,如果CodeQL Action在调试模式下被调用,并且在分析运行失败时,该文件会被包含在上传的调试构件中。

因此,在这些特定情况下(使用调试模式的CodeQL Action进行不完整的数据库创建),能够访问调试构件的攻击者将能够未经授权地获取来自环境的仓库密钥,包括GITHUB_TOKEN和任何通过环境变量提供的用户配置密钥。

以这种方式泄露的GITHUB_TOKEN的影响有限:

  • 对于在GitHub.com和GitHub Enterprise Cloud上使用CodeQL Action版本 >= 3.26.11 且 <= 3.28.2,或 >= 2.26.11 且 < 3(这些版本使用actions/artifacts v4库)的工作流,调试构件在工作流任务完成前上传。在此期间GITHUB_TOKEN仍然有效,为攻击者获取仓库访问权限提供了机会。
  • 对于所有其他工作流,调试构件在工作流任务完成后上传,此时泄露的GITHUB_TOKEN已被撤销,无法用于访问仓库。

缓解措施

更新到CodeQL Action版本3.28.3或更高版本,或CodeQL CLI版本2.20.3或更高版本。

补丁

此漏洞已在CodeQL Action版本3.28.3中修复,该版本不再在调试模式下上传数据库构件。此漏洞也将在CodeQL CLI版本2.20.3中修复,在该版本中,为所有语言创建数据库默认不再记录完整环境。

参考资料

致谢

发现者:jstawinski

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计