Wiz 对 SAP AI 云服务的渗透测试复盘与分析

admin 2025年1月10日22:01:02评论1 views字数 2575阅读8分35秒阅读模式

背景

Wiz 的红队小组对 SAP 的 AI 云服务(SAP AI Core)开展了一次渗透测试,发现了其在租户隔离、权限控制等方面存在的严重缺陷,并最终实现了完全托管服务及模拟窃取云服务客户的数据。

攻击路径

Wiz 的研究者绘制的攻击路径图如下:

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

我们针对这些利用及漏洞逐一进行分析学习。

利用配置不当突破网络限制

AI 云服务顾名思义,是云厂商提供给用户算力和算法平台以辅助 AI 模型类研发的场景。所以购买资源后的用户可被分配一个容器进行训推。

这个环节用户可以运行自定义代码,所以可以视作攻击起点是一个容器 shell 。需要突破的就是针对此场景的隔离策略。

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

Wiz 的测试人员最先尝试的就是给 Pod 配置更高级别的 privileges。并发现 SAP 部署了准入控制器以阻止绕过安全选项的行为,比如以 root 权限运行容器。

关于准入控制器

Admission Controller

功能是拦截通过认证和鉴权之后对象被持久化之前到达API server的请求。

常用命令:

启动 x 和 y 两个准入控制插件:

kube-apiserver --enable-admission-plugins=NamespaceLifecycle,LimitRanger

关闭准入控制插件:

kube-apiserver --disable-admission-plugins=PodNodeSelector,AlwaysDeny,xxx

Wiz 的应对策略是:寻找未被准入控制器阻止的配置,尝试提权。

他们发现的第一个配置是:shareProcessNamespace

这项配置为 ture,可以使 Pod 中的容器共享进程命名空间。因此创建的容器可以和边车容器共享进程命名空间。又因为边车容器是 Istio 代理的,所以 Wiz 的攻击者可以有权限获取 Istio 配置,其中就包括敏感信息:Istiod server 的 token。

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

关于边车容器

Sidecar Container

通常的 Pod 只有一个应用程序容器(比如 web 应用),而使用边车模式运行的如 Web 服务,Pod 下存在边车容器(本地 Web 服务器)与应用程序容器并行运行。

Istio 支持 Sidecar 边车模式。参考官网说明文档:

  https://istio.io/latest/zh/docs/setup/

仅有 token 还是不够的,没有其他信息的情况下无法利用。但由于 Istio 的边车模式 proxy 容器的网络是受限的,无法扫描网段。怎么办?

于是 Wiz 发现了第二组配置:runAsUser 和 runAsGroup

这个大家都不陌生了,securityContext.runAsUser 配置 Pod 中所有容器内进程使用的用户 ID。Wiz 攻击者发现虽然此配置无法以 root 用户的 UID 运行,但高权限用户不止 root 一个,其他的 UID 未被阻止,最终使用 Istio 用户的 UID 成功运行。而占用 UID 1337 的攻击操作或误操作,Istio 对此仅打出 Warning 级消息提示,不会阻断。

PS:Istio 的边车模式 proxy 容器默认以 UID 1337 运行。

Wiz 认为因为 Istio 用户是个“特权用户”不受 Istio iptables 的限制,所以可以扫描网段。但是笔者根据 Istio 文档的说法分析,应该是 Wiz 攻击者以 UID 1337 运行后,导致 iptables 配置发生了冲突,没有生效导致的。

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

总之,Wiz 攻击者利用此配置突破了流量限制,可以扫描 Pod 内网,再结合利用第一项配置取到的 token ,成功访问 Istiod 服务器读到配置。

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

本环节的攻击是全部渗透测试过程最关键的一环,后续的攻击都以此为起点,并主要去证明企业网络纵深防御的重要性。

Wiz 在总结中同样认为,他们面对的最大困难就是 Istio 阻止攻击流量进入内网,一旦突破这一点,其余的环节均是无权限压力的对内网资产的信息收集和综合利用。

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

集群日志实例信息泄露

Wiz 攻击者发现了集群上的一个 Grafana Loki 实例,从 /config 接口取到了用于 AWS 对象存储的 aksk,并获取大量 AI Core 和用户的日志。

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

Grafana Loki 是一个日志工具,查阅它的接口文档,确实发现了 /config api

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

弹性文件系统使用默认配置

AWS Elastic File System (EFS) 的默认配置为公共,因此 Wiz 攻击者内网扫到监听 2049 端口的 6 个 EFS 实例后,不需要凭据就可以增删改文件。包括客户的 AI 训练数据集。

查阅 AWS 文档,发现 AWS 的表述为默认禁止公开访问:

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

但是下面煞有介事的解释了“public”策略的含义:

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

在之前 Wiz 的某次演讲表明,EFS 确实是默认策略为公开,所以可能是 AWS 已经对此做了修改

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

见:https://www.youtube.com/watch?v=HcNmkCRXFdE

Wiz 对 SAP AI 云服务的渗透测试复盘与分析
Wiz 对 SAP AI 云服务的渗透测试复盘与分析

利用 Helm 服务器无鉴权进行供应链攻击

Wiz 攻击者发现一个名为 Tiller 的服务,部署的是 Helm 包管理器的服务器组件。和 Tiller 服务的通信要走 44134 端口的 gRPC 接口,此端口无鉴权。

访问此服务器,Wiz 攻击者获取到 SAP 的 Docker Registry(Google) 及其 Artifactory 服务器的高权限 secret。可以用来窃取高商业价值客户数据,或者直接污染 AI Core 包做供应链攻击。

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

利用 Helm 服务器无鉴权接管 K8s 集群

Wiz 攻击者利用 Tiller 的 install 命令,部署了一个恶意 Helm 包到 K8s 集群,这个恶意包会生成一个具有 cluster-admin 权限的新 Pod。实现了接管 K8s 集群。

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

由于此时已经具备 K8s 集群最高权限,Wiz 攻击者不仅可以访问任意客户的 Pod,窃取、干扰其 AI 训练数据和模型,甚至可以访问超出 SAP AI Core 范围的客户自己的机密信息。

Wiz 对 SAP AI 云服务的渗透测试复盘与分析

同时,Wiz 攻击者还取到了 Google Container Registry 的名为 sap-docker-registry-secret 的 SAP 访问密钥。

此密钥有读写权限,可以扩大对 SAP 做供应链攻击的范围(影响除 AI Core 外的其他服务)。

Wiz 仅以 AI Core 服务的普通租户为起点,黑盒打穿了整个 SAP 云,成果惊人!漏洞细节及攻击思路整理完毕,有些不易说清的攻击逻辑还需要读者自己沉下心品味。

原文始发于微信公众号(DigDog安全团队):Wiz 对 SAP AI 云服务的渗透测试复盘与分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月10日22:01:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Wiz 对 SAP AI 云服务的渗透测试复盘与分析https://cn-sec.com/archives/3615657.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息