本周三(7.13),微软公开披露苹果系统应用沙盒访问问题漏洞的技术细节,影响iOS、iPadOS、macOS、tvOS 和 watchOS系统。该漏洞编号CVE-2022-26706,2021年10月,微软安全漏洞研究 (MSVR)通过协调漏洞披露 (CVD) 向苹果报告了该问题,2022年5月,苹果修复了这一漏洞。
Microsoft 365 Defender研究团队在报告中指出,利用沙盒逃逸漏洞,攻击者可在受影响的设备上提升权限或执行恶意命令,如部署恶意软件等。
苹果表示,这是LaunchServices (launchd) 组件的问题,App Sandbox旨在严格监管第三方应用程序对系统资源和用户数据的访问,但是该漏洞使得绕过这些限制成为可能。攻击者可以使用包含恶意宏代码的特制 Office 文档触发该漏洞,该宏代码允许绕过沙盒限制并在系统上执行命令,在安全更新中通过额外限制措施缓解了该问题。
“微软安全人员在研究macOS上Microsoft Office运行和检测恶意宏的潜在方法时发现了这一漏洞。为了向后兼容,Microsoft Word 可以读取或写入带有“~$”前缀的文件。安全人员随之发现,可通过利用 macOS 的启动服务,在具有上述前缀的特制 Python 文件上运行 open –stdin 命令来逃避沙箱。”
这意味着,问题的根本原因是向后兼容性,它允许 Microsoft Word 读取和写入前缀为“~$”的文件。.
为此,专家们首先创建了一个 POC 漏洞利用来创建一个宏,该宏使用终端应用程序启动一个 shell 脚本,当它被沙箱捕获后,因为被自动赋予扩展属性 com.apple.quarantine 可防止终端执行。随后,专家们尝试使用 Python 脚本,但 Python 应用程序在运行具有上述属性的文件时遇到了类似的问题。
在其中一次测试中,安全研究人员创建了一个概念验证 (PoC),它使用 Python 文件上打开命令的 -stdin 选项 绕过“com.apple.quarantine” 扩展属性限制。这样一来,Python 就无法确定其标准输入中的内容来自隔离文件。
具体 POC 漏洞利用如下:
1、使用任意 Python 命令删除“~$exploit.py”文件。
2、运行 open –stdin='~$exploit.py' -a Python,运行 Python 应用程序,将攻击者删除的文件作为其标准输入。那么Python就可以运行攻击者的代码,并且由于它是 launchd 的子进程,所以不受 Word 的沙盒规则的约束。
参考来源
https://securityaffairs.co/wordpress/133211/hacking/macos-sandbox-bypass-exploit.html