2019年5月,Kubernetes社区(后面简称”社区“)修复了标号为CVE-2019-11244的安全漏洞,这个修复方案似乎并不彻底,于是有人发布Issue对此提出异议,希望提供进一步修复方案。

虽然Kubernetes已经非常安全,但对于一些安全标准更高的用户来讲,还是需要针对Kubernetes做进一步的安全加固。

本文先深度分析一下这个漏洞,看在什么情况下会产生安全风险,接着再探讨一下这个漏洞应该如何修复,以但给广大Kubernetes用户提供一些提示。

背景知识

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

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

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

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

漏洞描述

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用户对该目录没有写权限,所以不能修改目录名,不能在该目录下创建文件,达到目录专用的目的。

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

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

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

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

后续

社区的修复方案虽不彻底也可以降低风险,有需要的可以考虑升级。 社区方案已于2019年5月合入v1.12.9、v1.13.7、v1.14.3版本(当时1.15.0尚未发布)。

进一步修复该漏洞的建议不知能否被采纳,本文仅做参考。

linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...相关推荐

  1. linux添加用户出现错误/usr/bin/xauth: file /home/chenwi/.Xauthority does not exist

    错误原因: 是因为添加用户时没有授权对应的目录,仅仅执行了useradd user而没有授权对应的家目录 直接解决办法如下(执行如下命令,以后就登录到终端上就不会出现上面的错误信息): chown u ...

  2. 相册权限_苹果手机惊现漏洞?App在未获取相册权限的情况下成功读取照片

    近日,知乎上网友爆料发现苹果手机存在漏洞,一款名叫"时间规划局"的App可在未获取相册权限的情况下读取照片.专家猜测可能是App调用了苹果的私有库,绕过了系统的授权机制. 2月26 ...

  3. linux授权执行权限6,linux的用户授权

    接触使用linux也有一年了,但是一直没有使用过linux的用户授权之类的操作,前几天需要修改文件的权限,特意学了一下有关权限方面的操作, 今天记录总结一下: 一.创建用户: 1.使用命令 usera ...

  4. linux sudo权限_Linux Sudo 被曝漏洞,可导致用户以 root 权限运行命令

    聚焦源代码安全,网罗国内外最新资讯!编译:奇安信代码卫士团队 Linux 用户要注意了!几乎所有基于 UNIX 和 Linux 的操作系统上安装的核心命令,也是最重要.最强大也最常用的工具 Sudo中 ...

  5. linux 普通用户退出vim,Linux环境下VI/VIM编辑文件时无权限保存的解决方法(普通用户)...

    在Linux环境下,如果直接使用VI/VIM命令编辑没有修改权限的文件时,保存的时候就会提示用户无法进行保存操作,一般的解决方法只能是关闭文件重新以sudo权限打开该文件编辑后再保存(前提是用户具有s ...

  6. Linux 给用户 赋某个文件夹操作的权限

    https://my.oschina.net/cqyj/blog/1796047 在root用户登录的情况,赋予opt目录给liuhai这个用户权限 示例代码: # 将目录/opt 及其下面的所有文件 ...

  7. 在linux下 用户的密码错误,linux中root用户密码错误如何解决

    linux中root用户密码错误如何解决 发布时间:2020-04-27 10:53:03 来源:亿速云 阅读:230 作者:小新 今天小编给大家分享的是linux中root用户密码错误如何解决,相信 ...

  8. Linux之用户授权及权限安全

    给文件设定权限可以限定使用文件的用户,从而保护文件的安全.Linux中文件的一般权限分为r(读).w(写)和x(执行).通过命令ls -l 文件/目录或者ll 文件/目录可以查看文件/目录的权限. 以 ...

  9. Linux创建用户并赋予Root权限

    Linux创建用户并赋予Root权限 添加普通用户 [root@server ~]# useradd test //添加一个名为test的用户 [root@server ~]# passwd test ...

最新文章

  1. 电子商务网站的经验教训
  2. python中的数据写入与添加数据写入文件(to_csv)
  3. hibernate继承关系映射方法(三)--每个具体类一张表TPC
  4. Hive的基本操作-排序
  5. C++的new、delete需要注意的一点:使用危险函数导致的越界CRT detected that the application wrote to memory after end of heap
  6. 改变Jupyter的默认项目路径
  7. 《网络对抗》Exp5 MSF基础应用
  8. php 返回json对象
  9. jenkins安装与自动部署详细说明
  10. idea中pom中有些配置为什么不提示_Delegate IDE build/run actions to maven 配置的影响
  11. ShipConstructor.2006v1.00.rar
  12. 求一堆点中的最大点集合(边界点)
  13. 薛定谔的猫、量子纠缠、和量子计算机
  14. 2021年广东省安全员C证(专职安全生产管理人员)找解析及广东省安全员C证(专职安全生产管理人员)模拟考试题
  15. 服务监控--zabbix
  16. 手写springIOC、AOP
  17. Javaweb安全——Weblogic反序列化漏洞(一)
  18. 要点初见:OpenCL 2.0 异构计算 [第三版] 知识点整理
  19. 2019 前端工程师修炼手册.pdf
  20. Java—反射机制实战及动态代理总结

热门文章

  1. 浅析inline-block--使用inline-block创建布局
  2. js将canvas保存成图片并下载
  3. xshell常用的命令
  4. Mac再建管理员帐户
  5. Ansible: hosts文件拆分为inventory和定义inventory全局变量
  6. 3.4 内置函数(1)
  7. 美团点评DBProxy读写分离使用说明
  8. POJ 3468 A Simple Problem with Integers(线段树:区间更新)
  9. vijos P1740 聪明的质检员
  10. some fragments