漏洞详情
受影响版本
- BoldestDungeon/steam-workshop-deploy (GitHub Actions):< 2.0.0
- m00nl1ght-dev/steam-workshop-deploy (GitHub Actions):< 4
已修复版本
- BoldestDungeon/steam-workshop-deploy:2.0.0
- m00nl1ght-dev/steam-workshop-deploy:4
漏洞描述
概述
steam-workshop-deploy GitHub Action在打包部署内容时未排除.git目录,且未提供内置的排除方法。如果目标目录中存在.git文件夹(例如由于本地Git仓库、自定义项目结构或通过actions/checkout工作流产生),该目录会被静默包含在输出包中,导致敏感仓库元数据和潜在凭证(包括嵌入在.git/config中的GitHub个人访问令牌)泄露。
许多游戏模组项目需要从项目根目录进行打包,因为游戏期望某些文件(资源、配置、元数据)存在于特定的根级路径。因此,.git目录通常与这些必需文件共存,并在使用actions/checkout时被无意中打包。
虽然GitHub托管的运行器在每个作业结束时自动撤销临时凭证,但在其他CI环境中此问题的严重性会显著增加:
- 自托管运行器可能存储长期有效的令牌或密钥
- 开发人员可能维护自己的.git文件夹,其中嵌入了PAT或指向私有仓库的远程地址
- 工作流可能在没有actions/checkout操作的情况下运行,分发运行机器上存在的.git目录
受影响的模组真实示例:GHSA-7j9v-72w9-ww6w
影响范围
受影响用户
- 任何在打包目录中存在.git环境的steam-workshop-deploy用户
- 任何使用actions/checkout工作流,然后在打包目录中无意生成.git目录的steam-workshop-deploy用户(由于GitHub Actions的临时性,严重性大大降低)
影响程度
此问题对下游组件的严重性范围从0.0(打包目录中不存在凭证、敏感元数据或私有源代码)到10.0(暴露了极其敏感、高权限的凭证或私有仓库的源代码)。
实际严重性主要取决于暴露数据的权限、范围和性质:
- 低/无(0.0-3.9):仅暴露非敏感仓库元数据,不存在凭证,或仅包含公开代码
- 中(4.0-6.9):暴露具有有限仓库访问权限和/或短生命周期的凭证(例如临时令牌),或披露非敏感私有代码
- 高/严重(7.0-10.0):暴露长期有效的令牌、组织范围的凭证或具有管理权限的凭证,可能导致完整的仓库泄露、密钥提取、代码篡改或私有仓库源代码的完全泄露
潜在后果
- 通过暴露的PAT未经授权访问Git仓库
- 篡改仓库代码或元数据
- 恶意CI行为(触发工作流、读取密钥)
- 泄露提交历史、远程源或其他敏感内部结构
修复建议
下游组件
- 撤销与此GitHub Action使用的工作流或仓库相关的任何凭证或PAT
此部署Action
- 默认应从所有打包操作中排除.git/和其他常见敏感文件
- 应引入deployignore或类似机制,为用户提供对部署工件中包含的文件或目录的更精细控制
参考信息
- GHSA-x6gv-2rvh-qmp6
- BoldestDungeon/steam-workshop-deploy@0ba8572
- https://github.com/BoldestDungeon/steam-workshop-deploy/releases/tag/V2.0.0
- https://github.com/m00nl1ght-dev/steam-workshop-deploy/releases/tag/v4
安全评分
严重程度:严重
CVSS总体评分:10.0/10
CVSS v3基础指标
- 攻击向量:网络
- 攻击复杂度:低
- 所需权限:无
- 用户交互:无
- 范围:已更改
- 机密性:高
- 完整性:高
- 可用性:无
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
其他信息
- 弱点:无CWE
- CVE ID:无已知CVE
- GHSA ID:GHSA-x6gv-2rvh-qmp6