本文翻译自:
https://www.sentinelone.com/blog/mojaves-security-hardening-user-protections-bypassed/


在macOS Majave中,应用所有的API和对资源的直接访问都会需要请求用户的准许,用户也能够直接通过系统偏好设置访问它们的安全偏好设定。本文讲解如何绕过用户保护以及如何确保安全。

苹果macOS Mojave系统的签证特征之一就是用户安全。Mojave的一些安全相关的特征会改变用户与Mac操作系统交互的方式。

许多安全特征设计的目的就是为了防止一些event在没有明确授权的情况下访问用户数据,而event是构成AppleScript、osascript、JXA (JavaScript for Automation)、Automator和大量应用内通信的基础。
下面以Script Editor为例看一下新保护机制的工作原理。

一个简单的choose file AppleScript命令会呈现一个打开的文件对话框,从中可以选择脚本中使用的文件。但在Mojave中,用户Library中的一些文件夹是没有权限的:

没有权限的文件夹包括Mail、Messages、Cookies、Suggestions、Safari。需要注意的是用户可以在不经过Finder限制的情况下浏览这些文件夹,而通过其他应用来浏览默认会被拦截。
但这里不会有用户反馈来解释没有访问权限或如何进行处理。用户可以在System Preferences设置哪些应用可以访问这些文件夹,具体是在Full Disk Access的Security & Privacy下:

添加了相应的应用并重新启动后,选择的应用就有访问受保护的文件夹的权限了,这与High Sierra和早期的macOS版本一样。

Mojave 10.14中的用户数据加固是一个很好的想法,比如最近就爆出苹果应用商店中的应用滥用用户浏览历史的消息。但这种数据加固的想法对预防恶意攻击者所起的作用可能有待证明,原因有以下几个:

远程绕过

第一个原因就是macOS处理对特定区域访问的请求上,研究证明并不是基于谁在请求访问,而且基于请求访问的位置(文件夹)。

比如,Terminal中的admin用户也不能cd到其Safari文件夹,root用户同样不能:

MacOS Mojave只是简单地不允许Terninal遍历这些文件夹,而与认证和权限的级别无关。同样地,如果Script Editor没有加入Full Disk Access,也不能遍历这些文件夹。

远程攻击者在获取了Sally(登陆用户名)的管理员凭证后,可以访问任何文件夹,而这些文件夹Sally和root都不能访问。

研究人员通过ssh远程登陆Sally的用户账户,通过读取保存在受保护的Safari文件夹中的LastSession.plist提取出Sally最后访问的银行登陆页面。

需要注意的是ssh登陆到本地账户,遍历受保护的文件夹并不需要将Terminal预先加入到Full Disk Access中;Sally本地ssh登陆也可以执行便利操作:

简单来说,任意本地或远程用户都可以通过ssh登陆的方式来绕过Full Disk Access。

设计缺陷

第二个Mojave可能并不会起作用的原因是苹果应用Apple Event sandboxing和Full Disk Access的一些问题。其中有两个问题:dialog fatigue(对话疲劳)和universal whitelisting(通用白名单)。

管理员用户对“对话疲劳”会比较熟悉,每当出现一个告警消息都需要进行点击。需要用户的点击同意只是额外的一步,而且很容易实现:因为大多数用户在第n次看到合法应用弹出的对话框后已经对这些对话框免疫了。

升级到Mojave对许多用户来说是痛苦的,因为许多常规应用、插件、扩展都回被拦截或跳出这样请求访问的对话框。当用户点击了许多次来自合法应用的非恶意请求之后,用户大概率会无脑点击同意下一个来自恶意软件的访问请求。

从安全角度看,Full Disk Access的通用白名单也是一个问题。一个应用可能会请求一些无害的权限,但苹果应用的授权机制是对所有用户都设置为白名单,所以恶意应用也可以读取浏览器历史、邮件、聊天信息等。

当Script Editor、Automator、Terminal这类系统应用被用户添加到来完成某些特定的任务后,这个问题就变得严峻了。因为恶意软件可能会利用各种资源来获得所需的权限。

怎样保证安全

对安全管理员来说,可以通过下面的命令来查看Full Disk Access隐私面板中加入了什么:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'SELECT * from access' | grep kTCCServiceSystemPolicyAllFiles

因为该数据库包含在Mojave的新保护机制中,因此除非Ternimal也加入了Full Disk Access否则都不能上面的命令,也可以通过ssh绕过来避免这些安全认证机制。

如果用户和管理员想禁用通过ssh访问受保护的文件夹,可以:

  1. ssh登陆并遍及一个受保护的文件夹;
  2. 打开System Preferences > Security & Privacy > Privacy ,点击“Full Disk Access”;
  3. 确保列表中有sshd-keygen-wrapper,也可能会看到sshd

如果列表为空,尝试从ssh session中读取或打开一个文件。用户可能需要重新打开System Preferences。

4.移除该项目并不不能预防被绕过的情况,应该关闭该项目,最后点击左下角的“锁定”。

5.测试ssh session已经不能访问受保护的文件了。

尝试列出受保护的文件夹返回的信息是“Operation not permitted”,而直接读取文件夹的文件会失败,而且不返回任何信息。

结论

因此,Mojave中的用户数据并不比之前的macOS更安全,但用户在一些情况下确实会更安全一点,但这种认为安全的情况本身就存在危险。因为通过对话框告警来获取用户授权的门槛很低,因此攻击者会滥用macOS 10.14中的用户隐私。
https://www.sentinelone.com/blog/mojaves-security-hardening-user-protections-bypassed/

源链接

Hacking more

...