本周早些时候,Kubernetes 中的一个严重漏洞 (CVE-2018-1002105) 被披露,该漏洞允许未经身份验证的用户执行权限提升并获得集群的完全管理员权限。CVE 的严重性评分高达 9.8(满分 10 分),它影响了 1.0 及以上的所有 Kubernetes 版本,但最新版本也有修复程序。
第一个发现这个漏洞的是 Rancher 的 Darren Shepherd,社区很快就通过对上游主要 K8s 版本 v1.10、v1.11 和 v1.12 的更新修复了它(请继续阅读了解详细信息)。 我们还更新了 Aqua 的开源 kube-hunter 来寻找此漏洞 – 更多详细信息如下。
未经身份验证的远程权限提升
发现的缺陷位于 Kubernetes API 服务器中,该服务器处理集群的所有管理任务。API 服务器通过充当计算节点上运行的 kubelet 的反向代理来提供各种功能。API 服务器在实现 Kubernetes 的 API 聚合功能时还充当反向代理。API 聚合支持将其他应用程序编程接口 (API) 安装到核心 API 服务器中。这些额外的 API 被上游 Kubernetes 称为 API 扩展。
此 CVE 实际上支持两种不同的攻击场景,一种是允许具有 Pod exec/attach/forward 权限的经过身份验证的普通用户提升权限并成为管理员。另一种是允许未经身份验证的远程用户通过聚合的 API 服务器获得访问权限并升级权限。
可以升级 API 调用,以对 Pod 规范中指定的节点上的 kubelet API 执行任何 API 请求(例如,列出节点上的所有 Pod,在这些 Pod 中运行任意命令,并获取命令输出)。Pod exec/attach/portforward 权限包含在 admin/edit/view RBAC 角色中,适用于命名空间受限的用户。pod exec/attach/portforward
只要可以从 Kubernetes API 服务器的网络直接访问该聚合 API 服务器,就可以升级对任何聚合 API 服务器端点的 API 调用,以对该聚合 API 服务器执行任何 API 请求。在默认配置中,允许所有用户(经过身份验证和未经身份验证)执行允许此升级的发现 API 调用。
攻击者可以做什么?
难怪这个 CVE 在严重性量表上得分如此之高;获得管理员权限的远程用户可以获得集群的所有权,这可能允许他执行恶意操作,例如:
-
将恶意代码注入容器中以泄露数据、挖掘加密货币、访问机密
-
关闭整个集群
-
更改准入控制器设置,例如 PodSecurityPolicy 以进一步扩展其功能
所以,真的是任何事情。
缓解措施:我立即更新 K8s 集群
您应该采取的第一个也是最直接的措施是将 K8s 集群升级到下面提到的修复版本。在如此严重的漏洞下运行是非常危险的。
受影响的版本及其修复程序包括:
-
Kubernetes v1.0.x-1.9.x – 无修复程序
-
Kubernetes v1.10.0-1.10.10 – 已在 v1.10.11 中修复
-
Kubernetes v1.11.0-1.11.4 – 已在 v1.11.5 中修复
-
Kubernetes v1.12.0-1.12.2 – 已在 v1.12.3 中修复
如果您在其中一个托管云版本(例如 Azure AKS 和 Google GKE)中运行 k8s,您的云提供商将为您执行此操作。此外,Red Hat 一直在向 OpenShift 客户推送更新。
其他基于配置的缓解措施(例如禁用对 API 的访问)具有高度破坏性且不切实际。
Aqua 如何帮助解决此漏洞?
我们更新了我们的开源工具 kube-hunter,用于发现网络中的所有 Kubernetes 节点,并根据已知的漏洞和利用技术运行自动渗透测试,配备了新的“hunter”,可发现 Kubernetes 权限提升漏洞 (CVE-2018-1002105)。
确保在您的网络上运行 kube-hunter 以发现您的基础设施是否暴露于此漏洞中。
Aqua 客户还可以通过扫描集群上的一台主机来轻松识别其 Kubernetes 或 OpenShift 环境是否受到威胁。这是在 Aqua 控制台中完成的:
-
导航到 Enforcers 部分
-
选择相关的 Aqua Enforcer
-
在选定的执行器中,按 Scan Now(在主机扫描)
列出 CVE 是因为主机正在运行易受攻击的 Kubernetes 版本:
还可以采取哪些措施来保护 Kubernetes
强烈建议改善 Kubernetes 集群的安全状况,使应用程序不易受到未来漏洞(即零日漏洞)的影响,并加快对任何可疑违规行为的检测和响应。
在 Aqua,我们建议用户在每个 Kubernetes 节点上部署 Aqua 的执行器,并启用“防漂移”安全控制,以防止攻击者在其节点上执行任意代码。为 Kubernetes 环境添加类似的安全层可以降低未知漏洞(也称为 0 天攻击)的潜在风险。当然,还要持续使用 kube-bench 和 kube-hunter 来查找 k8s 集群配置中的缺陷。
与之前报道的对 Kubernetes 环境(Tesla、Kubelet 后门)的攻击主要导致加密货币挖矿不同,这个新漏洞可能导致集群完全接管,这种威胁的程度不同。它为所有 Kubernetes 用户敲响了警钟,通过添加额外的预防层来提高其环境的安全级别。
Kubernetes 是一个复杂的软件,使用量(和代码行数)增长非常迅速,因此在 Kubernetes 中发现严重漏洞应该不足为奇,但社区应该为快速修复和交流它而鼓掌。
原文始发于微信公众号(菜鸟小新):Kubernetes 中的严重权限提升漏洞 (CVE-2018-1002105)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论