错误配置K8s机器学习框架Kubeflow易招来挖矿攻击

微软的Azure信息安全中心侦测到新一波Kubernetes集群挖矿攻击,目标锁定Kubernetes机器学习工具包Kubeflow,微软发现已经有数十个Kubernetes集群受到挖矿攻击影响。

Kubeflow是一个开源项目,起初只是要让TensorFlow工作负载,能够在Kubernetes上运行的项目,但随着项目发展,Kubeflow已经发展成为Kubernetes机器学习的热门框架,微软提到,由于用于机器学习工作节点的运算能力,通常比起其他用途节点相对强大,并且在部分情况还会附加GPU,因此是采矿攻击的绝佳目标。

微软在4月时观察到,不同集群都从一个公开存储库部署了可疑的镜像文件,深入分析该镜像文件,发现其内置XMRIG挖矿程序,微软还在公开存储库中,发现了其他拥有不同挖矿配置的镜像文件。部署这些恶意镜像文件的集群,几乎都在执行Kubeflow,因此微软表示,这代表攻击者把机器学习框架当作攻击的进入点。

Kubeflow框架包含了各种服务,像是训练模型的框架、Katib以及Jupyter Notebook服务器等,而Kubeflow是一个容器化服务,各种任务在集群中都会以容器的形式执行,因此当攻击者能够以特定方式访问Kubeflow,便能以多种方式在集群中执行恶意文件。

Kubeflow框架中还区分不同的命名空间,以表示Kubeflow服务集合,而这些命名空间会被翻译为Kubernetes命名空间,用来部署资源。默认情况下,仪表板只能通过Istio的Ingress网关供内部访问,用户需要利用通信端口转发(Port Forwarding)服务来访问仪表板,但在部分情况下,当用户将Istio服务配置修改为Load-Balancer,而这会使服务直接暴露在互联网中。

微软提到,用户这么做通常是因为方便操作,否则访问仪表板还需要通过Kubernetes API服务器创建信道,但只要把服务公开在互联网中,用户就可以直接访问仪表板,不过这样的操作并不安全,因为这让任何人都可以在Kubeflow中执行操作,包括在集群中部署新容器,只要攻击者有权限访问仪表板,就有多种方法在集群中部署后门容器。

微软过去侦测到多个针对Kubernetes集群的攻击行动,皆使用类似的访问矢量,也就是入侵公开在互联网上的服务,而这次则是微软首次侦测到针对Kubeflow框架的攻击行动。

微软提醒集群管理者,在部署Kubeflow这类服务的时候,除了要对应用程序使用身份验证和访问控制之外,也不要将连接端口直接暴露在互联网上,并且还要监控执行环境,包括监控正在执行的容器和程序,而且应该限制集群只能部署受信任的镜像文件。