随着技术的发展,K8s(Kubernetes)面临的安全威胁也在快速演变。2023年涌现了一系列针对K8s的新型攻击,例如Dero和Monero加密币挖矿、猩红铁攻击(Scarleteel)和RBAC-Buster攻击等。此类攻击通常以web应用漏洞为入口,然后在K8s环境中横向移动。
在即将到来的2024年,了解这些新型攻击对于企业云安全和数据安全防护至关重要。以下,我们将详细介绍这些新型攻击如何开展,以及应采取何种防御措施:
一、猩红铁攻击
猩红铁攻击(Scarleteel)的入口点是托管在K8s环境中的Jupyter笔记本web应用,其目标是访问云存储中的加密敏感数据并挖掘加密货币。攻击者还利用了一个名为Peirates的开源K8s渗透测试工具,以及一个名为Pacu的类似工具,用于寻找进入AWS云环境的开放入口。
在猩红铁攻击中,攻击者能够在云环境中“丝滑”移动,从K8s托管的web应用直接跳到云端,然后再回到K8s。而防御者却往往没有完整的攻击链环境视图,只能分别查看云安全、网络应用安全和K8s安全,然后努力拼凑整体攻击行动和目标的视图。
防御措施
如果你不使用Jupyter笔记本应用,就不易受到此类攻击影响。但还有许多其他可被利用的web应用漏洞,因此,首先要确保修复可被攻击者利用的特定云错误配置。如果你运行EKS,请查看IMDSv1和IMDSv2的安装位置,并在攻击发生之前让蓝队用Peirates和Paco等渗透测试工具对K8s环境进行安全评估。
运行时功能可能会检测到Pandora恶意软件,但不会将它与云和K8s环境中发生的更广泛的攻击和活动联系起来,因此它无法阻止整个攻击。
二、Dero/Monero加密币挖矿攻击
在Dero币挖矿攻击中,攻击者首先扫描Kubernetes API,查看身份验证设置是否允许任何人匿名访问,以及集群的RBAC配置是否允许在该集群中创建Pod。满足这些条件后,攻击者将部署Daemonset,利用集群中的恶意映像创建自己的Pod。
Monero币挖矿攻击的第一个步骤与Dero相同,然后,攻击者会访问Kubernetes API并删除Dero Pod并通过Daemonset部署自己的特权Pod。特权Pod会尝试挂载主机目录以逃离容器,并下载可以隐藏矿工的rootkit。随后,攻击者开始在主机上安装自定义挖矿服务。
与Dero攻击不同,Monero挖矿攻击涉及权限提升和容器逃逸技术,因此,特权Pod是K8s需要避免的最严重的安全问题之一。(由于K8s Pod安全标准的基准策略不允许特权Pod,因此默认配置下不太可能发生。)
但是,如果你运行EKS和Kubernetes v1.13及更高版本,则默认pod安全策略允许特权Pod。在EKS中,你必须删除此策略才能启用用户自定义策略,这一额外步骤可能会增加你意外创建特权Pod的机会。
在Monero挖矿攻击中,黑客利用最初的K8s错误配置后会产生大量运行时活动。锁止这些活动可以防止恶意运行时扩散到其他Pod和集群。
禁止非法主机挂载路径和错误配置导致的特权Pod是最重要的两个预防措施。需要注意的是,如果你的KSPM(Kubernetes安全策略管理)是轮询间隔的,那么你可能会错过间隔之间的攻击活动。
防范措施
如果发现攻击,首要任务是控制爆炸半径,因为攻击是在K8s环境中实时发生的,而不是在运行时。如果你的运行时防护包括限制Monero币挖矿的规则,可以阻止攻击的最后一步,但不能阻止初始阶段的入侵。
虽然大多数API设置都会禁止匿名访问,但攻击者往往能找到其他方式来入侵API。例如,恶意内部人员可能会植入后门或挖矿软件,开发人员可能无意中将服务帐户令牌或kubeconfig文件签入公共git存储库,从而使集群面临风险。
最重要的保护措施是防止从Daemonsets创建恶意工作负载。此外,监测工具能发挥一定防护作用,因为许多加密币挖矿行为是通过监测意外流量峰值发现的。
由于此类攻击会使用镜像创建恶意Pod,因此设置一个阻止从不受信任镜像来源创建工作负载的准入控制策略可以有效阻止攻击。但需要注意的是,你要么必须全面执行该策略,要么采用实时KSPM检测解决方案来准确了解问题所在,然后在修复代码中的配置时有针对性地使用准入控制器。
三、RBAC-Buster攻击
配置错误的服务器会允许特权用户发出未经身份验证的请求。在RBAC-Buster攻击中,攻击者为了在K8s环境中获得立足点,会尝试扫描配置错误的API服务器,然后通过特权访问列出机密信息并并发现kube-system命名空间。
攻击者会在命名空间中创建了一个拥有管理权限的新ClusterRole和一个新的服务帐户,将两者绑定在一起以并将ClusterRole的管理权限授予服务帐户。
攻击者会寻找AWS密钥来访问云服务提供商,然后使用Daemonset部署恶意Pod,使用容器映像在整个集群中进行加密币挖矿。
此类攻击的前提是:KubernetesAPI服务器不仅发生暴露,而且还接受特权用户的请求。其余的攻击都是通过这种特权访问来进行的。
防范措施
为了横向传播,攻击者使用与Dero挖矿活动中相同的Daemonset技术,这提醒我们要防止从Daemonsets创建恶意工作负载。防御者需要检查API服务器配置并审核RBAC权限以防范此攻击。
四、防止未来的攻击
发现RBAC-Buster的团队表示,他们发现60%的暴露集群中都至少有一个活跃的攻击活动正在进行(虽然这并不意味着这些集群都处于暴露状态)。显然,攻击者正在积极寻找漏洞、配置错误以及各种入侵K8s环境的方法。
大多数K8s集群都是“临时集群”,可访问时间窗口仅有数小时。今天的漏洞和暴露也许明天就会对攻击者关闭。这也意味着如果你使用的轮询间隔无法随着时间的推移显示这些变化,缓解措施将是一场噩梦。
在下一波攻击到来之前,如果你仅依赖准入控制或运行时事件的逆向工程检测,可能会导致无法检测威胁,或者检测太慢。你需要一个实时的、综合的K8s风险视图。
最后,虽然纵深防御是K8s的最佳安全实践方法,但如果纵深防御不能提供所有协作组件的综合视图,防御者仍然会落后于攻击者一步。