圖片來源: 

Okta

提供身分管理服務的Okta本周指出,macOS或OSX的第三方開發人員因不當部署蘋果官方的程式碼簽章API,將造成相關的安全、鑑識或資安事件回應工具放行那些假冒成蘋果程式的惡意程式。

程式碼簽章是在執行檔中作記號,以用來驗證該程式未經竄改,以及確實來自所宣稱的供應商。Okta的安全工程師Josh Pitts解釋,在Windows上得以加密簽署所有部份,從.NET二元碼到PowerShell腳本程式,但macOS上的程式碼簽章則是鎖定Mach-O二元程式與應用程式套件,以確保於記憶體中只能執行可靠的程式碼。

此一漏洞則是存在於Mach-O載入已簽署程式碼的方式,以及程式碼簽章APIs的不當操作,駭客可以藉由惡意的Fat檔案開採漏洞,以將惡意程式假冒為蘋果官方程式,並逃過第三方安全程式的審查。

Fat是個可執行的Mac檔案,它含有許多不同的Mach-O檔案,每個Mach-O檔案都是針對特定的CPU架構而設計,以讓該程式能支援不同的CPU架構。

惡意的Fat檔案必須符合3個條件才能開採該漏洞,包括首個Mach-O檔案必須是由蘋果所簽署;其它非源自蘋果的程式則必須是指定簽署(adhoc signed)且是由i386替x86_64位元的macOS所編譯;蘋果程式Fat標頭中的CPU_TYPE必須設為無效,或是非原生的CPU類型。

主要的問題出在於許多的第三方程式並沒有妥善檢查Fat檔案中的每個元件,它們只驗證了Fat檔案中的第一個Mach-O檔案,然後就決定信賴當中的所有元件。

受影響的第三方程式包括惡意程式掃描工具VirusTotal、Gogle旗下的程式簽章檢驗工具molcodesignchecker、臉書的作業系統分析與效能監控工具OSQuery,與F-Secure替Mac所打造的免費安全工具xFence等。

Pitts說,他是在今年2月把相關的報告與概念性驗證程式提交給蘋果,但蘋果卻不認為這是個該由官方修補的安全問題,反而建議第三方開發人員應該使用kSecCSCheckAllArchitectures and kSecCSStrictValidate with SecStaticCodeCheckValidity API,還告誡外部開發人員得要更努力地驗證通用二進位(Universal binary)中的所有身分都是一致的。


Advertisement

更多 iThome相關內容