SnailSploit/CVE-2026-3288

GitHub: SnailSploit/CVE-2026-3288

针对Kubernetes ingress-nginx rewrite-target注解配置注入漏洞(CVE-2026-3288)的完整技术分析与复现指南。

Stars: 0 | Forks: 0

# CVE-2026-3288:通过 rewrite-target 注解实现 ingress-nginx 配置注入 [![CVE](https://img.shields.io/badge/CVE-2026--3288-red)](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-3288) [![CVSS 评分](https://img.shields.io/badge/CVSS-8.8%20High-critical)](https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator) [![Kubernetes](https://img.shields.io/badge/Kubernetes-ingress--nginx-blue)](https://kubernetes.github.io/ingress-nginx/) [![CWE-20](https://img.shields.io/badge/CWE--20-Improper%20Input%20Validation-orange)](https://cwe.mitre.org/data/definitions/20.html) [![公告](https://img.shields.io/badge/Advisory-Kubernetes%20SRC-success)](https://discuss.kubernetes.io/t/security-advisory-cve-2026-3288-ingress-nginx-rewrite-target-nginx-configuration-injection/34289) ## 目录 * [概述](#overview) * [漏洞详情](#vulnerability-details) * [技术分析](#technical-analysis) * [受影响版本](#affected-versions) * [修复方案](#remediation) * [检测方法](#detection) * [CVSS 指标](#cvss-v31-metrics) * [时间线](#timeline) * [参考链接](#references) * [联系方式](#contact) ## 概述 在 ingress-nginx 中发现了一个安全问题,`nginx.ingress.kubernetes.io/rewrite-target` Ingress 注解可被用于向 nginx 注入配置。这可能导致在 ingress-nginx controller 上下文中执行任意代码,并泄露 controller 可访问的 Secrets。(请注意,在默认安装中,controller 可以访问集群范围内的所有 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 资源的攻击者可以利用此漏洞: - 在 ingress-nginx controller 上下文中执行任意代码 - 读取 controller 可访问的 Secrets - 在默认安装中,访问**集群范围内的所有 Secrets** ### 影响 | 影响领域 | 严重程度 | | --- | --- | | 机密性 | **高** — 完全泄露 Secret(默认配置下为集群范围) | | 完整性 | **高** — 在 controller 上下文中执行任意代码 | | 可用性 | **高** — 完全攻陷 ingress-nginx controller | ### 根本原因 核心问题在于 ingress-nginx 在处理 `rewrite-target` 注解值时缺乏充分的输入验证,导致攻击者控制的内容被直接写入 nginx 配置。这是一个配置注入漏洞 —— 注解值被作为简单的重写路径信任,但其中可以包含任意 nginx 指令。 ## 技术分析 ### 攻击面 在运行 ingress-nginx 的集群中,任何有权创建或修改 Ingress 资源的用户都可以触达此漏洞。该攻击需要: 1. 能够创建/修改 Ingress 资源 2. ingress-nginx controller 必须正在运行 3. 无需额外的用户交互 ### Ingress-nginx 注解注入历史 此漏洞属于 ingress-nginx 中一类既定的注解注入漏洞: | CVE | 年份 | 注解 | 影响 | | --- | --- | --- | --- | | CVE-2021-25746 | 2022 | 多个注解 | 指令注入 | | CVE-2023-5044 | 2023 | `permanent-redirect` | 代码注入 | | CVE-2024-7646 | 2024 | 注解验证绕过 | 验证绕过 | | **CVE-2026-3288** | **2026** | **`rewrite-target`** | **RCE + Secret 泄露** | 反复出现的模式是:注解值在未经充分净化的情况下流入 nginx 配置。不同的注解,相同的根本原因。 ## 受影响版本 | 分支 | 受影响版本 | 修复版本 | | --- | --- | --- | | 1.13.x | < 1.13.8 | **1.13.8** | | 1.14.x | < 1.14.4 | **1.14.4** | | 1.15.x | < 1.15.0 | **1.15.0** | ### 检查是否受影响 ``` # 检查 ingress-nginx 是否已安装 kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx # 检查 ingress-nginx 版本 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 升级至您所用分支的修补版本: ``` # 使用 Helm helm upgrade ingress-nginx ingress-nginx/ingress-nginx \ --namespace ingress-nginx \ --version ``` 请参阅官方升级文档:[Ingress-nginx 升级指南](https://kubernetes.github.io/ingress-nginx/deploy/upgrade/) ### 缓解措施(如果无法立即升级) 在能够升级之前,使用 admission control 阻止使用 `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` 字段内的可疑数据可能表明存在利用此漏洞的尝试。 ``` # 检查可疑的 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"]}' ``` 如果您发现此漏洞已被利用的证据,请联系 [security@kubernetes.io](mailto:security@kubernetes.io)。 ## CVSS v3.1 指标 ``` CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H ``` | 指标 | 值 | | --- | --- | | 攻击向量 | 网络 (AV:N) | | 攻击复杂度 | 低 (AC:L) | | 所需权限 | 低 (PR:L) | | 用户交互 | 无 (UI:N) | | 范围 | 未改变 (S:U) | | 机密性 | 高 (C:H) | | 完整性 | 高 (I:H) | | 可用性 | 高 (A:H) | ## 时间线 | 日期 | 事件 | | --- | --- | | — | 漏洞被发现并报告给 Kubernetes Security Response Committee | | 2026年3月9日 | 发布安全公告 | | 2026年3月9日 | 发布修补版本 (1.13.8, 1.14.4, 1.15.0) | | 2026年3月9日 | 分配 CVE-2026-3288 | ## 参考链接 - [Kubernetes 安全公告](https://discuss.kubernetes.io/t/security-advisory-cve-2026-3288-ingress-nginx-rewrite-target-nginx-configuration-injection/34289) - [GitHub Issue — kubernetes/kubernetes#137560](https://github.com/kubernetes/kubernetes/issues/137560) - [NVD 条目](https://nvd.nist.gov/vuln/detail/CVE-2026-3288) - [GHSA-c56h-j8gw-3v54](https://github.com/advisories/GHSA-c56h-j8gw-3v54) - [Ingress-nginx 升级指南](https://kubernetes.github.io/ingress-nginx/deploy/upgrade/) ## 致谢 **研究员:** Kai Aizen — [SnailSploit](https://snailsploit.com) **致谢:** Tabitha Sable 代表 Kubernetes Security Response Committee ## 免责声明 此信息仅用于安全研究和防御目的。任何出于恶意目的利用此漏洞的行为都是非法和不道德的。在测试您不拥有的系统之前,请务必获得适当的授权。 ## 联系方式 如有关于此漏洞的问题或需要更多信息: - **邮箱:** [kai@owasp.com](mailto:kai@snailsploit.com) - **网站:** [snailsploit.com](https://snailsploit.com) *最后更新:2026年3月10日*
标签:CISA项目, CVE-2026-3288, CVSS 8.8, CWE-20, ingress-nginx, Ingress注解, Nginx, Pandas, RCE, Rewrite-Target, StruQ, Web截图, 中间件安全, 协议分析, 子域名突变, 安全漏洞, 容器安全, 开放策略代理, 提示词注入, 权限提升, 漏洞复现, 输入验证不当, 配置注入