前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S 生态周报| Kubernetes 爆出全版本漏洞

K8S 生态周报| Kubernetes 爆出全版本漏洞

作者头像
Jintao Zhang
发布2022-12-07 14:36:07
5670
发布2022-12-07 14:36:07
举报
文章被收录于专栏:MoeLoveMoeLove

“「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。 ”

大家好,我是张晋涛。

Kubernetes CVE-2022-3172 安全漏洞

扩展 Kubernetes 的方法有很多种,目前扩展 API 方面用到最多的是 自定义资源定义(CRD)和聚合 API(Aggregation API)。 自定义资源定义主要是为了让 Kubernetes 集群中可以识别到新的资源,此处我主要说明下后者。

聚合 API 实际上是在 kube-apiserver 中运行的,在新 API 注册之前,它并不会工作。如果要添加新的 API,则需要创建一个APIService 对象,用来申请 Kubernetes 中新的 URL 路径。注册成功后,当有发送到此路径中的请求,则会被转发到已经注册 的 APIService 上。

本次公布的 CVE-2022-3172 便与聚合 API 有关。

就像我前面介绍的那样,当新的 URL 被注册成功后,发送到该路径的请求便会被转发到已经注册的 APIService 上。 安全人员发现,目前的实现中存在一个漏洞,APIService 可以将客户端的请求转发到任意的 URL 上,这就有可能会导致 Client 发送请求时,所携带的一些认证信息可能会被发送给第三方。

这也就是我们在安全领域常提到的 SSRF(Server Side Request Forgery),即:服务端请求伪造。 与之对应的是 CSRF(Client Side Request Forgery),即:客户端请求伪造。 它们的区别主要在于攻击目标和过程不同,这里不展开了。

想要知道自己是否可能受到影响?可以执行如下命令进行验证:

代码语言:javascript
复制
kubectl get apiservices.apiregistration.k8s.io -o=jsonpath='{range .items[?(@.spec.service)]}{.metadata.name}{"\n"}{end}'

比如,我在我的某一个集群中执行该命令得到的结果如下:

代码语言:javascript
复制
tao@moelove:~$ kubectl get apiservices.apiregistration.k8s.io -o=jsonpath='{range .items[?(@.spec.service)]}{.metadata.name}{"\n"}{end}'
v1alpha1.cluster.karmada.io

这是由于该集群是 Karmada 的一个 host 集群,而 Karmada 的主要实现方式便是通过聚合 API 来实现的。 当然,大家比较容易接触到的利用聚合 API 的另一服务可能是 metrics-server 。

影响范围

此漏洞几乎影响了当前所有的 Kubernetes 版本。具体如下:

  • kube-apiserver v1.25.0
  • kube-apiserver v1.24.0 - v1.24.4
  • kube-apiserver v1.23.0 - v1.23.10
  • kube-apiserver v1.22.0 - v1.22.13
  • kube-apiserver <= v1.21.14

解决办法

由于聚合 API 默认是 Kubernetes control plane 受信任的部分,之前并没有规避它的办法。所以想要彻底解决该问题的话, 仅能通过升级 进行解决。 新版本中增加对来自 APIService 响应状态码的判断,如果是 3xx 的,则按照配置来决定是否要跟随重定向。

集群维护者可以通过设置 --aggregator-reject-forwarding-redirect=true (默认 true) 来设置拒绝跟随重定向,来避免 SSRF 。

缓解办法

由于本次问题主要是在聚合 API 上,缓解办法可以通过限制对 APIService 资源的操作来达到。 也可以仅仅部署可信来源的 APIService 来避免受到影响。

检测

此外,除了验证自己是否有使用聚合 API 外,也可以通过审计日志中的 responseStatus.code 来进行判断是否有出现重定向的情况。

Helm v3.10.0-rc.1 发布

Helm 其实一直都在比较积极的进行开发和迭代,只不过 Helm 目前功能上已经非常丰富了,所以最近的一些版本中并没有特别大的变更。 更多的都是一些 UX 和 bugfix 之类的。

相比于 v3.9.4 而言,此版本中一些值得聊的变更如下:

  • 新增 helm list --no-headers 参数,可以在执行 helm list 的时候不输出表头。尽管原先我们通过 jq 或者 shell 等都可以实现;
  • 增加了 --burst-limit 参数,用于控制 client-side throttling limit;
  • 新增 --kube-insecure-skip-tls-verifyHELM_KUBEINSECURE_SKIP_TLS_VERIFY,用于控制是否要跳过 kube-apiserver 的证书校验;

更多内容可以参考其 ReleaseNote

Trivy v0.32 发布

Trivy 我之前的文章中已经介绍过多次了,这里就不再重复了。

Trivy 其实与上面提到的 Helm 类似,功能上已经相对丰富了,所以每次版本中并没有特别显著的新特性,整体趋于平稳。

此版本中值得关注的内容如下:

  • 增加了对 Rust 二进制文件的依赖扫描;
  • 增加了对 gradle.lockfile 和 conan.lock 文件的支持;
  • 还有一些对 SBOM 的支持,比如增加对 SPDX 的扫描;

更多内容可以参考其 ReleaseNote

上游进展

  • support removal of event handlers from SharedIndexInformers by alexzielenski · Pull Request #111122 · kubernetes/kubernetes
  • rate limite etcd healthcheck request by aojea · Pull Request #112046 · kubernetes/kubernetes

可控制 kube-apiserver 和 etcd 健康检查之间的流量。

  • exec auth: support TLS config caching by enj · Pull Request #112017 · kubernetes/kubernetes

参考资料

[1] k8s生态: https://zhuanlan.zhihu.com/container

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MoeLove 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Kubernetes CVE-2022-3172 安全漏洞
    • 影响范围
      • 解决办法
        • 缓解办法
          • 检测
            • 参考资料
        • Helm v3.10.0-rc.1 发布
        • Trivy v0.32 发布
        • 上游进展
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档