文档首页/ 云容器引擎 CCE/ 服务公告/ 漏洞公告/ NGINX Ingress控制器漏洞公告(CVE-2026-42945)
更新时间:2026-05-15 GMT+08:00
分享

NGINX Ingress控制器漏洞公告(CVE-2026-42945)

该漏洞是一个NGINX模块的堆缓冲区溢出漏洞,对于命中触发配置的NGINX服务,该漏洞会导致Worker进程崩溃并重启,造成DoS攻击。对于关闭了ASLR地址空间随机化的Nginx服务,可以被RCE攻击。

Kubernetes社区Ingress NGINX控制器 从v1.13.3开始使用NGINX 1.27.1,该版本位于CVE-2026-42945的受影响范围内

漏洞详情

表1 漏洞信息

漏洞类型

CVE-ID

漏洞级别

披露/发现时间

拒绝服务、RCE

CVE-2026-42945

严重

2026-05-13

漏洞影响

受漏洞影响的开源Ingress NGINX控制器版本范围如下:

  • ≤ v1.13.9
  • ≤ v1.14.5

CCE服务的NGINX Ingress控制器插件版本5.0.14、6.0.24及以下均受该漏洞影响。尽管CCE发布的OS镜像操作系统默认已开启ASLR地址空间随机化,能够阻止RCE攻击,但仍存在DoS攻击风险。CCE NGINX Ingress控制器插件与开源版本的对应关系参见NGINX Ingress控制器插件版本发布记录

判断方法

  1. 前往插件中心,查看是否已安装NGINX Ingress控制器插件以及插件版本。
    图1 查看已安装插件版本

  2. 若插件版本在5.0.14、6.0.24及以下,则受漏洞影响,按步骤3进一步排查,否则不受这些漏洞影响。
  3. 查看CCE NGINX Ingress控制器插件Pod中的nginx配置。

    执行以下命令查看已安装的CCE NGINX Ingress控制器插件Pod:

    kubectl get po -A|grep cceaddon-nginx-ingress|grep controller

    如下图所述,集群已安装了两个nginx ingress controller:

    执行以下命令查看nginx.conf中的rewrite配置:

    kubectl exec -it cceaddon-nginx-ingress-controller-8d44d5bb5-csqfj -n kube-system -- cat /etc/nginx/nginx.conf |grep -A 5 -B 5 rewrite

    输出的nginx rewrite配置满足以下条件可能触发漏洞:

    1. rewrite指令使用未命名捕获组($1、$2 等)。
    2. 替换字符串中包含 ?(查询参数)。
    3. 同一作用域中紧跟set、if或另一个rewrite指令引用了该捕获组。

    常见触发配置示例(以下均有风险):

    • 示例1:API路由
      # rewrite ^/api/(.*)$ /internal?migrated=true;
      set $original_endpoint $1;
    • 示例2:WordPress永久链接
      rewrite ^/(.*)$ /index.php?q=$1;
    • 示例3:PHP前端控制器
      rewrite ^/app/(.*)$ /app.php?path=$1 last;
      set $route $1;

漏洞消减方案

在修复之前,建议您按最小权限原则,只给予受信用户创建及管理Ingress的权限,详情请参见命名空间权限(Kubernetes RBAC授权)

若排查结果显示符合漏洞触发条件,可以通过修改Ingress的配置加固:

  1. 查看Ingress配置:
    kubectl get ingress -A -o yaml | grep -A 5 -B 5 "nginx.ingress.kubernetes.io/rewrite-target"
    kubectl get ingress -A -o yaml | grep -A 5 -B 5 "nginx.ingress.kubernetes.io/configuration-snippet"
  2. 使用命名捕获组:
    将所有配置中危险的rewrite和set指令组合中的“未命名捕获组”(如$1、$2)替换为“命名捕获组”(如 (?<name>...))
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: safe-ingress
      annotations:
        # 使用命名捕获组 $path,并保留问号(但命名捕获组可规避漏洞)
        nginx.ingress.kubernetes.io/rewrite-target: /new-path/$path?
        nginx.ingress.kubernetes.io/configuration-snippet: |
          set $my_var $uri;   # 仍然存在后续指令,但因使用了命名捕获组,漏洞被抑制
    spec:
      rules:
      - host: example.com
        http:
          paths:
          - path: /old/(?<path>.*)   # 定义命名捕获组 path
            pathType: Prefix
            backend:
              service:
                name: backend-svc
                port:
                  number: 80
  3. 参考第2步,修改Ingress资源的annotation中的nginx.ingress.kubernetes.io/configuration-snippet注释。

漏洞修复方案

CCE将发布新的NGINX Ingress控制器插件修复该漏洞,请留意NGINX Ingress控制器插件版本发布记录

相关链接

NGINX 官方安全通告:https://nginx.org/en/security_advisories.html

相关文档