新型 TIKTAG 攻擊曝光,專門針對谷歌瀏覽器和 Linux 系統(tǒng)
近日,來自三星、首爾國立大學和佐治亞理工學院的韓國研究團隊的研究人員發(fā)現(xiàn)一種以 ARM 的內存標記擴展(MTE)為目標的,名為 "TIKTAG "的新型攻擊,黑客可利用這種方式繞過安全防護功能,這種攻擊專門針對谷歌瀏覽器和 Linux 內核的攻擊,導致數(shù)據(jù)泄露幾率超過 95%。
MTE是ARM v8.5-A架構(及更高版本)新增的一項功能,旨在檢測和防止內存損壞。系統(tǒng)采用低開銷標簽技術,為 16 字節(jié)內存塊分配 4 位標簽,確保指針中的標簽與訪問的內存區(qū)域相匹配,從而防止內存損壞攻擊。
MTE 有三種運行模式:同步、異步和非對稱,兼顧了安全性和性能。
研究人員發(fā)現(xiàn),通過使用兩個小工具(代碼),即 TIKTAG-v1 和 TIKTAG-v2,他們可以利用投機執(zhí)行在短時間內泄露 MTE 內存標記,成功率很高。
標簽泄漏圖,來源:arxiv.org
泄露這些標簽不會直接暴露敏感數(shù)據(jù),如密碼、加密密鑰或個人信息。但理論上,它可以讓攻擊者破壞 MTE 提供的保護,使安全系統(tǒng)無法抵御隱蔽的內存破壞攻擊。
TIKTAG 攻擊
TIKTAG-v1 利用 CPU 分支預測和數(shù)據(jù)預取行為中的推測收縮來泄漏 MTE 標記。
TIKTAG-v1 代碼,來源:arxiv.org
研究人員發(fā)現(xiàn),這個小工具在攻擊 Linux 內核時,對投機性內存訪問的功能格外有效,不過需要對內核指針進行一些操作。
攻擊者使用系統(tǒng)調用調用投機執(zhí)行路徑,并測量緩存狀態(tài)以推斷內存標簽。
TIKTAG-v2 利用了投機執(zhí)行中的存儲到加載轉發(fā)行為,這是一個將值存儲到內存地址并立即從同一地址加載的序列。
TIKTAG-v2 代碼,來源:arxiv.org
如果標簽匹配,值將被轉發(fā),加載成功,并影響緩存狀態(tài);如果標簽不匹配,轉發(fā)將被阻止,緩存狀態(tài)保持不變。
因此,通過探測投機執(zhí)行后的緩存狀態(tài),可以推斷出標簽檢查結果。
研究人員展示了 TIKTAG-v2 小工具對谷歌 Chrome 瀏覽器,尤其是 V8 JavaScript 引擎的有效性,為利用渲染器進程中的內存破壞漏洞開辟了道路。
通過 MTE 旁路實現(xiàn)的攻擊場景,來源:arxiv.org
行業(yè)響應和緩解措施
研究人員在 2023 年 11 月至 12 月期間向受影響的企業(yè)報告了他們的發(fā)現(xiàn),并得到了普遍積極的回應。
發(fā)表在 arxiv.org 上的技術論文提出了以下針對 TIKTAG 攻擊的緩解措施:
- 修改硬件設計,防止投機執(zhí)行根據(jù)標簽檢查結果修改高速緩存狀態(tài)。
- 插入投機障礙(如 sb 或 isb 指令),防止關鍵內存操作的投機執(zhí)行。
- 添加填充指令,以擴展分支指令和內存訪問之間的執(zhí)行窗口。
- 增強沙箱機制,將投機性內存訪問路徑嚴格限制在安全內存區(qū)域內。
雖然 ARM 認識到了情況的嚴重性,并在幾個月前發(fā)布了公告,但它并不認為這是對功能的妥協(xié)。
ARM 在公告中寫道:由于 Allocation Tags 對地址空間中的軟件來說并不是秘密,因此揭示正確標簽值的投機機制并不被視為對架構原則的破壞。
Chrome 瀏覽器的安全團隊承認存在這些漏洞,但目前并未打算修復。因為他們認為 V8 沙盒的目的不是保證內存數(shù)據(jù)和 MTE 標記的機密性。
此外,Chrome 瀏覽器目前默認不啟用基于 MTE 的防御功能,因此修復的優(yōu)先級較低。
Pixel 8 設備中的 MTE 標記已于今年 4 月報告給了安卓安全團隊,并被確認為符合懸賞條件的硬件漏洞。