Featured image of post Harden-Runner 安全策略绕过漏洞分析:CVE-2025-32955 与权限升级风险

Harden-Runner 安全策略绕过漏洞分析:CVE-2025-32955 与权限升级风险

本文详细分析了 GitHub Actions 安全加固工具 Harden-Runner 中存在的一个中等严重性漏洞 (CVE-2025-32955)。该漏洞允许攻击者绕过 `disable-sudo` 安全策略,通过 Docker 组权限升级至 root 或恢复 sudoers 文件。文章涵盖了漏洞概述、影响、修复版本及缓解措施。

漏洞详情

CVE ID: CVE-2025-32955 GHSA ID: GHSA-mxr3-8whj-j74r 严重性: 中等 (CVSS 评分: 6.0) 受影响版本: step-security/harden-runner >= 0.12.0, < 2.12.0 已修复版本: 2.12.0 发布日期: 2025年4月21日

描述

摘要

Harden-Runner 包含一个名为 disable-sudo 的策略选项,旨在阻止 GitHub Actions runner 用户使用 sudo。该策略的实现方式是从 sudoers 文件中移除 runner 用户。然而,由于 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 报告。感谢他们与我们合作缓解此漏洞。

参考资料

CVSS v3.1 指标

  • 攻击向量 (AV): 本地 (L)
  • 攻击复杂度 (AC): 低 (L)
  • 所需权限 (PR): 高 (H)
  • 用户交互 (UI): 无 (N)
  • 范围 (S): 未更改 (U)
  • 机密性影响 (C): 无 (N)
  • 完整性影响 (I): 高 (H)
  • 可用性影响 (A): 高 (H)

向量字符串: CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H

相关弱点 (CWE)

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