Kubernetes安全漏洞CVE-2025-5187深度解析:节点通过OwnerReference自删除的风险

本文详细分析了Kubernetes中的一个中危安全漏洞CVE-2025-5187。该漏洞存在于NodeRestriction准入控制器中,允许节点用户通过为自身添加一个集群范围资源的OwnerReference,从而在垃圾回收过程中删除其对应的节点对象,进而可能修改节点的污点和标签以控制Pod调度。

CVE-2025-5187: 节点通过添加OwnerReference删除自身

CVSS评分: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:L - 中危 (6.7)

漏洞描述

NodeRestriction准入控制器中存在一个漏洞,节点用户可以通过为其对应的节点对象打补丁,添加一个指向集群范围资源的OwnerReference,从而删除该节点对象。如果该OwnerReference引用的资源不存在或随后被删除,给定的节点对象将通过垃圾回收机制被删除。

默认情况下,节点用户被授权对其节点对象执行创建和修补请求,但没有删除权限。由于NodeRestriction准入控制器未能阻止对OwnerReferences的修补,受攻击的节点可利用此漏洞删除然后重新创建其节点对象。这将允许节点对象以被修改的污点或标签重新创建,而这些修改通常会被此插件拒绝。修改节点上的污点或标签可能允许攻击者控制在受攻击节点上运行的Pod。

我是否受影响?

所有已启用NodeRestriction但未启用OwnerReferencesPermissionEnforcement准入控制器的集群均受此漏洞影响。OwnerReferencesPermissionEnforcement控制器保护对对象OwnerReferences的访问,以便只有对对象具有删除权限的用户才能更改它。

受影响版本

  • kube-apiserver: <= v1.31.11
  • kube-apiserver: <= v1.32.7
  • kube-apiserver: <= v1.33.3

如何缓解此漏洞?

可以通过将kube-apiserver二进制文件升级到以下列出的1.31至1.33版本中已修补的次要版本来缓解此问题。这些修复版本已在NodeRestriction准入控制器中添加了功能,以防止节点用户修改其自身的OwnerReferences。

或者,可以通过启用OwnerReferencesPermissionEnforcement准入控制器来缓解此漏洞,该控制器将阻止任何对对象没有删除权限的用户修改该对象上的OwnerReferences。请注意,此准入控制器将适用于所有用户和对象类型。

已修复版本

  • kube-apiserver: >= v1.31.12
  • kube-apiserver: >= v1.32.8
  • kube-apiserver: >= v1.33.4

检测

对于已启用NodeRestriction但未启用OwnerReferencesPermissionEnforcement的集群,可以通过分析API审计日志中由节点用户发出的、修改OwnerReferences的节点修补请求来检测此问题。在正常操作中,Kubelet永远不会发出修改其自身OwnerReferences的修补请求。

如果您发现此漏洞已被利用的证据,请联系 security@kubernetes.io

致谢

此漏洞由Paul Viossat报告。 该问题由以下人员修复和协调:

  • Sergey Kanzhelev @SergeyKanzhelev
  • Jordan Liggitt @liggitt
  • Marko Mudrinić @xmudrii
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计