# nginx-ingress插件安全漏洞预警公告（CVE-2021-25745，CVE-2021-25746）
#### 漏洞详情
Kubernetes开源社区中披露了2个nginx-ingress漏洞：
1. 漏洞CVE-2021-25745：用户有权限可以在创建/更新ingress时，利用'spec.rules\[\].http.paths\[\].path'字段，获取到ingress-controller使用的凭证，这个凭证可以获取集群中所有命名空间的密钥。
2. 漏洞CVE-2021-25746：用户有权限可以在创建/更新ingress时，利用'.metadata.annotations'字段，获取到ingress-controller使用的凭证，这个凭证可以获取集群中所有命名空间的密钥。
表1漏洞信息 
| 漏洞类型 | CVE-ID | 漏洞级别 | 披露/发现时间   |
|:---|:---|:---|:---|
| 权限提升                        | CVE-2021-25745               | 中      | 2022-4-16  |
| 权限提升                        | CVE-2021-25746              | 中    | 2022-4-16 |
   
#### 漏洞影响
该漏洞主要影响以逻辑多租的方式使用CCE集群并且普通用户拥有创建Ingress对象的场景。
#### 判断方法
1.23及以下版本的CCE集群、CCE Turbo集群中：
1. 客户自行安装nginx-ingress的场景，判断nginx-ingress应用的镜像版本是否小于1.2.0
2. 使用CCE提供的nginx-ingress插件，判断插件版本号是否小于2.1.0
#### 漏洞修复方案
1. 漏洞CVE-2021-25745消减措施：通过实施准入策略，将'networking.k8s.io/Ingress'中的'spec.rules\[\].http.paths\[\].path'限制在已知安全字符中（参考社区最新[规则](https://github.com/kubernetes/ingress-nginx/blame/main/internal/ingress/inspector/rules.go)，或者采用[annotation-value-word-blocklist](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#annotation-value-word-blocklist)中的建议值）。
2. 漏洞CVE-2021-25746消减措施：通过实施准入策略，将'metadata.annotations'的值限制在已知的安全字符中（参考社区最新[规则](https://github.com/kubernetes/ingress-nginx/blame/main/internal/ingress/inspector/rules.go)，或者采用[annotation-value-word-blocklist](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#annotation-value-word-blocklist)中的建议值）。
#### 相关链接
1. CVE-2021-25745社区漏洞issue：<https://github.com/kubernetes/ingress-nginx/issues/8502>
2. CVE-2021-25746社区漏洞issue：<https://github.com/kubernetes/ingress-nginx/issues/8503>
3. 社区已经发布版本修复: <https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.2.0>
 
