CVE-2020-8558
1 分钟 阅读时间
kube-proxy
组件在 iptables
和 ipvs
模式下均需要设置内核参数 net.ipv4.conf.all.route_localnet=1
, 从而允许本地回环访问。攻击者可能通过共享主机网络的容器,或在集群节点访问同一个 LAN 或二层网络下的相邻节点上绑定监听本地 127.0.0.1
端口的 TCP/UDP 服务,从而获取接口信息。如果您的服务没有设置必要的安全认证,可能会造成信息泄露风险。
漏洞影响
当攻击者拥有主机网络配置能力或运行在一个具备了 CAP_NET_RAW
能力的容器实例时,就可以获取在目标节点上监听 127.0.0.1
的服务 socket
信息。如果在目标主机上存在 127.0.0.1
可以访问且不需要任何认证鉴权的暴露服务,那么该服务信息就能被攻击者获取。
漏洞评分
- 如果集群
API Server
开启了非认证端口(默认 8080),那么攻击者可能获取到API Server
接口相关信息,威胁等级为高危漏洞,评分为 8.8 分。 - 如果集群
API Server
默认关闭了非认证端口,威胁等级为中危漏洞,评分为 5.4 分。
防范措施
建议您采取以下安全防范措施:
如果业务容器需使用主机网络模式且又在非安全端口上监听,则可以通过在节点上手动添加 iptables
规则来缓解此漏洞。
执行以下命令在集群中配置 iptables
规则,用于拒绝非本地对 127.0.0.1
的访问流量:
iptables -I INPUT --dst 127.0.0.0/8 ! --src 127.0.0.0/8 -m conntrack ! --ctstate RELATED,ESTABLISHED,DNAT -j DROP
如果集群不需要开启 API Server 不安全端口,可以将 --insecure-port=0
添加到 kubernetes API 服务器命令行来禁用端口。
如集群内运行不受信任的容器,可以禁止 Container
开启 CAP_NET_RAW
能力,在 pod spec
中关闭 Container
的 CAP_NET_RAW
能力。
securityContext:
capabilities:
drop:
- "NET_RAW"
通过 PodSecurityPolicy
策略限制部署特权或共享主机网络容器,另外可以通过在策略中配置 requiredDropCapabilities
强制容器部署关闭 CAP_NET_RAW
能力。
官方修复的版本
- v1.18.4
- v1.17.7
- v1.16.11
KLTS 修复的版本
- v1.15.12-lts.1 kubernetes/kubernetes#92040
- v1.14.10-lts.1 kubernetes/kubernetes#92040
- v1.13.12-lts.1 kubernetes/kubernetes#92040
- v1.12.10-lts.1 CVE-2020-8558.1.12.patch
- v1.11.10-lts.1 CVE-2020-8558.1.12.patch
- v1.10.13-lts.1 TODO
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.