去年,谷歌的Project Zero團隊團隊發現了Windows 10 S和Microsoft Edge的漏洞。現在,它曝光了 macOS 核心中存在的一個寫時複製高危漏洞。
macOS 核心被官方稱為 XNU,這個首字母縮寫詞代表“XNU is Not Unix”。 macOS 的核心 XNU 在某些情況下允許寫時複製(copy-on-write,COW)行為,COW 是一種本質上沒有缺陷的資源管理技術,它有一個重要的作用是可以保護複製的記憶體以防後續通過源程式修改,避免源程式被利用雙讀。但是在 macOS 這裡 COW 似乎出了問題。
Project Zero發現,如果修改了使用者擁有的已掛載檔案系統映像,則不會通知虛擬管理子系統這些更改,這意味著攻擊者可以採取惡意操作,而無需掛載的檔案系統瞭解它。
這種寫時複製行為不僅適用於匿名記憶體,還適用於檔案對映。這意味著,在目標程式開始從傳輸的儲存區讀取之後,儲存器壓力可能導致保留傳輸的儲存器的頁面被從頁面快取中逐出。稍後,當再次需要被驅逐的頁面時,可以從後備檔案系統重新載入它們。
這意味著如果攻擊者可以在不通知虛擬管理子系統的情況下改變磁碟檔案,由此形成了一個高危安全漏洞。macOS允許普通使用者掛載檔案系統映像。當安裝的檔案系統映像直接發生變化時(例如,通過在檔案系統映像上呼叫pwrite()),此資訊不會傳播到已安裝的檔案系統中。
核心XNU漏洞歷史
但這並不是核心XNU第一次出現安全漏洞。
去年8月份,來自Semmle公司的安全研究員Kevin Backhouse在蘋果作業系統的XNU核心中就發現了多個關鍵的遠端程式碼執行漏洞。Kevin Backhouse發現的第一個XNU核心漏洞被標識為CVE-2018-4407,一個影響到macOS和iOS的堆緩衝區溢位漏洞,成功利用可能會導致目標裝置崩潰。想要觸發這個漏洞,攻擊者只需要將惡意IP資料包傳送到目標裝置的IP地址即可。無需任何使用者互動,攻擊者只需要連線到與目標裝置相同的網路。已經在去年9月17日釋出的iOS 12和9月24日釋出的macOS Mojave,以及10月30日釋出的macOSSierra和High Sierra得到修復。
除了CVE-2018-4407之外,Kevin Backhouse還在XNU核心中發現了另外五個緩衝區溢位漏洞:CVE-2018-4259、CVE-2018-4286、CVE-2018-4287、CVE-2018-4288和CVE-2018-4291。不同的是,這些漏洞存在於客戶端網路檔案系統(NFS)實現中,不過也在去年7月9日釋出的macOS 10.13.6中得到了修復。
谷歌的ProjectZero團隊以其在公司內部以及其他公司生產的產品中發現並披露安全漏洞的能力而聞名。其成員在軟體中找到缺陷,私下向製造商報告,並在公開披露之前給他們90天的時間來解決問題。
研究人員向蘋果公司通報了發現於2018年11月的這一缺陷,但該公司在超過90天的最後期限之後仍未修復,這就是為什麼這個漏洞現在以“高嚴重性”標籤公開。不過,蘋果已經收到了這個問題,正在與Project Zero合作開發未來macOS版本的補丁。
詳細的概念驗證可以檢視:
https://bugs.chromium.org/p/project-zero/issues/detail?id=1726&q=
參考來源:
更多資訊: