Harden-Runner存在绕过'disable-sudo'策略的安全漏洞(CVE-2025-32955)

本文详细分析了GitHub Actions安全工具Harden-Runner中的一个安全漏洞(CVE-2025-32955)。攻击者可以利用Docker组权限,在配置了`disable-sudo true`的Runner上通过启动特权容器或访问主机文件系统来绕过sudo限制,实现权限提升至root。

Harden-Runner允许绕过“disable-sudo”策略 · CVE-2025-32955 · GitHub Advisory Database

漏洞详情

: actions 受影响的仓库: step-security/harden-runner (GitHub Actions) 受影响版本: >= 0.12.0, < 2.12.0 已修复版本: 2.12.0

描述

摘要

Harden-Runner包含一个策略选项disable-sudo,用于阻止GitHub Actions runner用户使用sudo。该功能通过将runner用户从sudoers文件中移除来实现。然而,由于runner用户是docker组的成员,可以绕过此控制。攻击者可以通过与Docker守护进程交互来启动特权容器或访问主机文件系统。这使得攻击者能够重新获得root访问权限或恢复sudoers文件,从而有效地绕过了限制。

攻击者要利用此漏洞,首先需要能够在runner上运行其恶意代码(例如,通过类似于tj-actions的供应链攻击或利用Pwn Request漏洞)。此漏洞已在Harden-Runner版本v2.12.0中修复。

影响

能够在配置了disable-sudo: true的runner上运行其恶意代码的攻击者,可以利用Docker将权限提升至root,从而破坏了预期的安全控制。

受影响配置

  • 在GitHub托管的runner或临时的自托管基于VM的runner上使用disable-sudo: true的Harden-Runner配置。
  • 此问题不适用于基于Kubernetes的Actions Runner Controller (ARC) Harden-Runner。

缓解措施/修复

此漏洞已在Harden-Runner版本v2.12.0中修复。用户应迁移到更强的disable-sudo-and-containers策略。此设置:

  • 禁用sudo访问,
  • 移除对dockerd和containerd套接字的访问,
  • 从runner中完全卸载Docker,防止基于容器的权限提升途径。

其他改进

  • disable-sudo选项将在未来被弃用,因为它本身不足以限制权限提升。
  • Harden-Runner现在包含检测功能,以提醒试图绕过disable-sudo策略的行为。

致谢

由@loresuso和@darryk10报告。我们感谢他们与我们合作以缓解此漏洞。

参考

漏洞信息

严重程度: 中等 CVSS总体评分: 6.0 CVSS v3基础指标: CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H

  • 攻击向量: 本地
  • 攻击复杂度: 低
  • 所需权限: 高
  • 用户交互: 无
  • 范围: 未更改
  • 机密性影响: 无
  • 完整性影响: 高
  • 可用性影响: 高

EPSS分数: 0.022% (第5百分位数)

弱点

  • CWE-250: 以不必要的权限执行
    • 产品以高于所需最低权限级别的权限级别执行操作,这会创建新的弱点或放大其他弱点的后果。
  • CWE-268: 权限链
    • 两种不同的权限、角色、能力或权利可以以某种方式组合,使实体能够执行未授权组合时不允许的不安全操作。
  • CWE-272: 最小权限违规
    • 执行诸如chroot()等操作所需提升的权限级别应在操作完成后立即撤销。

CVE ID: CVE-2025-32955 GHSA ID: GHSA-mxr3-8whj-j74r

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