H

RSAC议题解读-云上跨租户漏洞攻击面分析

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%

RSAC议题解读-云上跨租户漏洞攻击面分析​

来自WIZ的两名安全研究人员在2023年的RSAC会议上共享了一个名为《Tackling the Recent Rise of Cross-Tenant Vulnerabilities》的主题。两名研究人员提出了一个新兴的攻击方向,即交叉候选脆弱性,引入了相关概念,引入了相关概念,并挖掘了跨居民,例如Google clouds clouds clouds aws aws aws a aws a aws a abibaba cloud等。

1 相关概念​

1.1 多租户技术​

多租户技术是云计算环境中广泛使用的建筑设计方法,用于在单个应用程序或服务中同时支持多个独立租户或用户。
在传统的单租户体系结构中,每个应用程序或服务仅服务于一个租户。在多租户体系结构中,应用程序或服务旨在同时为多个租户提供服务,并且每个租户之间彼此隔离,彼此独立,不会彼此干扰。
202305302102272.png-water_print

多租户技术的关键特征是资源共享和隔离。多个租户共享相同的基础架构,包括硬件,网络和软件组件,以实现资源的有效利用。同时,每个租户之间的数据和操作环境相互隔离,以确保租户之间的安全性和隐私。
多租户架构通常在云服务模型(例如服务(PAAS)和软件)(SaaS)等云服务模型中广泛使用。在这些模型中,云提供商为多个租户提供相同的应用程序或服务实例,每个租户都可以自定义和管理自己的数据和配置。

1.2 跨租户漏洞​

在云上广泛使用多租户技术的情况下,出现了跨租户漏洞。跨租户漏洞是在多租户环境中存在的安全漏洞,可能会导致一个租户访问或干扰其他租户的数据或资源。这种漏洞可能会导致严重的安全问题,并且攻击者可以通过跨租户漏洞获得租户数据或系统控制,从而严重破坏了租户之间的隔离和安全性。
202305302109644.png-water_print

2 租户隔离的实现方式​

2.1 逻辑隔离​

逻辑隔离是一种非常简单的租户隔离方法。租户在共享数据库实例中具有专用数据库。但是,每个客户都有自己的凭据,以确保不同用户之间的隔离。
202305302124451.png-water_print

这种隔离方法在工业实践中具有良好的可操作性,软件体系结构简单易于实施,成本很低。但是,一旦发生失败点,它将影响数据库实例下的所有租户。
此外,例如,当数据库被攻击者妥协时,攻击者将从当前租户的权限提高到管理员的权限,攻击者可以访问其他租户的数据。此外,对于某些操作和维护人员,配置数据库实例时,很容易出现不正确的配置问题。在这种情况下,攻击者甚至不必使用0天来增加权限,并且可以通过简单地滥用某些错误配置来访问其他用户数据。
202305302134163.png-water_print

2.2 基于容器的隔离​

基于容器的隔离比上述隔离方法具有某些优势。在这种隔离方法中,多个客户不再共享相同的数据库实例,每个客户都有自己的数据库实例,在相对独立的容器中运行,并且多个客户可以共享同一虚拟机。
202305302148078.png-water_print

这种隔离方法也相对便宜且易于实现。当攻击者想突破隔离时,他需要打破两个安全边界,即:数据库的第一层,与以前的方法相同。第二层容器。一旦攻击者从容器中逃脱,他就可以在虚拟机上执行任意代码,在那里他可以看到其他租户的容器并能够访问其数据。
尽管这种隔离方法似乎是一种更好的方法,但与以前的方法相比,它仍然具有缺点。正如一些安全研究人员认为,容器不被认为是非常强大的安全障碍。 Linux偶尔会释放一些内核漏洞,其中一些漏洞可用于通过容器逃脱。
WIZ团队披露了有关阿里巴巴云数据库的报告,并在第3章中解释了具体细节。
202305302159759.png-water_print

2.3 基于虚拟机的隔离​

隔离租户的第三种方法也是大多数服务提供商倾向于做的:基于虚拟机器的隔离。在这种隔离方法中,每个租户都有自己的数据库实例在单独的专用虚拟机中运行。因此,客户现在共享物理计算资源,而不是像以前的隔离方法那样共享虚拟机。
202305302203644.png-water_print

如图所示,如果攻击者想打破这种隔离方法,他需要打破两到三层安全边界。第一层当然需要数据库漏洞,并且可以执行任意代码。第二层可能需要容器逃脱,第三层虚拟机漏洞。一般而言,VM逃生漏洞更难挖掘。
当每个租户都有自己的专用虚拟机时,云服务提供商的成本变得非常昂贵。同时,架构变得难以维护。隔离服务越强,实际上要调试服务并解决服务中的问题就越困难。

3 真实环境中的漏洞案例​

租户隔离不仅是要实现隔离计算资源。还有其他资源和其他资产。首先,让我们看一下在共同的租户隔离系统中暴露了哪些风险:
202305302215790.png-water_print

例如,诸如Kubernetes或服务面料的编排者,内部API。此外,通常托管服务在共享网络环境中运行,数据可以通过共享网络进行交互。此外,存储,身份认证设施等也需要考虑隔离。

3.1 阿里云 AnalyticDB for PostgreSQL​

云本机数据仓库AnalyticDB PostgreSQL版本是一个大规模并行处理(MPP)数据仓库服务,可以提供大量的在线数据分析服务。
针对PostgreSQL的AnalyticDB的攻击链大约如下:
使用Cronjob定时任务来增加容器中扎根权限的权限。
利用在POD内容中共享PID名称空间的性质,以水平移动到POD中的相邻特权容器。
使用特权容器逃到主机。
使用主机上的Kubelet凭据,访问敏感资源,包括密钥,ServiceAccount和Pods。
使用收集的凭据访问Alibaba Cloud私有容器图像存储库并查看凭据权限。
测试后,凭据已将其读写为容器图像存储库,从而启动供应链攻击。
相关文章已经分析了漏洞,在这里不会描述。

3.2 Azure Database for PostgreSQL​

在Azure数据库中用于PostgreSQL,不同租户之间的数据库在网络中不隔离,这意味着两个租户之间存在网络连接。 WIZ的研究人员首先通过漏洞获得了对自己的数据库的访问,并且因为当前的机器可以与其他数据库进行通信,并通过锻造SSL证书并绕过其他数据库的身份验证来获得其他租户数据的完整读取权限。微软解决此漏洞的解决方案是隔离租户之间的网络,以确保租户之间的相对独立性。
202305311630613.png-water_print

3.3 IBM Managed Databases​

IBM托管数据库此案非常有趣。在这种情况下,IBM服务体系结构相对完整,资源分离的设计良好。每个租户都有一个特殊的Kubernetes名称空间:
202305311635747.png-water_print

但是,研究人员在容器中发现了与K8S API的网络连接。同时,由于K8S本身的配置不当,高接收服务帐户被悬挂在当前POD中,因此令牌可用于直接向K8S API发送请求并执行与K8S相关的操作。在研究人员的测试之后,令牌有权在私人存储库中提取图像:
202305311642644.png-water_print

因此,攻击者可以获取镜像存储库的所有图像:
202305311643565.png-water_print

该图像包含大量数据,包括源代码,配置等。通过分析镜像内容,找到内部CI/CD服务器凭据,并在读写权限中找到内部CI/CD服务器凭据,您可以实现供应链攻击。
202305311652381.png-water_print

3.4 其它案例​

作者在公司内部的产品线中进行安全性测试时也遇到了类似的安全问题。由于租户不能正确隔离,因此导致了获得大量租户权限和数据的问题。
以其中一个为例:
在网站上创建远程计算资源(在线IDE)时,用户将接收到Intranet的VPN配置连接电子邮件。拨打VPN后,他发现Intranet没有被隔离,并且网络在租户之间互连。
我直接扫描了用于Intranet的资源主机上的10.208.0.0/16网络段,发现我是隔离的。但是,我尝试在这台机器上扫描VPN段172.36.0.0/16,发现它没有被隔离。结果如下:
202305311709386.png-water_print

以租户应用的机器在Intranet上为例。由于在线IDE具有终端功能,并且无法验证用户的权限,因此您可以执行命令。在线IDE中的用户是一个普通用户:
202305311712370.png-water_print

信息收集后,发现这些主机都是由云发送的。检查查询ECS的用户定义数据,并找到初始的SSH登录密钥:
1
Curl http://169.254.169.254/OpenStack/最新/user_data
SSH的明文密码已记录在User_data中,您可以直接使用此密码切换到root:
202305311716874.png-water_print

通过这种方式,您可以水平批处理每个租户,获取大量租户资源机器的根本权限,然后登录到SSH以获取计算机中存储的各种资源文件。
 
后退
顶部