Kubernetes中CVE

78次阅读
没有评论

共计 1870 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 Kubernetes 中 CVE-2019-11244 漏洞怎么修复,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

背景知识

为了能更好的理解这个漏洞,需要一些关于 Linux 文件权限的基础知识。

也许你经常使用 chmod 命令来为某个文件设置权限,比如给某个文件设置权限:chmod 755 xxx。这里 755 为十进制数字分别代表文件 Owner 权限、文件 Owner 同组用户权限和其他用户权限,如下图所示:

Kubernetes 中 CVE-2019-11244 漏洞怎么修复

在 Linux 下,使用 ls 命令可以看到文件的权限,如下图所示:

Kubernetes 中 CVE-2019-11244 漏洞怎么修复

针对一个文件设置权限无非就是限制文件的读、写和可执行权限,那么如何理解一个目录的读、写和可执行权限呢?跟据我小范围调查,大多数人不能很好的回答这个问题:一个用户对某个目录拥有读或写权限分别意味着什么?

漏洞描述

CVE-2019-11244 漏洞原文描述如下:

In Kubernetes v1.8.x-v1.14.x, schema info is cached by kubectl in the location specified by –cache-dir (defaulting to $HOME/.kube/http-cache), written with world-writeable permissions (rw-rw-rw-). If –cache-dir is specified and pointed at a different location accessible to other users/groups, the written files may be modified by other users/groups and disrupt the kubectl invocation.

简单的理解就是 kubectl 创建的缓存文件权限为 rw-rw-rw-,也即 666,这些缓存文件有被其他用户修改的风险。

这里其他用户是包含两类:

同 group 下的其他用户(后面称 group 用户);

不同 group 的其他用户(后面称 other 用户);

那么修复这个漏洞,就要收缩这些文件权限,只要做到这些文件不能被这两类用户修改即可(可以拥有读权限)。

社区修复方案

kubectl 会创建一个专门的目录来存放缓存文件,所以这里既要控制目录权限还要控制文件的权限。

在社区的修复方案中,缓存目录权限由 755 变成了 750,即 other 用户将不能进入这个目录,Group 用户仍拥有 r - x 权限,即可以读取目录下的文件列表、可以进入该目录。

针对缓存文件的修改,权限由 755 变成了 660,这里有三个变化:

Owner 用户不再拥有可执行权限(缓存文件拥有可执行文件权限本身也没有意义);

Group 用户拥有 rw- 权限,即 Group 用户仍然可以修改缓存文件;

Other 用户不授予任何权限(即便有权限也无效,因为上层目录已不能访问);

看到这里,问题就清楚了,缓存文件仍然可以被 Group 用户修改,实际上漏洞并没有完全修复。我们可以实际操作演示一下,这里如无特别说明表示使用 root 用户操作:

创建一个目录,并设置权限为 755: # mkdir -m 0750 myPath0750

在目录中创建一个文件,并设置权限为 660:# touch myPath0750/myFile0660; chmod 0660 myPath0750/myFile0660

创建一个 root 组用户,并设置密码:# useradd -G root -d /home/horen -m horen; passwd horen

切换到新用户,尝试修改文件内容:# echo Hello myPath0750/myFile0660;

可以发现文件是可以被修改的。

加固方案

也许社区的修复方案并不能满足你的安全要求,你仍然需要基于社区方案做一些安全加固,就是把缓存文件的权限进一步收缩,由 660 变为 640,即 Group 用户最多只能查看缓存文件内容。

另外,由于目录权限为 750,Group 用户对该目录没有写权限,所以不能修改目录名,不能在该目录下创建文件,达到目录专用的目的。

这里也顺便总结一下目录的可读、可写和可执行三个权限的含义。其实目录本身也是文件,其内容是其子层目录结构,比如目录中的文件列表,文件属性等。

可读:表示你可以列出目录中有什么文件;

可写:表示你可以在目录中创建、删除文件;

可执行:表示你可以进入该目录;

关于“Kubernetes 中 CVE-2019-11244 漏洞怎么修复”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1870字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)