修复kubelet默认允许匿名访问
kubelet默认启动参数--anonymous-auth=true
风险非常大,黑客可以在集群中植入挖坑程序,甚至通过这个漏洞获取宿主系统root权限。感谢 cqspirit
PR #192 提醒
关于漏洞的危害
据我所知k8s v1.5+ 所有版本的kubelet组件的默认启动参数是允许匿名访问kubelet的(默认的大坑),你可以使用如下命令检查你的集群:
curl -sk https://$NodeIP:10250/runningpods/
- 如果返回了运行的pod信息,说明是允许匿名访问的,
- 如果返回
Unauthorized
,说明是安全的
部分关于该漏洞的讨论参考如下:
- kubelet-exploit
- Kubernetes-From-Container-To-Cluster
- Analysis of a Kubernetes hack -- Backdooring through kubelet
漏洞的修复
最新代码已经修复,参考官方文档说明,已有集群可以登录ansible控制端操作如下:
$ cd /etc/ansible
$ git pull origin master
$ ansible-playbook 22.upgrade.yml -t restart_master,restart_node