测试工具,用于检查集群是否存在此处发布的高严重性 Kubernetes CVE:https://github.com/kubernetes/kubernetes/issues/71411。关于 CVE-2018-1002105 的利益相关者级分析可参阅 https://gravitational.com/blog/kubernetes-websocket-upgrade-security-vulnerability/
通过您 Kubernetes API 服务器前的第 7 层负载均衡器或代理运行此测试可能不可靠,并产生错误结果。 此测试通过连接到 API 服务器,并检查 API 服务器是否存在该漏洞的副作用来进行。 通过第 7 层负载均衡器运行此概念验证,可能错误地表明 API 容易受到 CVE-2018-1002105 的攻击。
此工具倾向于误报。如果您的 Kubernetes API 由主要云提供商(例如 Amazon AWS EKS、Google Cloud GKE 或 Microsoft Azure AKS)提供,该服务提供商几乎肯定已经修补了您的 API 服务器,您不再受 CVE-2018-1002105 影响。我们欢迎改进对非易受攻击 API 服务器端点检测的拉取请求。
go get github.com/gravitational/cve-2018-1002105
cd $GOPATH/src/github.com/gravitational/cve-2018-1002105
go run main.go
docker run -it --rm -v $HOME/.kube/config:/kubeconfig: quay.io/gravitational/cve-2018-1002105:latest
该工具将尝试测试两件事:集群是否允许未经验证的 API 访问(这将允许对聚合 API 端点进行未经验证的访问),以及是否尝试找到一个 Pod,并测试 API 服务器是否会在畸形请求上保持连接打开,这表示集群容易受到 CVE-2018-1002105 的攻击。
Testing for unauthenticated access...
> API allows unauthenticated access
Testing for privilege escalation...
> API is vulnerable to CVE-2018-1002105
如果您看到 API allows unauthenticated access,表示测试能够检测到对集群的未经验证访问。此测试相当基础,但应能检测到允许对集群进行匿名访问的默认配置。
如果您看到 API is vulnerable to CVE-2018-1002105,表示使用提供的 kubeconfig,该工具能够测试并确认您的集群存在漏洞。