微软Azure Service Fabric曝安全漏洞

admin 2022年7月4日13:33:17安全新闻评论23 views2055字阅读6分51秒阅读模式

微软Azure Service Fabric曝安全漏洞

研究人员在微软Azure Service Fabric中发现一个安全漏洞——FabricScape。

Unit 42研究人员在微软Azure Service Fabric中发现一个安全漏洞——FabricScape,漏洞CVE编号为CVE-2022-30137,攻击者利用该漏洞可以实现Linux容器权限提升以获得节点root权限,进而入侵集群中的其他节点。该漏洞可以在配置了运行时访问的容器上实现利用,而该访问权限对容器是默认开启的。

Service Fabric是支持Azure云服务核心架构及其他微软服务(如Skype for Business、Intune、Azure事件中心、Azure数据工厂、Azure Cosmos DB、Azure SQL数据库、Dynamics 365和Cortana等)的基础技术。2018年,微软遵循MIT许可协议开放其源代码。微软数据显示,Service Fabric 有超过100万个应用。

微软Azure Service Fabric曝安全漏洞

图1 Service Fabric服务列表

微软Azure Service Fabric曝安全漏洞

图2. Service Fabric Linux节点示例

微软Azure Service Fabric曝安全漏洞

CVE-2022-30137漏洞

Service Fabric支持以容器形式部署应用,在每个容器初始化时,会创建一个新的日志log目录,并挂载到每个容器上,同时拥有读写权限。其他目录都是中心化的,在每个节点上的目录。比如,Azure Service Fabric中这些目录位于/mnt/sfroot/log/Containers。

Service Fabric中有一个Data Collection Agent (DCA)组件,负责从其他目录收集日志。要访问这些目录,就需要很高的权限,因此是以root权限在每个节点上运行的。同时,还负责处理可以被容器修改的文件。因此,利用代理中文件处理机制的漏洞可以引发容器逃逸,并获得节点root权限。

研究人员深入分析DCA源码,发现GetIndex函数中一个可能的竞争条件任意写漏洞。该函数读取一个文件,检查文件内容是否是预设的格式,修改部分文件内容,并以新内容覆写该文件。为此,使用了2个子函数:

· LoadFromFile – 负责读取文件

· SaveToFile – 负责写新数据到文件中

微软Azure Service Fabric曝安全漏洞

图3. GetIndex函数

该函数会引发symlink竞争。被入侵的容器中的攻击者可以替换LoadFromFile 读取的文件内容为恶意内容。在继续分析该文件时,攻击者就可以用一个到期望路径的symlink到覆写该文件,因此SaveToFile会根据symlink将恶意内容写入该路径。

微软Azure Service Fabric曝安全漏洞

CVE-2022-30137漏洞利用

为利用该漏洞,攻击者需要触发DCA在其控制的文件上执行有漏洞的函数。DCA会监控log目录中特定文件名的创建,并对每个文件执行不同的功能。其中一个文件是ProcessContainerLog.txt。

微软Azure Service Fabric曝安全漏洞

图4. ProcessContainerLog

DCA识别到该文件被创建后,会执行函数来在log目录中的路径上多次运行GetIndex,而这是容器可以修改。

微软Azure Service Fabric曝安全漏洞

图5. 监控 ProcessContainerLog

也就是说恶意容器可以在其控制的文件上触发GetIndex的执行,并尝试通过竞争条件来覆写节点文件系统上的路径。这种方式只能在Linux容器上利用,而不适用于Windows容器,因为在Windows容器中非特权用户无法创建symlinks。

微软Azure Service Fabric曝安全漏洞

获得节点执行权限

使用特权任意写漏洞实现代码执行有很多方法,包括添加恶意ssh key、添加恶意用户、安装后门等。但这些方法在这里都不适用,因为:

· GetIndex会修改内部Service Fabric文件,因此会验证该文件是否是正确的内部文件格式;

· 节点文件系统上被覆写的文件没有执行权限。

微软Azure Service Fabric曝安全漏洞

图6. 内部文件格式示例

研究人员分析发现该格式与包含环境变量的文件格式类似:

微软Azure Service Fabric曝安全漏洞

图7. 恶意文件格式

研究人员选择使用/etc/environment进行漏洞利用,因为其中含有指定新shell基本环境变量的环境变量。而且Linux cron每个执行的作业都会导入该文件,因此,就可以注入恶意环境变量到以root权限运行的新进程中。

微软Azure Service Fabric曝安全漏洞

图8. cron job

为了实现代码执行,研究人员使用了动态链接劫持的方法,其中使用了LD_PRELOAD环境变量。在新进程初始化时,linker会加载变量指向的共享对象,因此,可以注入共享对象到节点上的特权cron 任务中。

漏洞利用流程如下:

· 利用该漏洞覆写主机上的/etc/environment;

· 使用新的cronjobs导入恶意环境变量;

· LD_PRELOAD加载恶意共享对象

· 主机root实现反向shell。

微软Azure Service Fabric曝安全漏洞

图9. 漏洞利用流程

微软Azure Service Fabric曝安全漏洞

漏洞时间轴

研究人员于2022年1月30日将该漏洞提交给了微软,委员于2022年6月14日修复了该漏洞。

参考及来源:https://unit42.paloaltonetworks.com/fabricscape-cve-2022-30137/

微软Azure Service Fabric曝安全漏洞

微软Azure Service Fabric曝安全漏洞

原文始发于微信公众号(嘶吼专业版):微软Azure Service Fabric曝安全漏洞

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月4日13:33:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  微软Azure Service Fabric曝安全漏洞 http://cn-sec.com/archives/1155782.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: