在ingress-nginx中发现了一个安全问题,攻击者可以通过Ingress对象(属于networking.k8s.io或extensions API组)上的nginx.ingress.kubernetes.io/permanent-redirect注解,注入任意命令并获取ingress-nginx控制器的凭据。在默认配置下,该凭据拥有访问集群中所有Secret的权限。
此问题被评为高危(CVSS评分: 3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L),并被分配了CVE编号CVE-2023-5044。
受影响的组件与配置
此漏洞影响ingress-nginx。如果您的集群上没有安装ingress-nginx,则不受影响。您可以运行kubectl get po -n ingress-nginx来检查。
如果您正在运行从v1.2.0版本引入的“chrooted” ingress-nginx控制器(gcr.io/k8s-staging-ingress-nginx/controller-chroot),命令注入仍然可能,但凭据提取无法实现,因此不适用高危严重性等级。
在允许多租户且非管理员用户拥有创建Ingress对象权限的环境中,此问题的影响最为严重。
受影响的版本
< v1.9.0
允许缓解的版本
v1.9.0
缓解措施
Ingress管理员应将--enable-annotation-validation标志设置为true,以强制对ingress-nginx注解字段的内容进行限制。
检测
如果您发现此漏洞被利用的证据,请联系 security@kubernetes.io。
更多详情
致谢 此漏洞由 Jan-Otto Kröpke (Cloudeteer GmbH) 报告。
感谢您, CJ Cullen 代表 Kubernetes 安全响应委员会