请勿将主文件夹共享给不受信任的访问者

这篇文章是Pwn2Own比赛期间,研究人员发现的Parallels Desktop漏洞,Parallels Desktop 被称为 macOS 上最强大的虚拟机软件。可以在 Mac 下同时模拟运行 Win、Linux、Android 等多种操作系统及软件而不必重启电脑,并能在不同系统间随意切换。

最新版的 Parallels Desktop 16 (PD16) 完美支持最新的 macOS Big Sur 并对 Windows 10 特别优化!可不重启直接在 Mac 系统上运行 Win10 UWP 通用应用、运行游戏、使用 Windows 版软件如 Office 办公软件、IE 浏览器、VisualStudio、AutoCAD 等。新版 PD16 支持 DirectX 11,大幅提升了启动速度以及 3D 游戏图形性能!!绝对是 Mac 用户必备神器。

在Pwn2Own比赛期间,搜索有关安全性问题时,我注意到我的研究目标很奇怪:Parallels Desktop在主机操作系统(MacOS)上将用户的主目录作为Parallels 共享文件夹共享到Guest OS *,这也是默认的,除非你选择退出并容忍虚拟化可用性问题。对于任何稍微了解基于unix的操作系统(MacOS就是其中的一个实例)并熟悉管理程序的标准安全性期望的人来说,这样的设计决策会立即引起怀疑,也就是说,评判任何软件供应商的设计决策不是我的工作。让我们看看它是如何工作的?

在所有以MacOS为实例的基于Unix的操作系统上,从攻击者的角度来看,对用户主文件夹的写入访问本质上没有任何理论上的可能性。虽然经典的操作系统长期以来一直接受这个事实,并在必要时按着要求确保特权不被使用,但虚拟机管理程序必须以前所未有的新方式来考虑其主机操作系统设计细节。

这里的第一个攻击媒介是一个基本脚本,它通常被称为“bash Profile”:

Profile是针对每个帐户的数据存储,比如一个电子商务网站的用户购物车数据。Profile是HttpContext类的一个属性,是ProfileBase类,继承自SettingsBase类。所谓Provider,是你可以定义Profile如何存储,默认是存储在LocalServer数据库中,需要网站重启动不丢失数据,所以不能存在内存中。

当bash作为交互式登录shell或具有——login选项的非交互式shell调用时,它首先从/etc/profile文件中读取并执行命令(如果该文件存在的话)。读取该文件后,它将按此顺序查找~/.bash_profile, ~/.bash_login,和~/.profile,并从第一个存在且可读的命令中读取和执行命令。当shell开始禁止此行为时,可以使用——noprofile选项,MacOS Big Sur的man page(全称为Manual page,是linux /unix 环境下命令与函数的帮助文档)详细介绍了’bash’。

显然,在Linux上它提供了登录shell,但是MacOS呢?这里没有什么特别的:注册的交互式shell二进制文件在每次你启动终端应用程序时被执行或者其他一些进程在不可见的情况下为你执行。从MacOS Big Sur的摘录中可以看到,Mac上的交互式shell行为在配置文件读数方面完全符合Unix标准。

我们还知道MacOS在一段时间以前已经从bash切换到zsh作为默认的交互式shell,这毫不奇怪,因为它符合了类似的方式:

然后从$ZDOTDIR/.zshenv中读取命令,如果shell是登录shell,则从/etc/zprofile读取命令,然后从$ZDOTDIR/.zprofile读取命令。然后,如果shell是交互式的,则从/etc/zshrc读取命令,然后从$ZDOTDIR/.zshrc读取命令。最后,如果shell是一个登录shell,则读取/ etc / zlogin和$ ZDOTDIR / .zlogin,MacOS Big Sur的man page详细介绍了’zsh’。

合并来看就是,在共享的主文件夹中放置一个恶意二进制文件,并从.zprofile或任何其他交互式shell配置文件调用它。每次启动终端时,二进制文件将在主机操作系统上执行。这构成了一个用户交互的RCE *plus*持久性,并且在虚拟化上下文中,是一个完整的访问到主机的虚拟机转义。切记,不要忘记使用.dot文件名模式隐藏ls的恶意内容。

是否必须与用户互动?不一定。从基于Unix的操作系统的经典和默认设置出发,Mac有了一个位于用户主目录下的目录LaunchAgents,该目录本质上是一个启动文件夹。用户的应用程序可以通过在此处放置名为“ .plist”的特殊格式的配置文件来进行自我注册,以在启动时(或更具体地说,在用户登录时)运行。更多详细信息,请参阅Apple的官方文档。

需要注意的是,交互式shell配置文件和LaunchAgents不会耗尽攻击者对用户主文件夹的选项。另一件事是,我注意到一些软件进程(如谷歌Chrome的ksfetch updater二进制)可以直接从~/Library/ cache运行,这也可能被劫持为一个完全自动化的任意代码执行。这里的一般原则是,对用户主文件夹的编写访问本质上等同于以潜在的方式在用户权限下执行二进制文件。

概念验证

这在Parallels Desktop 16.5.0 (M1和Intel)上演示了一个完整的客户端到主机的虚拟机持久化,安装了Parallels Tools的Ubuntu 20.04客户操作系统:

  1. cp mybinary /media/psf/Home/.hello 
  2.  
  3. chmod +x /media/psf/Home/.hello 
  4.  
  5. echo "~/.hello" >> /media/psf/Home/.zprofile 

带有示例“恶意载荷”的概念验证代码也镜像在我的github上。注意,它只包含M1的预构建有效载荷,如果你想在Intel Mac上对其进行测试,则需要对其进行重新构建。

总结

到目前为止,通常认为虚拟机管理程序至少强制执行虚拟机和主机操作系统之间的一些基本安全边界和特权隔离。如果某个特定的管理程序产品或部署包含违反这一假设的设计原则,则必须在启动虚拟机时明确警告用户,而不需要找出一些特殊的隐藏选项或文档说明。

在用户方面,重要的是至少要知道危害系统的最简单的方法,最容易受到攻击的媒介通常会被最具破坏性的恶意软件利用。

本文翻译自:https://zerodayengineering.com/blog/dont-share-your-home.html如若转载,请注明原文地址。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/137480.html<

赞 (0)
管理的头像管理
上一篇2025-03-02 14:00
下一篇 2025-03-02 14:01

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注