Kubernetes externalIPs:已知六年的安全漏洞,终于要移除了

Kubernetes externalIPs:已知六年的安全漏洞,终于要移除了

💡 原文中文,约8600字,阅读约需21分钟。
📝

内容提要

Kubernetes 的 externalIPs 字段存在安全漏洞(CVE-2020-8554),允许用户劫持集群流量。该功能在 v1.36 开始废弃,预计在 v1.43 完全移除。漏洞源于缺乏验证和授权机制,普通用户可随意声明外部 IP。建议使用 LoadBalancer 和 Gateway API 作为替代方案以提高安全性。

🎯

关键要点

  • Kubernetes 的 externalIPs 字段存在安全漏洞(CVE-2020-8554),允许用户劫持集群流量。
  • 该功能在 v1.36 开始废弃,预计在 v1.43 完全移除。
  • 漏洞源于缺乏验证和授权机制,普通用户可随意声明外部 IP。
  • externalIPs 字段的设计存在三个根本性缺陷:没有归属验证、没有授权模型、没有冲突检测。
  • 攻击者可以通过声明外部 IP、抢占 ClusterIP 或声明节点 IP 来劫持流量。
  • Kubernetes 的 RBAC 模型无法有效防止该漏洞,因为创建 Service 的权限影响到整个集群的网络层。
  • Kubernetes 的废弃流程分为四个阶段,第一阶段已在 v1.36 开始,第二阶段预计在 v1.40 默认禁用。
  • 建议使用 LoadBalancer 和 Gateway API 作为替代方案以提高安全性,特别是在云环境和裸金属环境中。
  • Kubernetes 社区对功能的废弃持保守态度,确保替代方案成熟后才进行移除。

延伸问答

Kubernetes 的 externalIPs 漏洞是什么?

Kubernetes 的 externalIPs 漏洞(CVE-2020-8554)允许用户劫持集群流量,任何有 Service 创建权限的用户都可以声明外部 IP,从而影响整个集群的网络层。

Kubernetes 为什么决定移除 externalIPs 功能?

Kubernetes 决定移除 externalIPs 功能是因为其设计存在根本性缺陷,缺乏验证和授权机制,导致安全风险较高,且有更安全的替代方案可用。

Kubernetes externalIPs 的废弃流程是怎样的?

externalIPs 的废弃流程分为四个阶段:v1.36 发出警告,v1.40 默认禁用,v1.43 完全移除,v1.46 之后清理相关代码。

如何防止 Kubernetes 中的 externalIPs 漏洞?

可以通过启用 DenyServiceExternalIPs admission controller、提前关闭 feature gate 或使用 Kyverno 策略来防止 externalIPs 漏洞。

Kubernetes externalIPs 的替代方案有哪些?

建议使用 LoadBalancer 和 Gateway API 作为 externalIPs 的替代方案,以提高安全性,特别是在云环境和裸金属环境中。

externalIPs 漏洞的攻击方式有哪些?

攻击方式包括声明外部服务流量、抢占 ClusterIP 和声明节点 IP,攻击者可以通过这些方式劫持流量。

➡️

继续阅读