详解 CVE-2023-5043:Ingress-Nginx 注释注入导致任意命令执行

在 Kubernetes 的 ingress-nginx 中发现一个高危安全漏洞,攻击者可通过特定注解注入任意命令并获取控制器凭据,该凭据默认拥有集群内所有Secret的访问权限。本文详细说明了受影响版本、缓解措施和检测方法。

CVE-2023-5043: Ingress nginx 注释注入导致任意命令执行

描述 在 ingress-nginx 中发现一个安全问题,其中 Ingress 对象(属于 networking.k8s.io 或 extensions API 组)上的 nginx.ingress.kubernetes.io/configuration-snippet 注解可被用来注入任意命令,并获取 ingress-nginx 控制器的凭据。在默认配置下,该凭据拥有访问集群中所有 Secret 的权限。

此问题被评为 高危 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L),并被分配了 CVE-2023-5043。

受影响的组件和配置 此漏洞影响 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 标志,以强制执行对 ingress-nginx 注解字段内容的限制。

检测 如果您发现此漏洞已被利用的证据,请联系 security@kubernetes.io

更多详情

致谢 此漏洞由 suanve 报告。

感谢您, CJ Cullen,代表 Kubernetes 安全响应委员会


评论与活动节选

  • 2023年10月31日 - danragnar: 当设置 --enable-annotation-validation 时,验证是在准入验证控制器中完成,还是稍后也会进行?
  • 2023年10月31日 - flphvlck: 对于版本 < 1.9.0,有什么缓解方法吗?我们使用的是 v1.8.X 版本,根据兼容性矩阵,我们无法升级到更高版本,因为我们使用的是 Kubernetes < 1.25。您有什么建议吗?或者是否可以忽略兼容性矩阵并更新到最新版本?CVE-2023-5044 也有同样的问题。
  • 2023年11月1日 - thiDucTran: 抱歉…确认一下,我们需要将 --enable-annotation-validation 添加到 ingress-controller 的 kind: Deployment 中,对吗?
  • 2023年11月1日 - helbros86 (回复 thiDucTran): 您需要更新本地的 values.yaml 文件,将此开关设置为 true。如果未使用 Helm,等效操作是在部署文件中添加 --enable-annotation-validation=true 作为参数。
  • 2023年11月1日 - tao12345666333 (回复 flphvlck): 您可以升级,新版本的 Ingress NGINX 中没有特定于 v1.25+ 的功能。但请在升级前务必进行测试。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计