关键词: CVE-2026-3288、ingress-nginx 漏洞、Kubernetes 安全、nginx 配置注入、rewrite-target 注解、RCE、Secret 泄露、CWE-20、CAPEC-176、ingress-nginx CVE 2026、Kubernetes 集群沦陷
在 ingress-nginx 中发现了一个安全问题,nginx.ingress.kubernetes.io/rewrite-target Ingress 注解可被用于向 nginx 注入配置。这可能导致在 ingress-nginx 控制器环境中执行任意代码,并泄露控制器可访问的 Secrets。(注意:在默认安装中,控制器可访问集群范围内的所有 Secrets。)
发现者: Kai Aizen
发布时间: 2026 年 3 月 9 日
CVSS 评分: 8.8(高危)
CWE: CWE-20 — 输入验证不当
CAPEC: CAPEC-176 — 配置/环境操纵
组件: ingress-nginx
攻击类型: 通过 Ingress 注解进行 Nginx 配置注入
所需权限: 低(PR:L)
nginx.ingress.kubernetes.io/rewrite-target Ingress 注解本意是在请求转发到上游服务之前修改请求路径。然而,其实现允许将任意配置指令直接注入到底层 nginx 配置中。
具备创建或修改 Ingress 资源能力的攻击者可利用此漏洞:
| 影响领域 | 严重程度 |
|---|---|
| 机密性 | 高 — 完全泄露 Secret(默认配置下为集群范围) |
| 完整性 | 高 — 可在控制器环境中执行任意代码 |
| 可用性 | 高 — ingress-nginx 控制器被完全攻陷 |
核心问题在于,ingress-nginx 在处理 rewrite-target 注解值时未进行充分的输入验证,使得攻击者控制的内容可直接写入 nginx 配置。这是一个配置注入漏洞——注解值被当作简单的重写路径而受到信任,但其中可以包含任意 nginx 指令。
任何在运行 ingress-nginx 的集群中拥有创建或修改 Ingress 资源权限的用户均可利用此漏洞。攻击需要满足以下条件:
该漏洞属于 ingress-nginx 中一类由来已久的注解注入 bug:
反复出现的模式:注解值在未经充分清理的情况下流入 nginx 配置。注解不同,根本原因相同。
| 分支 | 受影响版本 | 修复版本 |
|---|---|---|
| 1.13.x | < 1.13.8 | 1.13.8 |
| 1.14.x | < 1.14.4 | 1.14.4 |
# Check if ingress-nginx is installed
kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
# Check ingress-nginx version
kubectl exec -n ingress-nginx \
$(kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}') \
-- /nginx-ingress-controller --version
如果您的集群中未安装 ingress-nginx,则您不受影响。
将 ingress-nginx 升级到您所在分支的已修复版本:
# Using Helm
helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--version <patched-chart-version>
请参阅官方升级文档:升级 Ingress-nginx
在您能够升级之前,使用准入控制来阻止 rewrite-target 注解的使用:
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: block-rewrite-target
webhooks:
- name: block-rewrite-target.security.local
rules:
- apiGroups: ["networking.k8s.io"]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["ingresses"]
clientConfig:
# Point to a webhook service that rejects Ingress resources
# containing the rewrite-target annotation
Ingress 资源中 rules.http.paths.path 字段内的可疑数据可能表明存在利用此漏洞的尝试。
# Check for suspicious Ingress annotations
kubectl get ingress --all-namespaces -o json | \
jq '.items[] | select(.metadata.annotations["nginx.ingress.kubernetes.io/rewrite-target"] != null) | {namespace: .metadata.namespace, name: .metadata.name, rewrite: .metadata.annotations["nginx.ingress.kubernetes.io/rewrite-target"]}'
如果您发现此漏洞已被利用的证据,请联系 [email protected]。
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
| 日期 | 事件 |
|---|---|
| — | 发现漏洞并向 Kubernetes 安全响应委员会报告 |
| 2026 年 3 月 9 日 | 发布安全公告 |
| 2026 年 3 月 9 日 | 发布修复版本(1.13.8、1.14.4、1.15.0) |
| 2026 年 3 月 9 日 | 分配 CVE-2026-3288 |
研究人员: Kai Aizen — SnailSploit
鸣谢: Tabitha Sable,代表 Kubernetes 安全响应委员会
此信息仅供安全研究和防御目的使用。出于恶意目的利用此漏洞是非法且不道德的行为。在测试不属于您自己的系统之前,请务必获得适当授权。
如有关于此漏洞的问题或需要更多信息:
最后更新:2026 年 3 月 10 日
该项目的完整文章、方法论及相关研究位于:
https://snailsploit.com/security-research/cves/cve-2026-3288/
由 Kai Aizen 创建 — 独立进攻性安全研究员。
snailsploit.com · 研究 · 框架 · GitHub · LinkedIn · ResearchGate · X/Twitter
同一攻击,不同载体。
| CVE | 年份 | 注解 | 影响 |
|---|
| CVE-2021-25746 | 2022 | 多种注解 | 指令注入 |
| CVE-2023-5044 | 2023 | permanent-redirect | 代码注入 |
| CVE-2024-7646 | 2024 | 注解校验绕过 | 校验绕过 |
| CVE-2026-3288 | 2026 | rewrite-target | RCE + Secret 泄露 |
| 1.15.x | < 1.15.0 | 1.15.0 |
| 指标 | 值 |
|---|
| 攻击向量 | 网络(AV:N) |
| 攻击复杂度 | 低(AC:L) |
| 所需权限 | 低(PR:L) |
| 用户交互 | 无(UI:N) |
| 影响范围 | 不变(S:U) |
| 机密性 | 高(C:H) |
| 完整性 | 高(I:H) |
| 可用性 | 高(A:H) |