Featured image of post Steam Workshop部署工具安全漏洞分析:版本控制仓库暴露与凭证保护不足

Steam Workshop部署工具安全漏洞分析:版本控制仓库暴露与凭证保护不足

本文详细分析了steam-workshop-deploy GitHub Action存在的安全漏洞,该漏洞会导致.git目录被意外打包,可能泄露敏感仓库元数据和凭证,包括GitHub个人访问令牌,对代码仓库安全构成严重威胁。

漏洞详情

受影响版本

BoldestDungeon/steam-workshop-deploy (GitHub Actions)

  • 受影响版本:< 2.0.0
  • 修复版本:2.0.0

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目录,则会分发运行机器上的.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行为(触发工作流、读取密钥)
  • 披露提交历史、远程源或其他敏感内部结构

修复建议

严重性评估

由于可能暴露敏感令牌和仓库元数据,此问题应被视为严重问题。虽然大多数使用steam-workshop-deploy的工作流也使用actions/checkout(它更安全地处理令牌和凭证),但在不使用actions/checkout或存在自定义.git文件夹的合法用例中,风险会显著增加。

下游建议

  • 下游组件应撤销与此GitHub Action使用的任何工作流或仓库相关的凭证或PAT

此部署操作的改进

  • 该操作应默认从所有打包操作中排除.git/和其他常见敏感文件
  • 应引入deployignore或类似机制,让用户更精细地控制部署工件中包含的文件或目录

参考信息

安全评分

严重程度:严重 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

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计