即前不久刚刚暴出的kubectl cp相关漏洞CVE-2019-11246,近日Kubernetes官方又公布了一个kubectl cp相关漏洞 CVE-2019-11249 ,此漏洞可能允许恶意攻击者利用目录遍历(Directory Traversal)的方式将容器tar包中的恶意文件写入或替换至所在主机上目标路径之外的其他位置,该过程仅受本地用户的系统权限限制。

背景信息

kubectl cp命令用于用户容器和主机之间的文件拷贝,当从容器中拷贝文件时,Kubernetes会首先在容器中执行tar命令创建相应的归档文件,然后发送给客户端,kubectl会在用户主机上进行相应解压操作。

如果容器tar包中包含恶意文件,当攻击者具有kubectl cp命令的执行权限时,可以利用目录遍历Directory Traversal

在本次修复中,cp命令在执行untar过程中对所有子文件的目标路径执行了更严格的校验,禁止所有在cp目标路径外的解压后拷贝动作,以防止untar过程中的恶意攻击。

有关详细信息,请参见Kubernetes披露

官方修复pr请参见 https://github.com/kubernetes/kubernetes/pull/80436/

影响范围

您可以通过运行kubectl version --client命令,来查看 kubectl 版本。

在下列范围内的版本均受次漏洞影响:

  • kubectl 1.0.x-1.12.x
  • kubectl 1.13.0-1.13.8(fixed in v1.13.9)
  • kubectl 1.14.0-1.14.4(fixed in v1.14.5)
  • kubectl 1.15.0-1.15.1(fixed in v1.15.2)

解决方案

通过升级kubectl 的版本来修复该漏洞。请参见安装Kubectl,升级kubectl客户端,安装成功后请再次确认客户端版本号。

  • 如果您的 kubectl 版本为1.13.x 请升级到1.13.9。
  • 如果您的 kubectl 版本为1.14.x,请升级到1.14.5。
  • 如果您的 kubectl 版本为1.15.x,请升级到1.15.2。
  • 如果您的 kubectl 版本为1.12.x及以下版本,请升级到1.13.9、1.14.5或1.15.2版本。