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的受影响范围内。
漏洞详情
| 漏洞类型 | CVE-ID | 漏洞级别 | 披露/发现时间 |
|---|---|---|---|
| 拒绝服务、RCE | 严重 | 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控制器插件版本发布记录。
判断方法
- 前往插件中心,查看是否已安装NGINX Ingress控制器插件以及插件版本。 图1 查看已安装插件版本
- 若插件版本在5.0.14、6.0.24及以下,则受漏洞影响,按步骤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配置满足以下条件可能触发漏洞:
- rewrite指令使用未命名捕获组($1、$2 等)。
- 替换字符串中包含 ?(查询参数)。
- 同一作用域中紧跟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的配置加固:
- 查看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"
- 使用命名捕获组: 将所有配置中危险的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 - 参考第2步,修改Ingress资源的annotation中的nginx.ingress.kubernetes.io/configuration-snippet注释。
漏洞修复方案
CCE将发布新的NGINX Ingress控制器插件修复该漏洞,请留意NGINX Ingress控制器插件版本发布记录。
相关链接
NGINX 官方安全通告:https://nginx.org/en/security_advisories.html