KubeSphere 网关组件(ingress-nginx)安全漏洞公告

漏洞概述

影响版本

  • KubeSphere & KubeSphere 企业版 v3.x 所有版本

  • KubeSphere & KubeSphere 企业版 v4.1.x 所有版本

漏洞等级:严重

漏洞类型:权限提升、信息泄露、安全绕过、目录遍历

漏洞一览表:

漏洞编号类型CVSS 评分简述详细信息

CVE-2025-1097

配置注入

8.8(高危)

通过 auth-tls-match-cn 注解注入恶意配置,可导致任意代码执行和信息泄露

CVE-2025-24514

配置注入

8.8(高危)

通过 auth-url 注解注入恶意配置,可导致任意代码执行和信息泄露

CVE-2025-24513

目录遍历

4.8(中危)

Admission Controller 中的文件路径遍历,可能导致拒绝服务和信息泄露

CVE-2025-1974

远程代码执行

9.8(严重)

Pod 网络可达的未授权远程代码执行漏洞,可导致完全控制集群

CVE-2025-1098

配置注入

8.8(高危)

通过 mirror-targetmirror-host 注解注入恶意配置,可导致任意代码执行和信息泄露

漏洞影响分析

这些漏洞主要通过以下方式影响系统:

  1. 代码执行风险:CVE-2025-1097、CVE-2025-24514、CVE-2025-1098 和 CVE-2025-1974 都可能导致在 ingress-nginx 控制器上下文中执行任意代码。

  2. 信息泄露:由于默认情况下,ingress-nginx 控制器可访问集群内所有命名空间中的 Secrets,这可能导致敏感凭证泄露。

  3. 未授权访问:特别是 CVE-2025-1974,任何能够访问 Pod 网络的攻击者无需认证即可获取集群控制权,CVSS 评分高达 9.8(严重)。

  4. 缓解条件:对于 CVE-2025-24514,如果已启用 enable-annotation-validation 参数(v1.12.0 起默认启用),则不受该漏洞影响。

验证是否受影响

请执行以下步骤检查您的系统是否受影响。

  1. 确认是否使用 ingress-nginx 组件。

    kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx

    如果命令返回结果,表明您正在使用 ingress-nginx。

  2. 检查已安装的 ingress-nginx 版本。

    kubectl exec -it -n ingress-nginx deploy/ingress-nginx-controller -- /nginx-ingress-controller --version

    受影响版本:

    • < v1.11.0

    • v1.11.0 - v1.11.4

    • v1.12.0

    注意

    如果您使用的是受影响版本,请立即采取本文档中的解决方案或缓解措施。

解决方案

1. 升级(nginx 社区推荐方案)

升级至以下安全版本之一:

  • v1.11.5

  • v1.12.1

  • 或更高版本

2. 升级修复(KubeSphere 产品中的网关)

对于 KubeSphere 和 KubeSphere 企业版 v4.1.3,将 Kubesphere 网关升级到 v1.0.4 版本(Ingress-Nginx controller 版本 v1.12.1)。

对于 v4.1.3 之前的 KubeSphere 和 KubeSphere 企业版,请先升级至 v4.1.3。

3. 临时缓解措施

如无法立即升级,可执行以下临时缓解措施。

CVE-2025-1097 缓解措施

检查并移除所有 Ingress 中的 auth-tls-match-cn 注解。

  1. 检查注解。

    kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,AUTH_TLS_MATCH_CN:.metadata.annotations.nginx\.ingress\.kubernetes\.io/auth-tls-match-cn'
  2. 移除注解。

    kubectl annotate ingress -n <namespace-name> <Ingress-name> nginx.ingress.kubernetes.io/auth-tls-match-cn-

CVE-2025-24514 缓解措施

  • 检查并移除所有 Ingress 中的 auth-url 注解。

    1. 检查注解。

      kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,AUTH_URL:.metadata.annotations.nginx\.ingress\.kubernetes\.io/auth-url'
    2. 移除注解。

      kubectl annotate ingress -n <namespace-name> <Ingress-name> nginx.ingress.kubernetes.io/auth-url-
  • 或启用 enable-annotation-validation 参数(此参数从 v1.12.0 起默认启用,但低版本需手动配置)。

    1. 检查是否启用了注解验证功能。

      kubectl get deployment -n ingress-nginx ingress-nginx-controller -o yaml | grep enable-annotation-validation
    2. 如未启用,编辑 deployment 添加参数 --enable-annotation-validation=true,保存后 ingress-nginx-controller 会自动重启。

      kubectl edit deployment -n ingress-nginx ingress-nginx-controller

CVE-2025-24513 和 CVE-2025-1974 缓解措施

KubeSphere 网关默认不开启 Admission Controller,通过以下方法检查您的网关是否开启了 Admission Controller。

  1. 检查所有网关的 release。

    helm list -n A | grep kubesphere-router
  2. 查看所有 release 是否开启了 Admission Controller。

    helm get values [RELEASE_NAME] -n [RELEASE_NAMESPACE]

    controller.admissionWebhooks.enabled 为 true,请立即联系 KubeSphere 安全团队为您解决。

  3. 如果您自行安装了 ingress-nginx,且 controller.admissionWebhooks.enabled 为 true,可使用以下方法检查和禁用 Admission Controller。

    注意

    这仅作为临时缓解措施,如果已升级到安全版本 v1.11.5 或 v1.12.1,则无需禁用 Admission Controller。

    • 若使用 Helm 安装了 ingress-nginx,您需要重新安装,设置 Helm 参数,禁用 admission webhook:

      helm upgrade [RELEASE_NAME] ingress-nginx/ingress-nginx \
        --set controller.admissionWebhooks.enabled=false \
        -n ingress-nginx
    • 若手动安装了 ingress-nginx:

      • 方法 1:删除 ValidatingWebhookConfiguration

        kubectl delete validatingwebhookconfigurations ingress-nginx-admission
      • 方法 2:编辑 Deployment 或 DaemonSet,在 spec.containers.args 部分,删除 --validating-webhook 相关行。

        kubectl edit deployment -n ingress-nginx ingress-nginx-controller
                - --validating-webhook=:8443
                - --validating-webhook-certificate=/usr/local/certificates/cert
                - --validating-webhook-key=/usr/local/certificates/key
    重要提示

    升级到安全版本(v1.11.5、v1.12.1 或更高版本)是解决所有漏洞的完整修复方案。禁用 Admission Controller 仅是在无法立即升级时的临时措施。升级后应保持 Admission Controller 启用,以确保正常功能。

CVE-2025-1098 缓解措施

检查并移除所有 Ingress 中的 mirror-targetmirror-host 注解。

  1. 检查注解。

    kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,MIRROR_TARGET:.metadata.annotations.nginx\.ingress\.kubernetes\.io/mirror-target,MIRROR_HOST:.metadata.annotations.nginx\.ingress\.kubernetes\.io/mirror-host'
  2. 移除注解。

    kubectl annotate ingress -n <namespace-name> <Ingress-name> nginx.ingress.kubernetes.io/mirror-target-
    kubectl annotate ingress -n <namespace-name> <Ingress-name> nginx.ingress.kubernetes.io/mirror-host-

检测方法

使用以下命令检查可能被利用的配置或可疑活动:

  1. 检查可能被用于攻击的 auth-tls-match-cn 注解(CVE-2025-1097)。

    kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,AUTH_TLS_MATCH_CN:.metadata.annotations.nginx\.ingress\.kubernetes\.io/auth-tls-match-cn'

    检查返回结果中是否有可疑内容,特别注意包含特殊字符如 #}}、换行符等的注解值。

  2. 检查可能被用于攻击的 auth-url 注解(CVE-2025-24514)。

    kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,AUTH_URL:.metadata.annotations.nginx\.ingress\.kubernetes\.io/auth-url'

    检查返回结果中是否有可疑内容,特别注意包含 #; 或换行符的 URL。

  3. 检查 Admission Controller 是否开启,这与 CVE-2025-24513 和 CVE-2025-1974 相关。

    kubectl get validatingwebhookconfigurations -l app.kubernetes.io/name=ingress-nginx

    如果返回结果,表示 Admission Controller 已开启,可能存在被攻击的风险。

  4. 检查可能被用于攻击的 mirror-targetmirror-host 注解(CVE-2025-1098)。

    kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,MIRROR_TARGET:.metadata.annotations.nginx\.ingress\.kubernetes\.io/mirror-target,MIRROR_HOST:.metadata.annotations.nginx\.ingress\.kubernetes\.io/mirror-host'

    检查返回结果中是否有可疑内容。

  5. 检查 Pod 日志中是否有可疑活动。

    kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx --tail=1000 | grep -E "error|warn|critical|suspicious|unauthorized"

如果发现可疑配置或活动,请立即隔离受影响的资源并联系 KubeSphere 安全团队进行进一步分析。

安全最佳实践

  • 实施严格的网关访问控制

  • 配置网关路由隔离策略

  • 启用 TLS

  • 限制 Ingress 资源访问权限

  • 启用审计日志监控

  • 实施 RBAC 最小权限原则

  • 定期检查和升级 ingress-nginx 控制器

  • 确保 Admission Controller 不对外暴露

  • 实施网络策略限制 Pod 网络通信

技术支持

如发现漏洞利用证据或需要技术支持,请联系:

通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知


感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。