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