GitHub PAT写入调试构件:CVE-2025-24362漏洞分析
漏洞概述
CVE-2025-24362 是一个影响GitHub CodeQL Action的高严重性漏洞。在特定情况下,CodeQL Action在上传代码扫描工作流运行失败后的调试构件时,可能包含工作流运行中的环境变量,其中包括任何作为环境变量暴露给工作流的机密信息。拥有仓库读取权限的用户将能够访问此构件,从而获取环境中的任何机密。
受影响的条件
环境变量仅在满足以下所有条件的工作流运行中被暴露:
- 配置为扫描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 中修复,在该版本中,默认情况下所有语言的数据库创建不再记录完整环境。
参考资料
- 捆绑了具有Kotlin提取器环境变量记录的CodeQL CLI 2.9.2的拉取请求
- 引入了actions/artifacts v4库的拉取请求,允许在令牌被撤销之前,在CodeQL Action调试构件中暴露GITHUB_TOKEN
- CodeQL CLI的相关安全公告
- GHSA-vqf5-2xx6-9wfm
- GHSA-gqh3-9prg-j95m
- https://nvd.nist.gov/vuln/detail/CVE-2025-24362
- github/codeql-action#1074
- github/codeql-action#2482
- github/codeql-action@519de26
- https://docs.github.com/en/code-security/code-scanning/troubleshooting-code-scanning/logs-not-detailed-enough
- https://news.ycombinator.com/item?id=43527044
- https://www.praetorian.com/blog/codeqleaked-public-secrets-exposure-leads-to-supply-chain-attack-on-github-codeql
安全信息
- CVE ID: CVE-2025-24362
- GHSA ID: GHSA-vqf5-2xx6-9wfm
- CVSS总体评分: 7.1(高)
- 弱点: CWE-215(将敏感信息插入调试代码),CWE-532(将敏感信息插入日志文件)