配備 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 簽署伺服器通訊,並重新要求一個新的「個人化」簽署。如簽署要求的一部份包含「唯一晶片識別碼(ECID)」(此案例中為 Apple CPU 專屬的唯一 ID),該簽署就是個人化簽署。簽署伺服器傳回的簽署會變為唯一簽署,且只有該特定 Apple CPU 可以使用。當「完整保安」規則生效,Boot ROM 和 LLB 會協助確認指定的簽署不僅是由 Apple 簽署,而且是專為此特定 Mac 簽署,本質上就是將該 macOS 版本與該 Mac 綁定。
相較於典型的全域簽署方式,使用網上簽署伺服器還提供了更好的保護以避免還原攻擊。在全域簽署系統中,保安時間起點可能已回滾很多次,但從未見過最新韌體的系統並不知道。例如,相信其現正處於保安 epoch 1 的電腦,會接受保安 epoch 2 的軟件,即使現時的實際保安 epoch 是 5。透過 Apple 晶片網上簽署系統,簽署伺服器可拒絕為並非屬於最新保安 epoch 的軟件建立簽署。
此外,如果攻擊者在保安 epoch 更改後發現漏洞,便無法直接將屬於舊版 epoch 的有漏洞軟件從系統 A 中挑出,然後套用到系統 B 以進行攻擊。屬於舊版 epoch 的有漏洞軟件是針對系統 A 進行個人化,因而協助避免其遭轉移用以攻擊系統 B。在所有機制通力合作下,可更有效保證攻擊者無法刻意將有漏洞的軟件放到 Mac 上,藉此規避最新軟件提供的防護。但是擁有 Mac 管理者用户名稱和密碼的用户可隨時選擇最適合其使用案例的保安規則。
「較低保安」規則
「較低保安」類似配備 T2 晶片的 Mac(以 Intel 為基礎)上的「中等保安」,廠商(此案例中為 Apple)會為程式碼產生電子簽署來宣吿其為該廠商所提供。這設計可協助防止攻擊者插入未簽署的代碼。Apple 將這類簽署稱為「全域」簽署,因為可在任何 Mac 上使用(目前已設定「較低保安」規則的 Mac),且次數不限。「較低保安」本身無法抵禦回滾攻擊(雖然未授權的作業系統變更可能導致用户資料變為無法存取。如需更多資料,請前往:配備 Apple 晶片的 Mac 上的核心延伸功能。
除了允許執行舊版 macOS 之外,其他作業會要求使用「較低保安」,這會為用户的系統保安帶來風險,例如引入第三方核心延伸功能(kext)。kext 的權限與核心相同,因此第三方 kext 中的任何漏洞都可能導致作業系統遭全面入侵。正因如此,強烈建議開發者在未來配備 Apple 晶片的 Mac 電腦上移除 macOS 中的 kext 支援前,先採用系統延伸功能。即使第三方 kext 已啟用,仍不能將其載入隨選即用核心中,相反地,kext 會合併到輔助核心集合(AuxKC)中,這個集合的雜湊值儲存在 LocalPolicy 內,因此這些 kext 需要重新啟動。如需更多有關產生 AuxKC 的資料,請參閲:在 macOS 中安全延伸核心。
「寬鬆保安」規則
「寬鬆保安」適用於接受讓自己的 Mac 處於極度不安全狀態風險的用户。此模式與配備 T2 晶片的 Mac(以 Intel 為基礎)之「無保安」模式不同。如使用「寬鬆保安」,簽署驗證仍會在整個安全啟動鏈中執行,但是如將規則設為「寬鬆」,就會吿訴 iBoot 應接受本機「安全隔離區」簽署的開機物件,例如用户產生的「開機核心集合」(從自訂 XNU 核心來源建立)。如此一來,「寬鬆保安」也會提供執行任意「完全不受信任作業系統」核心的架構功能。自訂「開機核心集合」或完全不受信任的作業系統在系統上載入時,某些解密密鑰會變得無法使用。其設計用意是防止完全不受信任的作業系統存取受信任作業系統中的資料。
重要事項:Apple 不提供或支援自訂 XNU 核心。
「寬鬆保安」與配備 T2 晶片的 Mac(以 Intel 為基礎)之「無保安」模式另一個不同之處:它現在是過去可獨立控制的某些保安降級的先決條件。最值得注意的是,如要在配備 Apple 晶片的 Mac 上停用「系統完整保護」(SIP),用户必須認知到自己是要將系統設為「寬鬆保安」。之所以有這個要求,是因為停用 SIP 總是會讓系統進入核心非常容易遭入侵的狀態。尤其,如在配備 Apple 晶片的 Mac 上停用 SIP,便會在產生 AuxKC 期間停用 kext 簽署強制執行,因此會允許將任意 kext 載入核心記憶體中。我們已改良配備 Apple 晶片的 Mac 上的 SIP,規則存放區已移出 NVRAM 並移到 LocalPolicy 中。因此,現在如要停用 SIP,必須由擁有 LocalPolicy 簽署密鑰存取權的用户進入 RecoveryOS(按住電源按鈕)並進行認證。這使得純軟件攻擊者、甚至是實際在場的攻擊者都很難停用 SIP。
從「開機保安工具程式」App 無法降級為「寬鬆保安」。用户只能在 RecoveryOS 中從「終端機」執行命令列來降級,例如 csrutil
(會停用 SIP)。用户降級後,發生的這個事件會反映在「開機保安工具程式」中,因此用户可輕鬆將保安設為更安全的模式。
附註:配備 Apple 晶片的 Mac 既不需要亦不支援特定的媒體開機規則,因為從技術層面來看所有開機都是在本機執行。如果用户選擇從外置媒體開機,必須先從 RecoveryOS 使用認證的重新啟動對該作業系統版本進行個人化。此重新啟動會在內置磁碟上製作一個 LocalPolicy 檔案,用來從儲存在外置媒體上的作業系統執行受信任的開機。這表示從外置媒體啟動的設定一律會在每個作業系統上直接啟用,且已要求用户授權,因此不需要其他安全設定。