导语:Apple在10月8日(周二)发布了macOS Catalina的首个公开发行版本,随即吸引了众多开发人员,其中包括一些提供安全解决方案的开发人员、团队和普通macOS用户。
概述
Apple在10月8日(周二)发布了macOS Catalina的首个公开发行版本,随即吸引了众多开发人员,其中包括一些提供安全解决方案的开发人员、团队和普通macOS用户。经过分析,我们发现macOS 10.15中引入了一些重大变化,这无疑是近一段时间来macOS最大规模的版本改动。而用户在考虑是否升级Catalina之前,应该了解这些改动是否影响当前的企业工作流程,相关依赖代码是否仍然可用,是否需要对依赖代码做进一步更新,以及新版本的macOS是否需要使用新的软件或新的工作方式。在本文中,我们将站在安全性的视角,分析macOS Catalina此次重大版本升级对企业环境造成的主要变化与挑战。
开发人员应跟紧Catalina步伐
和传闻中不太一致,kexts(内核扩展,Kernel Extensions)在Catalina版本中仍然存在,并且运行良好。至少在目前,对于开发者来说,需不需要借助Apple的SystemExtensions框架实现一个没有kexts的环境仍然是一个可选项。然而,这并不代表当前来自其他开发人员的一系列内核扩展在macOS系统版本升级后不会出现问题。
Kext的新规则要求开发人员必须对它们进行公证(Notarize),并且用户在批准之后需要重新启动Mac。最重要的是,开发人员(特别是那些安全软件的开发人员)需要更新其扩展程序和解决方案,从而兼容Catalina的新TCC和用户隐私规则,兼容新版本对分区架构的更改,以及应对对32位应用的停止支持。
如果Mac已经安装不兼容的kext,那么在升级至10.15版本后,可能会导致一个或多个内核崩溃。
对于用户来说,最安全的方案是在进行Catalina版本升级之前,查看厂商发布的信息或联系厂商,以确认是否支持Catalina。如果由于某些原因无法进行确认工作,或者已经知晓安装的老版本Kext不支持Catalina,那么最好在升级计算机之前先将这些应用程序删除,然后在更新完成后立即进行兼容性测试。
再见,32位应用程序
在之前的几个版本中,Apple曾经多次强调即将停止支持32位应用程序,同时Apple在发布的High Sierra和Mojave版本中发出越来越迫切的警告信息,提醒即将不再支持32位应用程序。但是,在macOS Mojave中,32位应用程序在用户关闭警告提示后仍然可以运行,但时至今日,Apple终于在Catalina版本上大刀阔斧地砍掉了32位应用程序。
在升级至Catalina之前,建议检查已经安装的应用程序。在命令行中,可以使用以下命令输出报告:
system_profiler SPLegacySoftwareDataType
对于GUI用户,可以前往“Apple > 关于本机(About This Mac)”,然后单击“系统报告…(System Report…)”按钮。
随后,向下滚动侧边栏,找到“旧版本应用程序(Legacy Apps)”,然后单击。在这里,我们可以看到所有无法在Cetalina上运行的应用程序的清单。macOS 10.15也会在升级过程中列出所有旧版本的应用程序,但明智的做法还是在准备工作之前预先做好准备。
支持企业/组织批量升级
Catalina继续借助其移动设备管理(MDM,Mobile Device Management)框架、设备注册计划(DEP,Device Enrollment Program)和Apple配置工具(Apple Configurator)允许企业通过各种途径实现升级。对于注册了Apple批量购买计划(Volume Purchase Program)或拥有Apple Business Manager或Apple School Manager许可的组织,可以立即获得Catalina的支持,从而省去了手动下载、打包和安装大量操作系统环境的困扰。
在Catalina中,加入了一个新功能,名为Managed Apple ID for Business,这一功能尝试将用户的工作身份与个人身份分开,从而允许用户将单独的帐户用于iCloud备忘录、iCloud云盘、邮件、通讯录和其他服务。
在这里,设置了一个用于保护用户隐私的功能,但对于习惯完全控制托管终端的管理员来说应该关注——针对具有注册配置文件和托管Apple ID的设备,企业将失去对其远程擦除数据、访问特定用户数据等功能的控制权。要想有效实现这一功能,设备应该分为“个人”(Personal)和“托管”(Managed,即工作用途)两部分,并为其中的托管账户、应用程序和数据使用单独的APFS卷。
隐私控制达到新高度
关于用户数据,上面并不是唯一要关注的事情。作为最终用户,在使用新升级的macOS 10.15 Catalina安装程序时,会注意到新版本系统的最大变化是Apple扩展的隐私控制策略,它将以多种方式体现出来。
在较早版本macOS 10.14 Mojave中,“系统偏好设置”(System Preferences)中的“安全性和隐私”(Security & Privacy)窗格的“隐私”(Privacy)选项卡中列出了12个项目。而在Catalina中,新增了五种功能,分别是语音识别(Speech Recognition)、输入监控(Input Monitoring)、文件和文件夹(Files and Folders)、屏幕录制(Screen Recording)以及开发人员工具(Developer Tools)。
前三个控制功能的详细说明如下:
1、语音识别:已经请求访问语音识别的应用。
2、输入监控:已经请求访问权限监控键盘输入的应用。
3、屏幕录制:已经请求访问权限记录屏幕内容的应用。
重要的是,仅当应用程序尝试进行任何一项工作时,才能在这个特定的时间节点选择允许上述三个选项。尽管可以通过MDM设置或对配置文件进行设置的方式预先禁止应用程序进行此类操作,但并不能预先允许应用程序。这一点需要请管理员关注,在企业环境正,任何需要这些权限的软件都必须在UI中获得用户的批准才可以正常运行,否则就无法运行。此外需提醒的一点是,需要留意Catalina的透明度问题,用户的允许或拒绝并不会得到反馈。在用户拒绝权限后,应用程序会默认不执行此类操作。
从目前能想到的最常见位置来看,隐私控制将直接影响到一些视频会议软件,例如Zoom、Skype等。在新版本macOS操作系统的提示中,建议用户在为某些服务(例如“屏幕录制”)授予许可后,重新启动应用程序,这可能会引起用户的担忧,比如:在会议期间单击“允许”,是否会自动重新启动应用程序并中断会议。相反,无意中点击“拒绝”的用户,可能会在之后费解为什么不能正常使用此类软件的某些功能。
上述情况表明,如果在企业环境中使用macOS Catalina,系统管理员应该对用户进行充分地指导,预先让用户明白可能遇到的常见问题。此外,还应该完整测试日常需要的应用程序的运行方式,确认用户需要遵循的工作流程,以确保新版本操作系统对日常工作的干扰达到最小。
后两个控制功能分别是:
4、文件和文件夹:允许列表中的应用程序访问文件和文件夹。
5、开发人员工具:允许列表中的应用程序在本地运行不符合系统安全策略的软件。
最后两个控制功能都可以预先进行批准。第四个控制功能将授予对“桌面”(Desktop)、“下载”(Downloads)和“文档”(Documents)等文件夹位置的访问权限。第五个控制功能使开发人员可以运行自己的尚未经过公证、签名或待发布的·软件(需遵守macOS系统完整性策略)。
存在的安全问题
这些可能是在实践中的一些正面案例。我们接下来举一个实际例子,假设某台计算机启用了文件共享、远程管理(允许屏幕共享)和远程登录(用于SSH),我们将这台主机作为目标计算机。
假设我们具有管理员的身份,我们希望能实现这台计算机(目标主机)到另一台计算机(源主机)的屏幕共享和文件共享。这两种不同的服务,仅需要相同的凭据(目标设备上已创建用户的用户名和密码),在不同的会话中各输入一次就可以启用这两种服务,但二者具有不同的限制,这一点令人迷惑。
我们尝试通过访达(Finder)中的文件共享,从源主机导航到目标主机的“桌面”(Desktop)文件夹,此时会显示用户的“桌面”(Desktop)文件夹内容为空,而并非无法访问。
如果我们仍然尝试访问这些受保护文件夹中的任意一个,那么访达此时会显示出“权限被拒绝”的警告。
但是,在同一会话进行“屏幕共享”时,我们可以完全看到“桌面”文件夹的内容。我们看到,其中实际包含17个项目。并且通过“屏幕共享”,我们可以将这些项目从“桌面”文件夹移动到可以通过文件共享访问的任何其他文件夹,比如~/公用(~/Public)文件夹。这样一种简单的绕过方式,就可以绕过上述权限检查。此外,由于我可以从“屏幕共享”会话的“隐私”窗格中启用其他服务,例如“全盘访问”,因此我还可以使用那些服务来授予自己SSH访问权限,与此类似,我也可以搞定“文件共享”权限被拒绝的问题。
这种权限控制不一致的情况,以及实现过程的复杂性是非常危险的。尽管给合法用户增加了确认的时间成本,但由于没有实现有效控制,使用户没有获得安全性方面的收益。另外,这还引发了一个问题——合法用户需要做什么样的操作,才能使文件共享正常工作?看上去,我们应该到“系统偏好设置”中的“文件和文件夹”窗格添加所需的进程。但具体需要添加什么进程呢?对于那些试图弄清楚如何管理Apple用户隐私控件的人员来说,这完全没有帮助。事实证明,在UI中似乎还存在一个Bug,该Bug完全阻止了任何内容添加到文件和文件夹中,目前我们没有关于这一问题的解决方案。
这些如同Windows Vista一样多的警告:用户该拒绝还是允许?
在macOS 10.15 Catalina中,对于用户隐私控制的扩展,对每个人都产生了非常重要和明显的影响,Tyler Hall在推特中以直观的图像方式描绘了这一点。
众多警告提示的出现,说明Apple在用户隐私方面花费了大量投入,与此同时,也使我们不得不联想到Microsoft发布的Windows Vista的处理方式,这一版本的Windows操作系统使用了一系列不断出现的弹出窗口和对话框,获得了用户的反感,其中很多对话框似乎是不必要的。
确实如此,macOS用户将受到大量授权请求、警告和通知的轰炸。Tyler Hall的图像,无疑是在用戏剧性的方式来说明其效果,毫无疑问,Catalina对弹出警告的坚持会在升级的用户中引起不少的意见,用户的正常工作将会被这些提示多次打断。但是,如果在正常工作中被临时打断,能够换来安全性的提高,也并非一件坏事。
那么我们要讨论的问题就在于,这种方式是否能够提高安全性?对于恶意软件作者来说,他们的一个固有经验就是要使用户易于操作,这也直接导致了“社会工程学”一词的产生,并导致网络钓鱼和鱼叉式攻击的普遍存在,这是攻陷业务的一个关键过程。
一方面,有些用户会认为,此类警报和通知会明确告诉用户应用程序在后台正在执行或尝试执行的操作,并且从安全性方面来看,这一过程是在主动对用户进行安全意识方面的说明。
另一方面,考虑到实际上大多数用户只是想要用计算机来完成工作。除了管理员、IT人员和安全人员之外,绝大多数用户都对设备的工作方式或应用程序的运行过程不感兴趣,就像我们的“技术人员”所预想的那样。用户想要的只有生产力,他们希望技术和策略能保障安全地工作,而不是受到大量提示的困扰。
上面展现的警告就体现了这一点。对于大多数甚至不曾听说过System Events.app的用户来说,或者对于不了解提示中所描述后果的用户而言,这样的提示会具有多大的启发意义呢?
至关重要的是,对话框过多可能会导致用户没有仔细阅读提示,直接作出决定。与此同时,提示框的内容文本是由“行为者”来编写的(引发告警的应用程序 = 负责编写告警信息的应用程序),而这样的应用程序显然会倾向于让用户选择允许。
当用户打开应用程序,并进行一些有意义的工作时,他们往往会希望能快速完成工作,并且希望尽量少受到打扰。在这种情况下,无论安全性如何,用户在绝大多数情况下都倾向于选择允许请求。
时间的紧迫、信息的匮乏以及用户和开发者的主观意愿,都使得这样的实现方式成为一个看上去不太好的选择。我们讨论过很多有关“深度防御”的内容,但如果安全状态的某一层要依赖于打扰用户、发出大量警告时,我们可以说这样的技术是失败的。我们建议,应该以更好地方式来平衡安全性与用户工作的实际需要,并且应该使用自动化的安全解决方案来抵御恶意软件。
总结
作为企业或组织的管理员,如果在企业/组织环境中有Mac设备,那么升级到Catalina就是一个时间的问题,而不是“是否升级”的问题。鉴于Catalina版本做出的巨大改动(包括:不再支持32位应用程序、现有内核扩展的兼容性问题、对关键商业软件的限制等),我们建议用户根据实际情况考虑是否现在进行升级。建议管理员首先要测试工作流程、确认当前依赖关系,确认没有问题后再对管理的资产进行操作系统升级。