披露:MacOS隐私保护的另一个绕过

2020-06-30 21:22:28

今天,我将披露一个绕过MacOS隐私保护的解决方案。(你可能还记得,我去年披露了另一份报告。)。隐私保护系统(也称为TCC:透明、同意和控制)是在MacOS Mojave中引入的,其目的之一是保护Mac上的某些文件不被未经授权的应用程序访问。我发现了一种方法,可以让未经授权的应用程序读取受保护文件的内容,从而绕过隐私保护。此问题存在于Mojave、Catalina和Big Sur测试版中。它仍然没有得到解决,因此,从某种意义上说,它是一个零日。以下是导致我披露的时间表:

2020年1月17日:在回应我的状态更新请求时,苹果产品安全部门告诉我,他们计划在2020年春季解决这个问题。

2020年4月27日:在回应我的状态更新请求时,苹果产品安全部门告诉我,他们仍在调查这个问题。

2020年6月29日:在回应我的状态更新请求时,苹果产品安全部门告诉我,他们仍在调查这一问题。

出于技术上的原因,我不相信这个问题会在秋季Big Sur向公众发布之前被苹果解决。我没有看到任何证据表明Big Sur在这方面做出了任何努力,苹果给我的电子邮件也没有这方面的证据。因此,我现在要披露这个问题。自从我向苹果报告这个问题已经超过6个月了。这远远超出了负责任的披露范围,通常是在向供应商报告问题后90天。很明显,苹果永远不会为我向他们报告的任何事情支付赏金,或者至少在一段合理的时间内不会付给我奖金,这一点也变得越来越明显。我对等待数年的赏金不感兴趣。我不能代表任何人发言,但我个人的经验是,苹果安全赏金计划令人失望,我不打算未来再参加。话虽如此,以下是我向苹果产品安全部门提交的原始报告:

附件是一个示例Xcode项目,它演示了用户安装的Mac应用程序如何访问受TCC限制的文件的内容,特别是在~/Library/Safari中。此攻击适用于当前公开发布的MacOS 10.15.2版本。我还在MacOS10.14.6上测试过。

要进行重现,只需构建并运行示例应用程序即可。示例应用程序将读取文件~/Library/Safari/TopSites.plist并将文件内容提交到http://lapcatsoftware.com/test/。

TCC例外(记录在";~/Library/Application Support/com.apple.TCC/TCC.db";中)基于应用程序的捆绑包标识符,而不是文件路径。

因此,攻击者可以在磁盘上的不同位置制作应用程序的副本,修改副本的资源,并且修改了资源的应用程序副本仍将拥有与原始应用程序(在本例中为Safari)相同的文件访问权限。

Safari有一个特殊的问题使这种利用成为可能:它在主应用程序的上下文中运行一些JavaScript,而不是在Web内容帮助器的沙箱上下文中运行。在主应用程序的上下文中运行的JavaScript用于在Safari首选项中显示扩展窗格。主Safari应用程序可以访问~/Library/Safari中的文件,因此在该上下文中运行的任何JavaScript也可以访问。

我的示例应用程序复制了Safari应用程序,并用修改后的版本替换了文件";Safari.app/Contents/Resources/HTMLViewController.js";。您将看到在文件的开头添加了10行代码。

示例应用程序包含一个Safari扩展,其唯一目的是允许使用SafariServices API在Safari首选项中打开扩展窗格。这只适用于原始的未经修改的Safari。因此,示例应用程序有一个小的变通办法,以确保它在我修改后的Safari中打开。它设置NSQuitAlwaysKeepsWindows全局首选项,以确保窗口在下次启动时退出并重新打开。然后,它在原始Safari中打开扩展窗格,并终止原始Safari。因此,当我的修改后的Safari启动时,扩展窗格将自动重新打开,导致我修改后的JavaScript运行。

让我用稍微不那么专业的术语来解释这个问题。在这种情况下,只有Safari和Finder应被授权(由Apple)访问~/Library/Safari中的文件,除非您向另一个应用程序授予特殊授权,例如授予终端完整的磁盘访问权限。我的旁路表明,恶意构建的应用程序也可以在没有授权的情况下访问这些文件。这里实际上有两个恶意创建的应用程序:一个是修改版的Safari,它访问受保护的文件;另一个是修改Safari并启动修改后的Safari版本的应用程序。你从网上下载的任何应用程序都可以实现这种隐私保护绕过。我的示例利用漏洞将您的一些私有数据(例如,您的顶级站点)上传到我控制的服务器,因为当我可以运行我想要的任何JavaScript时,这是一件很容易做的事情。请注意,我实际上并没有收集任何数据,因为http://lapcatsoftware.com/test/是一个死链接。我使用了http,这样您就可以看到在数据包跟踪中发送的私有数据。

你应该担心这个问题吗?这取决于你对MacOS隐私保护的总体看法。在Mojave之前,Mac上根本不存在隐私保护功能,所以你现在的情况不会比你在High Sierra或更早的时候更糟糕。我个人的观点是,MacOS隐私保护主要是安全保护,只会伤害合法的Mac开发者,而允许恶意软件应用通过许多现有的漏洞绕过这些漏洞,比如我正在披露的那个漏洞,其他安全研究人员也发现了这个漏洞。我觉得,如果你的Mac上已经运行了一个恶意的非沙盒应用程序,那么无论如何你都会有大麻烦,所以这些隐私保护也救不了你。最好的安全性是选择安装的软件,小心避免在Mac上安装恶意软件。我的安全研究将重点放在MacOS隐私保护上是有原因的:我的目标是证明,苹果对Mac的破坏性锁定并不是所谓的隐私和安全利益的正当理由。在这方面,我想我已经一次又一次地证明了我的观点。在任何情况下,您都有权知道您所依赖的保护系统实际上并没有保护您。