「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

Kubernetes 仪表盘和外部 IP 代理漏洞及应对之策

2020 年 4 月 23 日

Kubernetes仪表盘和外部IP代理漏洞及应对之策

近期,Kubernetes 仪表盘和外部 IP 代理接连被发现存在安全问题。针对这两个漏洞,Kubernetes 发布了相应的补丁版本供会受漏洞影响的用户解决问题。本文将更深入解读这两个安全漏洞的原理、会对您的 Kubernetes 部署造成的影响以及相应的应对之策。


通过 kubernetes 仪表盘访问自定义 TLS 证书

Kubernetes 仪表盘漏洞(CVE-2018-18264)会影响 v1.10.0 或更早的仪表盘版本。因为这一漏洞,用户可以“跳过”登录过程,假设配置的服务帐户,最后获得仪表盘所使用的自定义 TLS 证书。如果您已将 Kubernetes 仪表盘配置为需要登录并将其配置为使用自定义 TLS 证书,那么这一漏洞会影响到您,您需要及时注意。


该漏洞的运作原理

此漏洞可以分为两部分来解释。


第一个是,因为登陆时用户可以选择“跳过”这一选项,那么任何用户都可以绕过登录过程,该过程在 v1.10.0 或更早版本中始终默认启用。这样一来,用户就完全跳过登录过程并能使用仪表盘配置的服务帐户。


第二个是,使用仪表盘配置的服务帐户,必须最低限度地有权限访问自定义 TLS 证书(以 secret 的形式存储)。未经身份验证的登录,加上仪表板使用配置的服务帐户来检索这些 secret 的能力,组合在一起的结果就是这一安全问题。


使用仪表盘 v1.10.1 补丁时,默认情况下将不再启用“跳过”选项,并且会禁用仪表盘在 UI 中检索和显示它的功能。



该漏洞对 Rancher 1.6.x 和 2.x 意味着什么?

在 Rancher 2.x 中,默认情况下不会启用 Kubernetes 仪表盘,因为 Rancher 2.0 用户界面可用作替代方案。若您不会使用到仪表盘代码库,则不受此漏洞的影响。如果您更改了默认设置、在 Rancher 管理的任何 Kubernetes 集群之上部署了 Kubernetes 仪表盘,请务必使用 Kubernetes 官方提供的指南及补丁修复这一漏洞。


如果你使用的是 Rancher 1.6.x,则完全无需担心。在 Rancher 1.6.x 中,Kubernetes 仪表盘作为每个 Kubernetes 集群环境的一部分包含在内;但是,1.6.x 部署不受影响,因为 Rancher Server 充当了 Kubernetes 仪表盘的身份验证授权和代理。它不利用默认的 Kubernetes 仪表盘登录机制。此外,Rancher 部署的 Kubernetes 仪表盘不使用任何自定义 TLS 证书。


Kubernetes API 服务器外部 IP 地址代理漏洞

下面让我们来探讨 Kubernetes 公告所描述的第二个漏洞。


Kubernetes API 服务器使用节点、node 或服务代理 API,将请求代理到 pod 或节点。通过直接修改 podIP 或 nodeIP,可以将代理请求定向到任何 IP。API 服务器总是被部署在某网络中的,利用这个漏洞就访问该网络中的任何可用 IP 了。尽管自从 v1.10 发布以来,Kubernetes 已经在很大程度上增加了检查以缓解这个问题,但最近才发现有一条路径的问题并没有被完全解决——将代理指向本地地址到运行 API 服务器的主机。


该漏洞的运作原理

通过使用 Kubernetes API,用户可以使用节点代理、pod 代理或服务代理 API 请求与 pod 或节点的连接。Kubernetes 接受此请求,找到 podIP 或 nodeIP 的关联 IP,并最终将该请求转发到该 IP。这些通常由 Kubernetes 自动分配。但是,集群管理员(或具有类似“超级用户”权限的不同角色)可以更新资源的 podIP 或 nodeIP 字段以指向任意 IP。


这在很大程度上不是问题,因为“普通”用户无法更改资源的 podIP 或 nodeIP。podIP 和 nodeIP 字段位于 pod 和节点资源的状态子资源中。为了更新状态子资源,必须专门授予 RBAC 规则。默认情况下,除了集群管理员和内部 Kubernetes 组件(例如 kubelet、controller-manager、scheduler)之外,没有 Kubernetes 角色可以访问状态子资源。想要利用此漏洞,首先得拥有对集群的高级别访问权限。


这一次 Kubernetes 官方发布的修复,是确定攻击向量可以存在于与集群分开管理控制面板的设置中。在这种情况下,集群管理员是不能访问运行 API 服务器的主机的。这种情况存在于您从云提供商处获得的托管 Kubernetes 服务中。在这种情况下,集群管理员可以通过将 podIP / nodeIP 修改为本地地址(如 127.0.0.1)来访问 API 服务器的本地地址。今天发布的修复将阻止代理到本地地址。



这对 Rancher 用户意味着什么?

Rancher 托管集群的默认权限,仅允许集群所有者和成员更改 podIP 或 nodeIP 字段。将该权限提供给其他用户时,必须假定允许用户能够完全访问集群中的任何节点。所有其他默认角色(例如项目所有者/成员)都无权访问这些字段。今天发布的修复程序所适用的部署的 Kubernete 集群,是其控制面板网络与应用程序使用的网络不同的。在 Rancher 1.6.x 或 2.x 中创建的 Kubernete 集群,均默认集群管理员具有对控制面板节点的完全访问权限。如果您正在使用 Rancher 2.x,并且正在使用托管云提供商(例如 EKS、GKE、AKS),请与他们核实安全性是否存在问题,因为控制面板是归云提供商所有。


我们始终希望能确保 Rancher 用户能够在最短时间内使用到最新的安全修复程序和相应补丁,Kubernetes 版本 v1.10.12、v1.11.6 和 v1.12.4 解决了这两个安全漏洞,这三个版本的 Kubernetes 将可在 Rancher 版本 v2.1.5 和 v2.0.10 中使用。如果你是 Rancher v1.6.x 版本的用户,则无需做任何更新,因为标准的 v1.6.x 安装不受这次安全漏洞影响。


您还可以通过下述两个链接了解到 Kubernetes 官方针对这两个漏洞的相应讨论:


https://discuss.kubernetes.io/t/security-release-of-dashboard-v1-10-1-cve-2018-18264/4069


https://discuss.kubernetes.io/t/security-impact-of-kubernetes-api-server-external-ip-address-proxying/4072


2020 年 4 月 23 日 17:22151

评论

发布
暂无评论
发现更多内容

Rancher 2.5.6发布,支持Kubernetes 1.20

RancherLabs

办公自动化:Day01

缭乱地男神

办公自动化 IT蜗壳教学

史上超强拷贝仓——GitHub 热点速览 v.21.11

HelloGitHub

GitHub 开源项目

看了 GitHub 上的这些面试题项目后,我飘了!

JackTian

GitHub 面试题 开源项目 面试技巧 面试大厂真题

燃烧吧!开发者们,一起在云端构建开放成熟的 ARM 生态!

亚马逊云科技 (Amazon Web Services)

还在等机会?Android岗面试12家大厂成功跳槽,最全的BAT大厂面试题整理

欢喜学安卓

android 程序员 面试 移动开发

语音通话 2.0

anyRTC开发者

音视频 WebRTC RTC 语音通话

别再做智慧园区无效投入了!想要高效运行试试这个方法

一只数据鲸鱼

物联网 数据可视化 智慧城市 智慧园区

掌握了开源框架还不够,你更需要掌握源代码

华为云开发者社区

开源 Element 开源框架 源代码 Vue 3

为什么MySQL不推荐使用子查询和join

Java小咖秀

MySQL MySQL优化

软件匠艺

Teobler

敏捷 敏捷开发 软件匠艺 伪敏捷

不愧为Java程序员福音 2021阿里巴巴中台架构实战重磅来袭!

比伯

Java 编程 架构 面试 程序人生

协助市场监督管理局,打造质量基础设施“一站式”服务平台

源中瑞-龙先生

网易 Duilib:功能全面的开源桌面 UI 开发框架

有道技术团队

开源

大作业--联合运营平台

ALone

寻找被遗忘的勇气(十六)

Changing Lin

3月日更

几个你不知道的dubbo注册中心细节

捉虫大师

zookeeper dubbo 注册中心

我帮大厂做架构之——微信的“N个朋友读过”怎么实现

臧萌

成长 架构师 职场成长

【LeetCode】螺旋矩阵 II Java 题解

HQ数字卡

算法 LeetCode 28天写作 3月日更

大作业《云复制高级配置功能产品需求文档》

李钊悌

白话解读 WebRTC 音频 NetEQ 及优化实践

阿里云视频云

阿里云 音视频 WebRTC

华为在数字化浪潮下的API变革实践

华为云开发者社区

华为 架构 数字化 API API战略

EFT是什么?EGG公链又是什么?一文带你了解

币圈那点事

公链 挖矿 #区块链#

你的头发还好吗?大数据分析脱发城市哪里强

不脱发的程序猿

程序人生 数据分析 3月日更 大数据分析脱发 程序员脱发

第一个mybatis程序,实现CRUD

xiezhr

mybatis 中间件 crud

Java面试“圣经”,已助朋友拿到7个Offer!2021年金三银四面试知识点合集

Java架构追梦

Java 阿里巴巴 架构师 面试知识点总结 面试突击

初识Golang之声明变量

Kylin

读书笔记 golang新手 3月日更 21天挑战 Java转go

JVM笔记--如果你写JVM,最需要考虑的重要结构是什么?

秦怀杂货店

Java JVM Java 8

OpenCV萌新福音:易上手的数字识别实践案例

华为云开发者社区

OpenCV 图像处理 数字 图像预处理 信用卡

APP搜索如何又快又准?

华为云开发者社区

elasticsearch App 搜索 云搜索 词库

带你全面认识CMMI V2.0(二)

渠成CMMI

项目管理 CMMI

Kubernetes仪表盘和外部IP代理漏洞及应对之策-InfoQ