聚焦源代碼安全,網羅國內外最新資訊!
編譯:代碼衛士

PACMAN 利用「推斷性執行攻擊繞過重要的、用於執行指針完整性的內存防護機制 ARM Pointer Authentication(ARM 指針認證機制)。」
更令人擔憂的是,「雖然 PACMAN 使用的硬件機制無法通過硬件特性進行打補丁,但可修復內存損壞漏洞。」
PACMAN 根植於指針認證代碼 (PACs) 中,這些代碼是在arm64e架構中引入的防禦措施,旨在檢測並防護對內存中指針(存儲內存地址的對象)異常變化的情況。
PACs 旨在解決軟件安全中的常見問題如內存損壞漏洞等。惡意人員常通過覆寫內存(如指針)中的控制數據利用這些漏洞,將代碼執行重定向到受攻擊者控制的任意位置。
雖然人們通過地址空間布局隨機化(ASLR)等策略來提高執行緩衝區溢出攻擊的難度,但PACs 的目標是確保「最小化大小和性能影響的指針的有效性」,從而阻止惡意人員創建 exploit 中使用的有效指針。
完整性通過加密哈希(指針驗證代碼,PAC)保護指針來實現。蘋果對PAC的解釋為:「指針驗證通過提供特殊CPU指令,在存儲指針前,將加密簽名或PAC添加到指針未使用的高階位。另外一個指令在從內存讀取指針後刪除並驗證該簽名。修改寫入和讀取之間的存儲值使簽名無效。CPU將驗證失敗解讀為內存損壞並在指針內設置高階位,使指針無效並導致應用程序崩潰。」
但PACMAN 「刪除了在通過指針驗證保護的平台上執行控制流執行攻擊的主要障礙。」它結合內存損壞和推斷性執行規避該安全特性,「通過微架構側信道攻擊泄露PAC驗證結果,而不會觸發任何崩潰」。
簡言之,該攻擊方法能夠區分正確的PAC和不正確的哈希,使得惡意人員能夠「暴力攻擊正確的PAC值,同時掛起崩潰,在啟用PA的受害者程序或操作系統上構建控制流劫持攻擊。」
通過Prime+Probe 攻擊的變換先行緩衝器,利用定時側信道攻擊可推斷性猜測出每個PAC值,從而成功阻止崩潰。
如在 Spectre 和 Meltdown 攻擊中觀測到的推斷性執行漏洞那樣,這種漏洞利用了亂序執行技術。這種技術用於通過預測程序執行流最可能的路徑,改進現代微處理器的性能。
然而,值得注意的是,該威脅模型假設受害者程序(內核)中已經存在一個可利用的內存損壞漏洞,而它反過來可導致低權限攻擊者(惡意app)將惡意代碼注入受害者進程中的某些內存位置中。
研究人員總結稱,「該攻擊對於執行具有指針驗證機制的未來處理器的設計者而言,具有很重要的意義,對於未來的控制流完整性原語的安全性而言,具有廣泛的意義。」
https://thehackernews.com/2022/06/mit-researchers-discover-new-flaw-in.html
題圖:Pixabay License
本文由奇安信編譯,不代表奇安信觀點。轉載請註明「轉自奇安信代碼衛士 https://codesafe.qianxin.com」。


奇安信代碼衛士 (codesafe)
國內首個專注於軟件開發安全的產品線。
覺得不錯,就點個「在看」 或 "贊」 吧~