6 月 18 日消息,韓國安全研究團隊曝光了名為 TIKTAG 的全新推測執行攻擊手段,以 ARM 的內存標記擴展(MTE)為目標,可以繞過防止內存損壞的關鍵保護機制,且成功率高達 95% 以上。
MTE 是 ARM v8.5-A 架構(及后續版本)新增的一項功能,主要是檢測和防止內存損壞。系統采用低開銷標簽技術(Lower overhead tagging),分配 4 bits 來標記 16 byte(1 byte= 8 bits)內存塊。這種機制有助于確定標簽上的指針與被訪問內存區域的標簽一致,從而減少未經授權的內存訪問和濫用。
IT之家注:MTE 分為同步、異步和非對稱三類,每一類都平衡了安全性和性能。不過 TIKTAG 漏洞表明,即便是再妥善、再高級別的保護也可能存在漏洞。
研究人員觀察到兩個效率高、速度快的主要程序,包括 TIKTAG-v1 和 TIKTAG-v2,它們以推測執行為目標,泄露 MTE 內存標簽。
TIKTAG-v1
TIKTAG-v1 中使用的功能包括分支預測中的推測收縮和 CPU 的數據預取。
研究人員發現,這個小工具在攻擊 Linux 內核時,對投機性內存訪問的功能格外有效,不過需要對內核指針進行一些操作。
惡意代碼會更改內核指針,并通過系統調用函數調用使用高速緩存側通道;然后訪問并推測高速緩存的狀態以獲取內存標記。
TIKTAG-v2
TIKTAG-v2 主要關注處理器時序推測中的存儲到加載轉發。
第一步是將值存儲到內存地址,并同時從同一地址加載。該值被傳遞到下一個標簽,成功加載并改變共享緩存狀態。
另一方面,不匹配會阻止轉發,緩存狀態保持不變。如果攻擊者在投機執行后檢查緩存狀態,就能推斷出標簽檢查結果。
事實證明,TIKTAG-v2 對目標漏洞進程(谷歌 Chrome 瀏覽器)是有效的,重點針對 V8 JavaScript 引擎在內的部分。
回應
Arm 公司在公告中表示 TIKTAG 攻擊非常強大,然后指出,使用推測方法在體系結構層面披露分配標記仍然是安全的。他們在公告中強調,分配標記在地址空間中并不隱蔽。
ARM 在公告中寫道:由于 Allocation Tags 對地址空間中的軟件來說并不是秘密,因此揭示正確標簽值的投機機制并不被視為對架構原則的破壞。
谷歌 Chrome 瀏覽器的安全團隊指出了這些問題,但選擇不修復它們,并指出 V8 沙盒不會對內存數據和 MTE 標記保密。此外,到目前為止,Chrome 瀏覽器還沒有啟用基于 MTE 的防御功能,因此修復這些漏洞并不迫切。