CVE-2025-32955:Harden-Runner绕过’disable-sudo’策略漏洞分析
漏洞概述
Harden-Runner包含一个disable-sudo策略选项,旨在阻止GitHub Actions运行器用户使用sudo。该功能通过从sudoers文件中移除运行器用户来实现。然而,由于运行器用户属于docker组,可以与Docker守护进程交互以启动特权容器或访问主机文件系统,攻击者可利用此特性绕过该安全控制。
技术细节
漏洞原理
- 安全控制绕过:尽管
disable-sudo: true配置移除了运行器用户的sudo权限,但该用户仍可通过Docker组权限与Docker守护进程交互 - 权限提升路径:攻击者能够启动特权容器或访问主机文件系统,从而重新获得root访问权限或恢复sudoers文件
- 攻击前提:攻击者需要首先具备在运行器上运行恶意代码的能力(例如通过类似tj-actions的供应链攻击或利用Pwn Request漏洞)
影响范围
- 受影响配置:在GitHub托管的运行器或临时自托管的基于VM的运行器上使用
disable-sudo: true的Harden-Runner配置 - 不受影响环境:基于Kubernetes的Actions Runner Controller (ARC) Harden-Runner不受此问题影响
修复方案
版本更新
此漏洞已在Harden-Runner版本v2.12.0中修复。用户应迁移到更强的disable-sudo-and-containers策略,该设置:
- 禁用sudo访问
- 移除对dockerd和containerd套接字的访问
- 完全从运行器卸载Docker,防止基于容器的权限提升路径
长期改进
disable-sudo选项将在未来被弃用,因为它本身无法充分限制权限提升- Harden-Runner现在包含检测机制,可警报试图绕过disable-sudo策略的行为
参考信息
- CVE ID:CVE-2025-32955
- GHSA ID:GHSA-mxr3-8whj-j74r
- 修复提交:step-security/harden-runner@0634a26
- 官方发布:https://github.com/step-security/harden-runner/releases/tag/v2.12.0
致谢
漏洞由@loresuso和@darryk10报告,感谢他们与团队合作缓解此漏洞。