Harden-Runner安全策略绕过漏洞深度解析

本文详细分析了Harden-Runner中一个允许绕过`disable-sudo`安全策略的漏洞(CVE-2025-32955)。该漏洞使得攻击者能利用Docker组权限进行权限提升,最终获得root访问权限或恢复sudoers文件。文章涵盖了漏洞描述、影响、缓解措施及修复版本。

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

漏洞详情

  • 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漏洞)。此漏洞已在Harden-Runner版本v2.12.0中修复。

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

受影响的配置

  • 在GitHub托管的运行器或临时的自托管基于虚拟机的运行器上使用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 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: 最小权限原则违反

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

源代码: step-security/harden-runner

报告者: loresuso, darryk10

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