漏洞详情
CVE ID: CVE-2025-32955 严重等级: 中等 发布日期: 2025年4月21日 更新日期: 2025年4月22日
受影响组件
软件包: 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,从而击败预期的安全控制。
受影响配置
- 使用了
disable-sudo: true配置的 Harden-Runner,部署在 GitHub 托管的 runner 上或临时的、基于 VM 的自托管 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 报告。感谢他们与我们合作以缓解此漏洞。
参考链接
- GHSA-mxr3-8whj-j74r
- https://nvd.nist.gov/vuln/detail/CVE-2025-32955
- step-security/harden-runner@0634a26
- https://github.com/step-security/harden-runner/releases/tag/v2.12.0
安全评分
CVSS 总体分数: 6.0 (中等)
CVSS v3.1 向量: AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H
EPSS 分数: 0.017% (第3百分位数)
CVSS v3 基础指标
- 攻击向量 (AV): 本地 (L)
- 攻击复杂度 (AC): 低 (L)
- 所需权限 (PR): 高 (H)
- 用户交互 (UI): 无 (N)
- 影响范围 (S): 未改变 (U)
- 机密性影响 (C): 无 (N)
- 完整性影响 (I): 高 (H)
- 可用性影响 (A): 高 (H)
弱点标识
- CWE-250: 以不必要的权限执行
- CWE-268: 权限链式利用
- CWE-272: 违反最小权限原则