Harden-Runner安全漏洞解析:绕过禁用sudo策略的技术细节

本文详细分析了CVE-2025-32955漏洞,该漏洞允许攻击者在配置了disable-sudo策略的GitHub Actions运行器中通过Docker组权限绕过安全限制,实现权限提升。文章涵盖漏洞原理、影响范围及修复方案。

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报告,感谢他们与团队合作缓解此漏洞。

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