ingress-nginx CVE-2025-1974 须知
今天,ingress-nginx 项目的维护者们发布了一批关键漏洞的修复补丁, 这些漏洞可能让攻击者轻易接管你的 Kubernetes 集群。目前有 40% 以上的 Kubernetes 管理员正在使用 ingress-nginx, 如果你是其中之一,请立即采取行动,保护你的用户和数据。
背景
Ingress 是 Kubernetes 提供的一种传统特性,可以将你的工作负载 Pod 暴露给外部世界,方便外部用户使用。 Kubernetes 用户可以用与实现无关的方式来定义应用如何在网络上可用。 Ingress 控制器会根据定义, 配置所需的本地资源或云端资源,以满足用户的特定场景和需求。
为了满足不同云厂商用户或负载均衡器产品的需求,目前有许多不同类型的 Ingress 控制器。 ingress-nginx 是 Kubernetes 项目提供的纯软件的 Ingress 控制器。 ingress-nginx 由于灵活易用,非常受用户欢迎。它已经被部署在超过 40% 的 Kubernetes 集群中!
ingress-nginx 会将 Ingress 对象中的要求转换为 Nginx(一个强大的开源 Web 服务器守护进程)的配置。 Nginx 使用这些配置接受请求并将其路由到 Kubernetes 集群中运行的不同应用。 正确处理这些 Nginx 配置参数至关重要,因为 ingress-nginx 既要给予用户足够的灵活性, 又要防止用户无意或有意诱使 Nginx 执行其不应执行的操作。
今日修复的漏洞
今天修复的四个 ingress-nginx 漏洞都是对 ingress-nginx 如何处理特定 Nginx 配置细节的改进。 如果不打这些修复补丁,一个精心构造的 Ingress 资源对象就可以让 Nginx 出现异常行为, 包括泄露 ingress-nginx 可访问的 Secret 的值。默认情况下,ingress-nginx 可以访问集群范围内的所有 Secret,因此这往往会导致任一有权限创建 Ingress 的用户或实体接管整个集群。
本次最严重的漏洞是 CVE-2025-1974, CVSS 评分高达 9.8, 它允许 Pod 网络中的任意实体通过 ingress-nginx 的验证性准入控制器特性滥用配置注入漏洞。 这种机制使得这些漏洞会产生更危险的情形:攻击者通常需要能够在集群中创建 Ingress 对象(这是一种较高权限的操作)。 当结合使用今天修复的其他漏洞(比如 CVE-2025-1974), 就意味着 Pod 网络中的任何实体都有极大可能接管你的 Kubernetes 集群,而不需要任何凭证或管理权限。 在许多常见场景下,Pod 网络可以访问云端 VPC 中的所有工作负载,甚至能访问连接到你公司内网的任何人的机器! 这是一个非常严重的安全风险。
我们今天已经发布了 ingress-nginx v1.12.1 和 v1.11.5, 这两个版本修复了所有这 5 个漏洞。
你需要做什么
首先,确定你的集群是否在使用 ingress-nginx。大多数情况下,你可以使用集群管理员权限运行以下命令进行检查:
kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
如果你在使用 ingress-nginx,请立即针对这些漏洞制定补救计划。
最简单且推荐的补救方案是立即升级到最新补丁版本。 安装今天的补丁,就能修复所有这 5 个漏洞。
如果你暂时无法升级,可以通过关闭 ingress-nginx 的验证性准入控制器特性来显著降低风险。
- 如果你使用 Helm 安装了 ingress-nginx
- 重新安装,设置 Helm 参数
controller.admissionWebhooks.enabled=false
- 重新安装,设置 Helm 参数
- 如果你是手动安装的
- 删除名为
ingress-nginx-admission
的 ValidatingWebhookConfiguration - 编辑
ingress-nginx-controller
Deployment 或 DaemonSet,从控制器容器的参数列表中移除--validating-webhook
- 删除名为
如果你为了缓解 CVE-2025-1974 造成的风险而关闭了验证性准入控制器特性, 请在升级完成后记得重新开启此特性。这个特性可以为你的用户提供重要的生命期帮助, 可以在错误的 Ingress 配置在生效之前及时提醒用户。
总结、致谢与更多参考
今天公布的包括 CVE-2025-1974 在内的 ingress-nginx 漏洞对许多 Kubernetes 用户及其数据构成了严重风险。 如果你正在使用 ingress-nginx,请立即采取行动确保自身安全。
我们要感谢来自 Wiz 的 Nir Ohfeld、Sagi Tzadik、Ronen Shustin 和 Hillai Ben-Sasson, 他们负责任地披露了这些漏洞,并与 Kubernetes 安全响应委员会成员以及 ingress-nginx 维护者(Marco Ebert 和 James Strong)协同合作,确保这些漏洞被有效修复。
有关 ingress-nginx 的维护和未来的更多信息, 请参阅这个 GitHub Issue, 或参与 James 和 Marco 在 KubeCon/CloudNativeCon EU 2025 的演讲。
关于本文中提到的具体漏洞的信息,请参阅以下 GitHub Issue: