CVE-2025-24362:GitHub PAT写入调试工件
漏洞详情
包
- 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 中修复,在该版本中,所有语言的数据库创建默认不再记录完整环境。
参考
- 捆绑了包含 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
严重性
高 (7.1)
CVSS v4 基础指标
可利用性指标
- 攻击向量:网络
- 攻击复杂度:低
- 攻击要求:无
- 所需权限:低
- 用户交互:无
脆弱系统影响指标
- 机密性:高
- 完整性:无
- 可用性:无
后续系统影响指标
- 机密性:无
- 完整性:无
- 可用性:无
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
EPSS 分数
0.373% (第58百分位)
弱点
- CWE-215:将敏感信息插入调试代码
- CWE-532:将敏感信息插入日志文件
标识符
- CVE ID: CVE-2025-24362
- GHSA ID: GHSA-vqf5-2xx6-9wfm
源代码
github/codeql-action
致谢
Finder: jstawinski