25. TSX 非同步中止 (TAA) 緩解

25.1. 概述

TSX 非同步中止 (TAA) 是一種針對某些 Intel 處理器內部緩衝區的側通道攻擊,類似於微架構資料取樣 (MDS)。在這種情況下,當事務同步擴充套件 (TSX) 事務中存在非同步中止條件時,某些載入可能會將無效資料推測性地傳遞給依賴操作。這包括沒有故障或輔助條件的載入。此類載入可能會推測性地公開來自與 MDS 相同的 uarch 資料結構的陳舊資料,具有相同的公開範圍,即同線程和跨執行緒。此問題影響所有當前支援 TSX 的處理器。

25.2. 緩解策略

a) 停用 TSX - 緩解措施之一是停用 TSX。新的 MSR IA32_TSX_CTRL 將在未來的和當前的處理器中透過微碼更新後可用,可用於停用 TSX。此外,它還控制 CPUID 中 TSX 特性位(RTM 和 HLE)的列舉。

b) 清除 CPU 緩衝區 - 類似於 MDS,清除 CPU 緩衝區可以緩解此漏洞。有關此方法的更多詳細資訊,請參見 Documentation/admin-guide/hw-vuln/mds.rst

25.3. 核心內部緩解模式

off

停用緩解。要麼 CPU 不受影響,要麼在核心命令列上提供 tsx_async_abort=off。

tsx disabled

啟用緩解。在支援 TSX 控制的處理器上,預設情況下在啟動時停用 TSX 功能。

verw

啟用緩解。CPU 受到影響,並且在 CPUID 中公佈了 MD_CLEAR。

ucode needed

啟用緩解。CPU 受到影響,並且在 CPUID 中未公佈 MD_CLEAR。這主要用於虛擬化場景,其中主機具有更新的微碼,但虛擬機器管理程式未在 CPUID 中公開 MD_CLEAR。這是一種盡力而為的方法,不保證有效。

如果 CPU 受到影響,並且未提供“tsx_async_abort”核心命令列引數,則核心會根據 RTM 和 MD_CLEAR CPUID 位的狀態選擇適當的緩解措施。

下表指示 tsx=on|off|auto cmdline 選項對各種 MSR_IA32_ARCH_CAPABILITIES 位組合的 TAA 緩解、VERW 行為和 TSX 功能狀態的影響。

  1. “tsx=off”

MSR_IA32_ARCH_CAPABILITIES 位

使用 cmdline tsx=off 的結果

TAA_NO

MDS_NO

TSX_CTRL_MSR

啟動後的 TSX 狀態

VERW 可以清除 CPU 緩衝區

TAA 緩解 tsx_async_abort=off

TAA 緩解 tsx_async_abort=full

0

0

0

硬體預設

與 MDS 相同

與 MDS 相同

0

0

1

無效情況

無效情況

無效情況

無效情況

0

1

0

硬體預設

需要 ucode 更新

需要 ucode 更新

0

1

1

已停用

TSX 已停用

TSX 已停用

1

X

1

已停用

X

無需

無需

  1. “tsx=on”

MSR_IA32_ARCH_CAPABILITIES 位

使用 cmdline tsx=on 的結果

TAA_NO

MDS_NO

TSX_CTRL_MSR

啟動後的 TSX 狀態

VERW 可以清除 CPU 緩衝區

TAA 緩解 tsx_async_abort=off

TAA 緩解 tsx_async_abort=full

0

0

0

硬體預設

與 MDS 相同

與 MDS 相同

0

0

1

無效情況

無效情況

無效情況

無效情況

0

1

0

硬體預設

需要 ucode 更新

需要 ucode 更新

0

1

1

已啟用

與 MDS 相同

1

X

1

已啟用

X

無需

無需

  1. “tsx=auto”

MSR_IA32_ARCH_CAPABILITIES 位

使用 cmdline tsx=auto 的結果

TAA_NO

MDS_NO

TSX_CTRL_MSR

啟動後的 TSX 狀態

VERW 可以清除 CPU 緩衝區

TAA 緩解 tsx_async_abort=off

TAA 緩解 tsx_async_abort=full

0

0

0

硬體預設

與 MDS 相同

與 MDS 相同

0

0

1

無效情況

無效情況

無效情況

無效情況

0

1

0

硬體預設

需要 ucode 更新

需要 ucode 更新

0

1

1

已停用

TSX 已停用

TSX 已停用

1

X

1

已啟用

X

無需

無需

在表中,TSX_CTRL_MSR 是 MSR_IA32_ARCH_CAPABILITIES 中的一個新位,指示是否支援 MSR_IA32_TSX_CTRL。

IA32_TSX_CTRL MSR 中有兩個控制位

位 0:設定後,它將停用 TSX 的受限事務記憶體 (RTM)

子功能(將強制所有事務在 XBEGIN 指令上中止)。

位 1:設定後,它將停用 RTM 和 HLE 功能的列舉

(即,它將使 CPUID(EAX=7).EBX{bit4} 和 CPUID(EAX=7).EBX{bit11} 讀取為 0)。