DMP (data memory-dependent prefetchers) 是目前常見的 CPU 功能之一,存在於 Intel 與 Apple Silicon 現在最新銷售的 CPU 中。 DMP 主要在於提高電腦執行程式碼時的性能,它透過觀察程式之前對記憶體的存取,並推測程式接下來將會需要用到哪些資料。然後將這些資料從較慢的記憶體區域,預先載入到更快速的區域,如 CPU 內的快取之中。如果 DMP 推測正確,預先被載入的資料將立即可被程式使用,進而提高電腦程式執行的效能;如果 DMP 不幸猜錯了,那 CPU 仍然會以一般正常的程式執行方式,透過 Cache Manager 請求正確的資料。而最近來自美國多所大學的研究人員,發現了存在於 Apple M1/M2/M3 CPU 中的 DMP 的漏洞,可被用來發動 GoFetch 攻擊,竊取加密演算法所使用的私鑰。
實用的對策
媒體一如往常地將這種 CPU 硬體設計上的缺陷,報導成無法被有效的修復,即便是被修復了也會大幅影響 CPU 執行的效能,同時也將風向帶往全世界的駭客、黑客都已經熟悉這個漏洞,同時也可輕易的利用這種個漏洞發起攻擊。身為手上擁有 Apple 電腦設備的使用者來說,我自己是採用下列對策來降低這個漏洞對自身造成的風險,同時避免可能的損失,也把這些對策與大家分享。
- macOS 的更新都要跟上 Apple 的發行節奏,只要有更新了再合理的時間之內都要跟上套用更新。
- macOS 中必須安裝個人慣用的正版端點防護軟體,以維護安全,避免從使用郵件、即時通訊軟體、網頁瀏覽等過中,讓惡意軟體入侵。
- macOS 中絕不安裝來源不明的盜版軟體,避免引狼入室。
- macOS 中避免存放高價值的資產,如加密貨幣等之類的資產,以免在操作資產的過程之中,遭受損失。
只要在 Apple Silicon (目前有 M1/M2/M3) 的 DMP 漏洞被確認修復之前,都採取以上的實用對策,相信這個漏洞對我們來說就像是一個可控的基因缺陷,不至於產生太大的問題,可以快快樂樂的生活。
參考資料
- Data memory-dependent prefetcher (Wikipedia)
- Augury
Using Data Memory-Dependent Prefetchers to Leak Data at Rest - GoFetch
Breaking Constant-Time Cryptographic Implementations Using Data Memory-Dependent Prefetchers