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

这篇文章是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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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