漏洞详情
包: actions 受影响仓库: BoldestDungeon/steam-workshop-deploy (GitHub Actions) / m00nl1ght-dev/steam-workshop-deploy (GitHub Actions)
受影响版本:
- BoldestDungeon/steam-workshop-deploy: < 2.0.0
- m00nl1ght-dev/steam-workshop-deploy: < 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文件夹,其中嵌入了个人访问令牌或指向私有仓库的远程地址。 - 工作流可能在没有使用
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 目录或其他凭据,并评估发现的任何凭据的敏感性以及包含的任何源代码的机密性,来独立评估其暴露风险。
后果可能包括:
- 通过暴露的个人访问令牌未授权访问 Git 仓库。
- 篡改仓库代码或元数据。
- 恶意的 CI 行为(触发工作流、读取密钥)。
- 泄露提交历史、远程源地址或其他敏感的内部结构。
建议
由于存在暴露敏感令牌和仓库元数据的潜在风险,此问题应被视为严重。尽管大多数使用 steam-workshop-deploy 的工作流也使用了 actions/checkout(它更安全地处理令牌和凭据),但在某些合法用例中可能不使用 actions/checkout 或存在自定义的 .git 文件夹。此外,actions/checkout 可以接受非临时令牌作为其工作流的参数。在这种情况下,长期有效或敏感的凭据可能被打包并暴露,从而大大增加了未授权访问和仓库入侵的风险。因此,无论常见使用模式如何,此问题都应被视为严重。
下游:
- 下游组件应撤销与此 GitHub 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
安全评分
严重性: 严重 CVSS 总分: 10.0
CVSS v3 基础指标
- 攻击向量: 网络
- 攻击复杂度: 低
- 所需权限: 无
- 用户交互: 无
- 范围: 已变更
- 机密性影响: 高
- 完整性影响: 高
- 可用性影响: 无
CVSS向量: 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: 版本控制仓库暴露于未授权的控制范围 产品将 CVS、git 或其他仓库存储在目录、归档或其他资源中,这些资源被存储、传输或以其他方式使未授权参与者可以访问。
CVE ID: 无已知 CVE GHSA ID: GHSA-x6gv-2rvh-qmp6