Apple 將於 macOS 10.15.4 全面停用核心延伸功能 API 

nordwood-themes-BJx8whKXCgc-unsplash
Photo by NordWood Themes on Unsplash

 

在去年 WWDC 大會上,Apple 宣布將停用 macOS 核心延伸功能(KEXT),以新機制「系統延伸功能」取而代之。

第一個受到影響的是 2019 年 9 月發表的 macOS Catalina(10.15.0),此系統仍允許核心延伸功能與系統延伸功能並存。而 Apple 計畫自 macOS Catalina 10.15.4 開始,若有軟體仍使用核心延伸功能,則會在執行時出現訊息,告訴使用者此軟體內含過時 API,請聯絡原開發商尋求解決。

核心延伸功能與系統延伸功能之目的相同,皆是讓使用者安裝 app 擴充 macOS 作業系統原生功能。App 安裝核心/系統延伸功能,以執行 macOS 原來所缺乏的功能。像 Mac 防毒軟體、防火牆、VPN 客戶端、DNS 代理程式、USB 驅動程式等這類產品,都會用到核心延伸功能。這兩種延伸功能的差別在於,舊有的核心延伸功能以 macOS 核心層級執行程式碼,而新的系統延伸功能只能在控管更嚴格的使用者空間中執行。

Jamf 首席安全研究人員,也是著名的 macOS 安全專家 Patrick Wardle 表示:「以 Apple 的角度來看,這是邁向 macOS 安全性提升的重要步驟。」協力廠商開發的核心延伸功能很容易成為攻擊 macOS 的媒介,攻擊者可能會利用核心延伸功能(假設已經過簽署)來載入自己的程式碼。然而,這類攻擊在系統延伸功能上發揮不了作用,因為它只能在使用者模式中執行,而不是在系統核心執行,無法藉由 KEXT 漏洞取得核心層級的存取權限。Apple 這麼做是出自安全上的考量。

過去開發者會撰寫 app 以核心延伸功能方式為 macOS 添加功能,許多 Mac 上的安全工具重度依賴核心延伸功能的存取權限來提供保護功能。有些人也許會質疑,此舉將使安全防護產品無法偵測到惡意軟體並及時阻止攻擊。但是 Wardle 表示,Apple 已提供一些使用者模式的軟體框架,為協力廠商開發的安全防護工具提供必要功能。