了解 Windows SMM 安全性風險降低資料表 (WSMT)

Windows SMM 安全性防護表 (WSMT) 是由 Microsoft 定義的 ACPI 資料表,可讓系統韌體確認已在系統管理模式中實作特定安全性最佳做法, (SMM) 軟體。 WSMT 資料表定義描述于 Windows SMM 安全性防護功能資料表 (WMST) 規格中。

背景

已定義 WSMT,以更妥善地支援 Windows 虛擬化型安全性功能。 如需 VBS 的更多背景,請參閱 虛擬化型安全性 (VBS) 。 由於 SMM 在沒有作業系統的知識或控制的情況下運作,因此 SMM 代表惡意程式碼可能利用的重大攻擊面,以危害或規避透過 VBS 啟用的 OS 保護。 提供強固且安全的 VBS 平臺需要 OEM 仔細檢查和可能更新 SMM 程式碼,以消除可能遭到惡意探索的常見弱點。 WSMT 包含可設定為向作業系統指出這些特定安全性最佳做法已實作的旗標。

Windows VBS 支援上 WSMT 的影響

[WSMT 保護旗標] 欄位指出系統韌體中存在這些特定的 SMM 安全性防護功能。 在 Hypervisor 和 VBS 啟動之前,支援的 Windows 作業系統版本會在初始化期間提早讀取 WSMT 保護旗標,並可能會根據這些 SMM 保護旗標的存在,選擇啟用、停用或取消功能特定安全性功能。

實作附註

WSMT 保護旗標FIXED_COMM_BUFFERS和COMM_BUFFER_NESTED_PTR_PROTECTION所代表之安全性防護措施的適當實作,將會要求韌體廠商仔細評估並重新設計系統管理中斷 (SMI) 處理常式。 所有 SMI 處理常式都必須限制為只存取 (讀取或寫入) ,以允許包含 MMIO 和 EFI 配置記憶體的記憶體區域。 檢查 SMM 中的指標並未完全參考 SMM 外部的記憶體。 相反地,所有 SMM 指標都必須經過驗證,才能位於這些安全記憶體區域內。 這可防止 SMM 在「混淆的副」攻擊中遭到惡意探索,然後可以利用此攻擊來危害 Windows VBS 功能。 上述保護旗標只會參考輸入驗證和指標檢查,而且目前不需要透過 SMM 頁面保護強制執行。 例如,SMM 不應該讀取或寫入韌體所描述為 EfiConventionalMemory 的記憶體,因為它可能包含秘密或導致軟體無法預期運作。

驗證 WSMT 保護

由於 SMM 與作業系統不透明,因此無法產生在 Windows 中執行的測試,以確認 WSMT 規格中指定的保護實際上是在 SMM 中實作。 從作業系統,唯一可能的檢查是尋找 WSMT 是否存在,並檢查所有已定義保護旗標的狀態。

因此,OEM 負責仔細檢查每個系統的 SMM 程式碼,並確保韌體符合 WSMT 規格和本文中所述的指引。 在 OEM 確認已正確實作每個保護旗標值對應的防護功能之前,不應將 [保護旗標] 設定為 「true」。 無法遵循此做法,讓平臺容易遭到入侵,並否定依賴 VBS 來維護強固安全性界限的多個 OS 保護與 Windows 安全性功能的有效性。

支援的 Windows 版本

下列版本的 Windows 包含 WSMT 的支援:

  • Windows Server Technical Preview 2016
  • Windows 10 (版本 1607)
  • Windows 10 (版本 1703)
  • Windows 10 (版本 1709)