深入解析CVE-2024-48908:一个GitHub Actions中的代码注入漏洞

本文详细分析了GitHub Action “lychee link checking action”中存在的代码注入漏洞。该漏洞允许攻击者通过恶意构造的输入参数在复合操作的上下文中执行任意代码,对仓库安全构成威胁,已于版本2.0.2中修复。

CVE-2024-48908:lychee link checking action中复合操作的任意代码注入漏洞

漏洞描述

lychee link checking action 是一个用于检查Markdown、HTML和文本文件中链接的GitHub Action。在2.0.2版本之前,其复合操作配置文件action.yml中的lychee-setup部分存在一个任意代码注入漏洞的潜在攻击面。

该漏洞的根源在于,GitHub Action的输入变量inputs.lycheeVersion可以被用来在操作的上下文中执行任意代码

技术细节与影响

漏洞原理

  • 攻击向量:该漏洞属于代码注入类型。攻击者可以通过精心构造lycheeVersion参数的值,注入并执行恶意命令。
  • 利用条件:攻击者需要有能力修改或影响使用此Action的工作流配置文件(如.github/workflows/*.yml)中的lycheeVersion输入值。
  • 隐蔽性:由于该操作在注入代码后仍能继续正常运行,因此攻击行为可能不易被察觉。

概念验证

一个简单的概念验证示例如下,它演示了如何利用此漏洞:

1
2
3
- uses: lycheeverse/lychee@v2
  with:
    lycheeVersion: $(printenv >> $GITHUB_STEP_SUMMARY && echo "v0.16.1")

上述示例会将所有环境变量输出到工作流的摘要中。虽然此示例仅用于演示,但潜在的危害远不止于此。攻击者可以利用此向量执行更危险的命令,从而完全危害目标代码仓库的安全

安全影响

  • 影响范围:使用该Action的代码仓库,如果其工作流配置中lycheeVersion参数的值来自不可信或外部可控的源,则存在风险。
  • 潜在后果:攻击者可窃取仓库密钥、污染构建流程、窃取代码或进行其他恶意活动。
  • 严重等级:根据评估,此漏洞的总体影响被评定为 中等

修复与解决方案

此漏洞已在lycheeverse/lychee-action的2.0.2版本中得到修复。 对于用户而言,最直接的缓解措施是:

  1. 立即升级:确保在你的GitHub工作流中,将lychee action的引用更新至v2.0.2或更高版本
    1
    2
    3
    
    - uses: lycheeverse/lychee-action@v2.0.2  # 使用固定版本
    # 或使用主版本标签,但确保其指向已修复的版本
    - uses: lycheeverse/lychee-action@v2
    
  2. 审查工作流:检查项目中所有使用此Action的工作流文件,确认lycheeVersion或其他输入的来源是否安全。

相关资源与参考

  • 官方公告:GitHub安全公告 GHSA-65rg-554r-9j5x
  • CVE记录:国家漏洞数据库 NVD - CVE-2024-48908
  • 修复提交:可查看GitHub上的相关修复提交记录以了解技术细节。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计