漏洞详情
包
- actions/BoldestDungeon/steam-workshop-deploy (GitHub Actions)
- 受影响版本: < 2.0.0
- 已修复版本: 2.0.0
- actions/m00nl1ght-dev/steam-workshop-deploy (GitHub Actions)
- 受影响版本: < 4
- 已修复版本: 4
描述
概述
steam-workshop-deploy GitHub Action 在打包用于部署的内容时,不会排除 .git 目录,且未提供内置的方法来实现此排除。如果目标目录中存在 .git 文件夹(例如,由于存在本地 Git 仓库、自定义项目结构或使用了 actions/checkout 工作流),该文件夹会被静默包含在输出包中。这会导致敏感仓库元数据以及潜在的凭据(包括嵌入在 .git/config 中的 GitHub 个人访问令牌)泄露。
许多游戏模组项目需要从项目根目录进行打包,因为游戏期望某些文件(资源、配置、元数据)存在于特定的根级路径。因此,.git 目录通常与这些必需文件并存,并在无意中被打包,特别是在使用 actions/checkout 时。
虽然 GitHub 托管的运行器会在每个作业结束时自动撤销临时凭据,但此问题的严重性在其他 CI 环境中会急剧增加:
- 自托管运行器可能存储长期有效的令牌或密钥。
- 开发者可能维护着嵌入 PAT 或指向私有仓库远程地址的自有
.git文件夹。 - 工作流可能在没有使用
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): 暴露了长期有效的令牌、组织范围的凭据或具有管理权限的凭据,可能导致完整的仓库入侵、密钥提取、代码篡改或私有仓库源代码的完全泄露。
因此,每个下游消费者应通过检查打包制品中是否存在 .git 目录或其他凭据,并评估发现的任何凭据的敏感性以及包含的任何源代码的机密性,来独立评估其暴露风险。
可能导致的后果包括:
- 通过暴露的 PAT 未经授权访问 Git 仓库。
- 篡改仓库代码或元数据。
- 恶意的 CI 行为(触发工作流、读取密钥)。
- 泄露提交历史、远程源地址或其他敏感的内部结构信息。
建议
由于可能暴露敏感令牌和仓库元数据,此问题应被视为严重。尽管大多数使用 steam-workshop-deploy 的工作流也使用了 actions/checkout(它以更安全的方式处理令牌和凭据),但在某些合法用例中,可能不使用 actions/checkout,或者存在自定义的 .git 文件夹。此外,actions/checkout 可以接受非临时令牌作为其工作流的参数。在这种情况下,长期有效或敏感的凭据可能被打包并暴露,从而极大地增加了未经授权访问和仓库入侵的风险。因此,无论常见的使用模式如何,此问题都应被视为严重。
下游:
- 下游组件应撤销与此 GitHub Action 使用的任何工作流或仓库关联的凭据或 PAT。
此部署 Action
- 该 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
- m00nl1ght-dev/steam-workshop-deploy@913f084
严重性
- 严重等级: Critical
- CVSS 总分: 10.0
- CVSS v3 基础指标: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
弱点
- CWE-212: 在存储或传输前未正确移除敏感信息
- CWE-522: 凭据保护不足
- CWE-527: 版本控制仓库暴露于未授权的控制范围
标识符
- GHSA ID: GHSA-x6gv-2rvh-qmp6
- CVE ID: 无已知 CVE
致谢
- Gamebuster19901 (报告者)