许多安全公司与大型科技企业都有自建团队,旨在发现软件中的缺陷和漏洞、与软件供应商私下沟通,然后按照行业标准流程来发布修复程序。与此同时,以 Google Project Zero 为代表的团队,也致力于帮助发现和修补第三方的安全问题。而本文要为大家介绍的,则是微软在苹果 macOS 上发现的“Shrootless”漏洞。
(来自:Microsoft 365 Defender Research Team)
微软指出,Shrootless 漏洞可被恶意攻击者利用,以绕过操作系统的系统完整性保护(SIP),进而执行任意代码。
与此同时,微软安全团队发现了一种用于提权的新型攻击技术。简单翻阅该公司的博客文章后,可知问题主要归咎于“由苹果签名、并具有安装后脚本的软件包”的安装方式。
通过创建可劫持安装过程的自定义软件包,攻击者便可利用该机制来达成恶意目的。
比如在绕过 SIP 防护措施后,攻击者能够安装 rootkit 和无法检测的恶意软件、甚至覆盖系统文件而不被 SIP 给阻止。
在某些情况下,软件包需要访问受 SIP 保护的目录,比如系统更新。
可知苹果为此类软件包分配了一些特权(
com.apple.rootless.install 和 com.apple.rootless.install.inheritable),但它们同样也可被利用来绕过 SIP 。
在评估有权绕过 SIP 保护的 macOS 进程时,微软安全团队发现了守护进程 system_installd 具有强大的
com.apple.rootless.install.inheritable 权限。
在此基础上,攻击者便可利用 system_installd 的任何子进程,来完全绕过 SIP 文件系统限制。
借助 Microsoft Defender for Endpoint 的后入侵组件(post-breach component),安全团队决定检查 system_installd 的所有子进程。
结果让他们感到十分震惊,因为其中一些可能允许攻击者滥用、并绕过 SIP 。比如在安装苹果签名的 .pkg 包时,它就会调用 system_installed 并负责安装前者。
但若软件包中含有任何安装后脚本,则 system_installd 会通过调用默认 shell(在 macOS 上为 zsh)来运行它们。
有趣的是,当 zsh 启动时,它会查找文件 /etc/zshenv 。如果找到,哈辉自动从该文件运行命令 —— 即使在非交互模式下也是如此。
所以对于潜在的攻击者来说,他们在设备上执行任意操作的最可靠路径,就就是创建恶意的 /etc/zshenv 文件,然后等待 system_installd 来调用 zsh 。
更糟糕的是,微软还发现 zshenv 可作为通用攻击模式,而不仅仅是 Shrootless —— 滥用此 shell 或导致特权提升。
庆幸的是,作为协调漏洞披露(CVD)流程的一部分,微软与苹果私下分享了其调查结果。后者承认了这个问题,并于 2021 年 10 月 26 日向公众发布了漏洞修复补丁。
在 macOS Monterey、Catalina 和 Big Sur 的安全补丁说明中,苹果还强调了微软对此做出的贡献。有关详情,还请查看 CVE-2021-30892安全公告。