Kubernetes 最近爆出特权升级漏洞,这是 Kubernetes 的首个重大安全漏洞。为了修补这个严重的漏洞,Kubernetes 近日推出了几个新版本。
谷歌高级工程师 Jordan Liggitt 在周一发布的 Kubernetes 安全公告中称,Kubernetes v1.10.11、v1.11.5,v1.12.3 和 v1.13.0-rc.1 已经发布了修复版本,修复了特权升级漏洞 CVE-2018-1002105( https://access.redhat.com/security/vulnerabilities/3716411 )。
这个错误的严重程度被指定为 9.8(满分 10 分),因为它可以远程执行,攻击并不复杂,不需要用户交互或特殊权限。
根据 Liggitt 的说法,恶意用户可以通过 Kubernetes API 服务器连接到后端服务器,利用 API 服务器的 TLS 凭证进行身份验证并发送任意请求。
API 服务器是 Kubernetes 的主要管理实体,它与分布式存储控制器 etcd 和 kublet 发生交互,这些代理会监视容器集群中的每个节点。
Rancher Labs 的首席架构师兼联合创始人 Darren Shepherd 发现了这个漏洞。
Red Hat OpenShift 是一个面向企业的容器平台,已经为所有产品打上了补丁。
Red Hat OpenShift 总经理 Ashesh Badani 在一篇博文中表示:“这是一个大问题。不法分子不仅可以窃取敏感数据或注入恶意代码,还可以从企业防火墙内破坏应用程序和服务”。
该漏洞主要有两个攻击媒介。
首先,默认情况下,拥有 Pod exec/attach/portforward 权限的个人可以成为集群管理员,从而获得对 Pod 中任意容器及潜在信息的访问权限。
第二种方法可以让一个未经身份验证的用户访问 API,创建未经批准的服务,这些服务可用于注入恶意代码。
Red Hat 产品安全保障经理 Christopher Robinson 在给 The Register 的一封电子邮件中解释说,“任何未经身份验证但有权限访问 Kubernetes 环境的用户都可以访问用于代理聚合 API 服务器(不是 kube-apiserver)的端点”。
“向 API 发送一个消息,造成升级失败,但连接仍然活跃,这个时候可以重用任意标头,获得集群管理员级别的访问权限来访问聚合 API 服务器。这可以被用于服务目录,进而创建任意服务实例。”
这个漏洞之所以令人如此不安,是因为未经授权的请求很难被检测到。根据 Liggitt 的说法,它们不会出现在 Kubernetes API 服务器的审计日志或服务器日志中。恶意请求在 kublet 或聚合 API 服务器日志中是可见的,但却难以将它们与经过授权的请求区分开来。
现在的修复办法只有一个,那就是升级 Kubernetes,就现在。 Kubernetes v1.10.11,v1.11.5,v1.12.3 和 v1.13.0-rc.1 已经发布了修补版本。
如果你仍在使用 Kubernetes v1.0.x-1.9.x,请更新到修补版本。 如果由于某种原因无法升级,还是有补救措施,但破坏性很大:必须暂停使用聚合的 API 服务器,并从不应有 kubelet API 完全访问权限的用户中删除 pod exec / attach / portforward 权限。Jordan Liggitt 表示,这些补救措施可能具有破坏性。
所以唯一的解决方法是升级 Kubernetes。
虽然现在还没有人利用这个漏洞进行共计,但是滥用漏洞会在日志中留下明显的痕迹。 而且,既然有关 Kubernetes 特权升级漏洞的消息已经公开,那么这个漏洞被滥用只是时间问题。
因此,在陷入困境之前,还是对 Kubernetes 系统进行升级吧。
参考链接:
https://www.theregister.co.uk/2018/12/03/container_code_clusterfact_theres_a_hole_in_kubernetes
https://www.zdnet.com/article/kubernetes-first-major-security-hole-discovered/#ftag=RSSbaffb68