
搭载 Apple 芯片的 Mac 的启动磁盘安全性策略控制
概览
与基于 Intel 的 Mac 的安全性策略不同,搭载 Apple 芯片的 Mac 上的安全性策略针对的是安装的每个操作系统。这意味着同一 Mac 上支持安装版本和安全性策略不同的多个 macOS 实例。为此,“启动安全性实用工具”中添加了操作系统选择器。

在搭载 Apple 芯片的 Mac 上,“系统安全性实用工具”会指明用户配置的 macOS 整体安全性状态,如 Kext 的启动或系统完整性保护 (SIP) 配置。如果更改安全性设置会显著降低安全性或使系统更易遭到入侵,则用户必须通过按住电源按钮进入 recoveryOS(使恶意软件无法触发信号,只有用户通过实际接触才能触发)才能进行更改。因此基于 Apple 芯片的 Mac 也不要求提供(亦不支持)固件密码,所有关键更改已经由用户授权保护。有关 SIP 的更多信息,请参阅系统完整性保护。
“完整安全性”和“降低安全性”可在 recoveryOS 中使用“启动安全性实用工具”设定。但“宽松安全性”只能通过命令行工具访问,适用于接受大大降低 Mac 安全性的风险的用户。
“完整安全性”策略
“完整安全性”是默认的安全启动策略,其运行方式与 iOS 和 iPadOS 相似。下载好软件并准备安装时,macOS 会联系用于 iOS 和 iPadOS 的相同 Apple 签名服务器并请求新的“定制化”签名,而不是使用软件附带的全局签名。当签名包括作为签名请求一部分的专有芯片 ID (ECID)(此处指 Apple CPU 特定的唯一 ID)时,即属于定制化签名。此时签名服务器返回的签名是唯一的且只能供该特定的 Apple CPU 使用。“完整安全性”策略生效时,Boot ROM 和 LLB 帮助确保给定的签名不仅只由 Apple 签名,而且只针对这台特定的 Mac 签名,从而实际上将该版本的 macOS 与此 Mac 绑定。

相对于传统的全局签名方法,使用在线签名服务器还能更好地防范回滚攻击。在全局签名系统中,安全时间点可能多次更迭,但是一直未安装最新固件的系统无法得知。例如,当前认为处于安全时间点 1 的电脑会接受来自安全时间点 2 的软件,即使当前实际的安全时间点为 5。通过 Apple 芯片在线签名系统,签名服务器可以拒绝为不是处于最新安全时间点的软件创建签名。
另外,如果攻击者在安全时间点更迭后发现漏洞,他们无法简单地利用前一个时间点系统 A 中存在漏洞的软件并将其应用于系统 B 以实施攻击。由于来自较旧时间点存在漏洞的软件是专为系统 A 量身定制的,因此有助于防止其转移,也就无法将其用于攻击系统 B。所有这些机制协同工作,更有力地确保攻击者无法故意在 Mac 上安装存在漏洞的软件以绕过最新软件提供的保护。但是拥有 Mac 管理员用户名和密码的用户可以根据自己的使用情况,始终选择最适合的安全性策略。
“降低安全性”策略
“降低安全性”与基于 Intel 且搭载 T2 芯片的 Mac 上的“中等安全性”行为类似:供应商(此处指 Apple)生成代码的数字签名以声明代码来自供应商。此设计可帮助防止攻击者插入未签名的代码。Apple 将这种签名称为“全局”签名,因为该签名可以在任何 Mac 上不限时长使用,只要 Mac 当前的策略设为“降低安全性”。“降低安全性”本身并不能防范回滚攻击(虽然未经授权的操作系统更改可导致用户数据无法访问)。有关更多信息,请参阅搭载 Apple 芯片的 Mac 中的内核扩展。

除了可让用户运行较旧版本的 macOS,其他可能为用户的系统安全带来风险的操作也需要“降低安全性”,如引入第三方内核扩展 (Kext)。Kext 与内核权限相同,因此第三方 Kext 中的任何漏洞都可能导致整个操作系统遭到入侵。因此,在未来搭载 Apple 芯片的 Mac 电脑上的 macOS 不再支持 Kext 之前,我们强烈建议开发者采用系统扩展。即使第三方 Kext 已启用,也不能按需将其载入内核。这些 Kext 会被合并到辅助内核集 (AuxKC),AuxKC 的哈希值储存在 LocalPolicy 中,因此需要重新启动。有关 AuxKC 生成的更多信息,请参阅 在 macOS 中安全扩展内核。
“宽松安全性”策略
如果用户接受使其 Mac 进入非常不安全状态的风险,则适合使用“宽松安全性”。此模式与基于 Intel 且搭载 T2 芯片的 Mac 上的“无安全性”模式不同。使用“宽松安全性”时,整个安全启动链上仍然会执行签名验证,但将策略设为“宽松”会发送信号告知 iBoot 应当接受由安全隔区在本地签名的启动对象,如用户生成的从自定义 XNU 内核中构建的启动内核集。通过这种方式,“宽松安全性”也为运行任意“完全不受信任操作系统”内核提供了架构层面的功能。自定义启动内核集或完全不受信任的操作系统载入到系统上时,部分解密密钥会变为不可用。此设计旨在防止完全不受信任的操作系统访问受信任操作系统的数据。
【重要事项】Apple 不提供也不支持自定义 XNU 内核。

“宽松安全性”与基于 Intel 且搭载 T2 芯片的 Mac 上“无安全性”还有一点不同:“宽松安全性”是某些过去可独立控制的安全性降级的先决条件。最明显的表现是,若要在搭载 Apple 芯片的 Mac 上停用系统完整性保护 (SIP),用户必须确认要为系统启用“宽松安全性”。需要用户确认是因为停用 SIP 始终会将系统置于内核更易遭到入侵的状态。尤其是在搭载 Apple 芯片的 Mac 上停用 SIP 会在 AuxKC 生成期间停用 Kext 签名实施,从而允许将任意 Kext 载入内核内存。在搭载 Apple 芯片的 Mac 上,针对 SIP 的另一改进是将策略储存移出 NVRAM 并移入 LocalPolicy。因此,现在需要具有 LocalPolicy 签名密钥访问权限的用户进入 recoveryOS(通过按住电源按钮),在其中进行认证后才能停用 SIP。此功能使仅软件层面的攻击者(甚至处于电脑前的攻击者)停用 SIP 的难度显著提高。
从“启动安全性实用工具” App 中无法降级到“宽松安全性”。用户只能通过 recoveryOS 中的“终端”运行命令行工具(如 csrutil
以停用 SIP)来降级。用户降级后,已降级的状态会反映在“启动安全性实用工具”中,使用户可以轻松将安全性设为更安全的模式。
【注】搭载 Apple 芯片的 Mac 不要求(也不支持)特定介质启动策略,因为从技术上来说所有启动都在本地执行。如果用户选择从外部介质启动,该操作系统版本必须先使用 recoveryOS 中已认证的重新启动操作进行定制化。此重新启动操作会在内部驱动器上创建 LocalPolicy 文件,该内部驱动器用于从储存在外部介质上的操作系统执行受信任启动。这意味着从外部介质启动的配置对每个操作系统始终明确启用,且已经要求用户授权,因此无需额外的安全配置。