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.