配備 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 可以使用。當「完整安全」規則生效,「開機 ROM」和 LLB 會協助確認指定的簽章不僅是由 Apple 簽署,而且是專為此特定 Mac 簽署,本質上就是將該 macOS 版本與該 Mac 綁定。
比起典型的全域簽章作法,使用線上簽署伺服器也能更有效防禦回復攻擊。在全域簽署系統中,安全性 epoch 可能已更新過很多次,但從未見過最新版韌體的系統無從得知。例如,即使目前實際的安全性 epoch 為 5,目前認為屬於安全性 epoch 1 的電腦,仍可接受安全性 epoch 2 的軟體。透過 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 裡,因此它們需要重新啟動。如需更多有關產生 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 檔案,用來從儲存在外接媒體上的作業系統執行受信任的開機。這表示從外接媒體啟動的設定一律會在每個作業系統上直接啟用,且已要求使用者授權,因此不需要其他安全設定。