GitHub PAT written to debug artifacts · CVE-2025-24362
漏洞详情
影响摘要 在某些情况下,代码扫描工作流运行失败后,由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/artifactsv4库),调试工件在工作流作业完成之前上传。在此期间,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/artifactsv4库的拉取请求,该库允许在令牌被撤销之前,在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
严重性:高 (CVSS 7.1)
弱点
- CWE-215:将敏感信息插入调试代码
- CWE-532:将敏感信息插入日志文件