翻译:SEAL安全
原标题:
Over 900,000 Kubernetes instances found exposed online
据 Beepingcomputer 消息,超过90万个配置错误的 Kuberenetes 集群被发现暴露在互联网上,可能会受到潜在的恶意扫描,有些甚至容易受到数据暴露所带来的网络攻击。
Kubernetes 是一个被业界广泛采用的开源容器编排引擎,用于托管在线服务并通过统一的 API 接口管理容器化工作负载。
由于其可扩展性、在多云环境中的灵活性、可移植性、成本、应用开发和系统部署时间的减少,它被企业广为采用并且在近几年内快速增长。
然而,如果 Kubernetes 配置不当,远程攻击者可能会利用错误配置访问内部资源和私有资产,而这些资源和资产本来是不应该公开的。
此外,根据配置入侵者有时可以在容器中升级他们的权限,以打破隔离并转向主机进程,从而使他们能够初步进入企业内部网络以进行进一步的攻击。
查找暴露的Kubernetes
Cyble 的研究人员进行了一次演习,使用类似于恶意行为者使用的扫描工具和搜索查询,在网络上查找暴露的 Kubernetes 实例。
结果显示,能发现90万台 Kubernetes服务器,其中65%(58.5万台)位于美国,14%在中国,9%在德国,而荷兰和爱尔兰各占6%。
在暴露的服务器中,暴露最多的TCP端口是 “443”,有超过一百万个实例,端口“10250”的数量为231,200,而 “6443”端口有84,400个结果。
必须强调的是,并非所有这些暴露的集群都是可利用的。退一万步来说,即使在那些可利用的集群中,其风险程度也因具体配置而异。
高风险的情况
为了评估有多少暴露的实例可能存在重大风险,Cyble 研究了对 Kubelet API 的未经认证的请求所返回的错误代码。
绝大多数暴露的实例返回错误代码403,这意味着未经认证的请求被禁止,无法通过,所以不能对它们进行攻击。
然后有一个包含大约5000个实例的子集,返回错误代码401,表示该请求未经授权。
然而,这个响应给了潜在的攻击者一个提示,即此集群正在运行,因此他们可以利用漏洞尝试其他攻击。
最后,有一个包含799个 Kubernetes 实例的子集返回状态码为 200,这意味着这些实例完全暴露给外部攻击者。
在这些情况下,攻击者无需密码即可访问 Kubernetes Dashboard 上的节点、访问所有 Secret、执行操作等。
虽然易受攻击的 Kubernetes 服务器的数量相当少,但只需要发现一个可远程利用的漏洞,就会有更多的设备容易受到攻击。
为了确保你的集群不在这799个实例中,甚至不在暴露程度较低的5000个实例中,请参考 NSA 和 CISA 关于加固Kubernetes系统安全的指南:
https://www.bleepingcomputer....
掌握安全状况
上个月,Shadowserver 基金会发布了一份关于暴露的 Kubernetes 实例的报告,他们发现了38万个唯一IP响应了 HTTP 错误代码200。
Cyble 告诉 BleepingComputer,造成这种巨大差异的原因是,他们使用了开源扫描器和简单查询,这是任何威胁者都可以使用的。而 Shadowserver 则扫描了整个IPv4空间,并每天监测新增内容。
“我们最终发布的 Kubernetes 博客中提供的统计数据是基于开源扫描器和产品可用的查询。正如博客中提到的,我们根据查询 ‘Kubernetes’、‘Kubernetes-master’、‘KubernetesDashboard’、‘K8’ 和 favicon hashes 以及状态代码200、403和401进行了搜索。”Cyble解释说。
“据他们的博客内容显示,Shadowserver 采取了一种不同的方法来查找暴露情况,‘我们每天使用 /version URI的HTTP GET请求进行扫描。扫描6443和443端口的所有IPv4空间,并且只包括响应 200 OK(附带JSON响应)的Kubernetes服务器,因此在其响应中披露版本信息。’”
“由于我们不像 Shadowserver 那样扫描完整的IPv4空间,而是依靠开源工具提供的情报,所以我们得到的结果与 Shadowserver 不同。”
虽然 Cyble 的数据可能没有那么令人印象深刻,但从这些数据背后的 Kubernetes 集群容易定位和攻击的角度来看,它们非常重要。