Windows SMM Security Mitigation Table (WSMT) について

Windows SMM Security Mitigation Table (WSMT) は、Microsoft で定義された ACPI テーブルです。これを使用すると、System Management Mode (SMM) ソフトウェアに特定のセキュリティのベスト プラクティスが実装されているオペレーティング システムをシステム ファームウェアで確認できます。 WSMT テーブルの定義については、Windows SMM Security Mitigations Table (WMST) の仕様に関するページを参照してください。

背景

WSMT は、Windows 仮想化ベースのセキュリティ機能をより適切にサポートするために定義されました。 VBS の背景の詳細については、仮想化ベースのセキュリティ (VBS) に関するページを参照してください。 SMM はオペレーティング システムの知識や制御なしで動作するため、SMM は、VBS を使用して有効になった OS の保護を侵害または迂回するために悪意のあるコードによって利用される可能性のある重大な攻撃面を表します。 堅牢で安全な VBS プラットフォームを提供するには、悪用される可能性のある一般的な脆弱性を排除するために、OEM によって SMM コードが慎重に精査され、場合によっては更新される必要があります。 WSMT には、これらの特定のセキュリティのベスト プラクティスが実装されているオペレーティング システムを示すためにファームウェアで設定できるフラグが含まれています。

Windows VBS サポート時の WSMT の影響

[WSMT 保護フラグ] フィールドは、これらの特定の SMM セキュリティ対策がシステム ファームウェアに存在するかどうかを示します。 サポートされているバージョンの Windows オペレーティング システムでは、初期化の早い段階 (ハイパーバイザーと VBS の起動前) に、WSMT 保護フラグが読み取られ、これらの SMM 保護フラグの存在に基づいて特定のセキュリティ機能の有効、無効、または解除を選択できます。

実装に関するメモ

WSMT 保護フラグ FIXED_COMM_BUFFERS と COMM_BUFFER_NESTED_PTR_PROTECTION で表されるセキュリティ対策を適切に実装するには、ファームウェアのベンダーが System Management Interrupt (SMI) ハンドラーを慎重に評価し、場合によっては再設計する必要があります。 すべての SMI ハンドラーは、MMIO と EFI によって割り当てられたメモリが含まれる許容されたメモリ領域へのアクセス (読み取りまたは書き込み) にのみ制限する必要があります。 SMM 内部のポインターが SMM 外部でメモリを完全に参照していないことを確認するだけでは不十分です。 これらの安全なメモリ領域内にするには、すべての SMM ポインターを検証する必要があります。 これにより、Windows VBS 機能が侵害される可能性がある "混乱した使節" 攻撃で SMM が悪用されることが防止されます。 上記の保護フラグでは、入力の検証とポインターのチェックのみが参照され、現時点では、SMM ページ保護による強制は必要ありません。 たとえば、、EfiConventionalMemory としてファームウェアで記述されたメモリの読み取りまたは書き込みを行うと、シークレットが含まれたり、予期しないソフトウェア動作が発生したりする可能性があるため、SMM では行わないでください。

WSMT 保護を検証する

SMM はオペレーティング システムに対して不透明であるため、WSMT の仕様で規定されている保護が実際に SMM に実装されていることを確認するために Windows で実行されるテストを生成できません。 オペレーティング システムから実行可能なチェックは、WSMT の存在を探し、定義されている保護フラグの状態をすべてチェックすることだけです。

したがって、各システムの SMM コードを慎重に精査し、ファームウェアが WSMT の仕様と、この記事で説明されているガイダンスに準拠していることを確認する必要があります。 各保護フラグの値に対応する対策が適切に実装されていることが OEM で確認されるまで、保護フラグを "true" に設定しないでください。 ベスト プラクティスとして、これに従わうことができなければ、プラットフォームは侵害に対して脆弱なままになり、堅牢なセキュリティ境界を保持するために VBS に依存している複数の OS 保護と Windows セキュリティ機能の有効性が失われます。

サポートされている Windows のバージョン

WSMT は、次のバージョンの Windows でサポートされています。

  • Windows Server Technical Preview 2016
  • Windows 10 Version 1607
  • Windows 10 Version 1703
  • Windows 10 Version 1709