Harden-Runner安全漏洞:绕过"disable-sudo"策略的权限提升风险

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

Harden-Runner允许绕过"disable-sudo"策略 · CVE-2025-32955

漏洞详情

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

漏洞描述

摘要

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

攻击前提

攻击者要绕过此控制,首先需要能够在运行器上运行恶意代码(例如,通过类似tj-actions的供应链攻击或利用Pwn Request漏洞)。

影响

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

受影响配置

  • 在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策略的行为

致谢

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

参考链接

安全评分

严重程度: 中等
CVSS总体评分: 6.0/10

CVSS v3基础指标

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

CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H

弱点分类

  • CWE-250: 以不必要权限执行
  • CWE-268: 权限链式利用
  • CWE-272: 最小权限原则违反
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计