vProの匠

vProのセキュリティ「ハードウェアシールド」はすごかった!~ CPU起動前に動く保護機能から仮想化の定番機能まで~

19項目の機能を全紹介!

 インテルがビジネスPC向けに提供する「インテル vPro プラットフォーム」は、リモート管理やセキュリティー保護、安定性向上など、さまざまな機能・特徴を集約したものだ。

 vPro搭載PCで利用できるそれら機能は、これまでもたびたび解説しているが、「セキュリティ保護」という観点で重要なのが、セキュリティー保護をハードウェアで支える「ハードウェアシールド」だ。

 しかし、この「ハードウェアシールド」は、実に19項目(2023年1月現在)もの機能群を総称するもの。項目数が多いため、細部が解説されることはあまりないが、個々の機能には、もちろん意図があり、それを実現するための技術的な背景がある。

 そこで今回は、公開されているホワイトペーパーなどをもとに、「ハードウェアシールド」の紹介をしてみたい。

 なお、今回紹介する機能は、vPro搭載機でなくても利用できるものや、昔のvPro搭載機では利用できないものも含まれる。ただ、「最新のvPro搭載機」であれば全機能が利用できるので、機能の有無を気にするならば、「最新のvPro搭載機」を選べばよい。

 また、項目順や解説はホワイトペーパーをベースにしている。より詳しい説明を読みたい方は、全体のホワイトペーパーや項目ごとのホワイトペーパーを参考にしてほしい。

【目次】

■そもそも「ハードウェアシールド」とは何か?

■分類1:OSより下位層のセキュリティ(8項目)
 インテル BIOSガード、インテル ブート・ガード、インテル ファームウェア・アップデート/リカバリー、インテル プラットフォーム・トラスト・テクノロジー、インテル ランタイムBIOSレジリエンス、インテル システム・リソース・ディフェンス、インテル トラステッド・エグゼキューション・テクノロジー、インテル システム・セキュリティ・レポート

■分類2:アプリケーションとデータの保護(7項目)
 インテル バーチャライゼーション・テクノロジー、ダイレクトI/O向けインテル バーチャライゼーション・テクノロジー、カーネルDMA保護、モードベースの実行制御、インテル トータル・メモリ・エンクリプション、インテル AES New Instructions、Advanced Programmable Interrupt Controller virtualization

■分類3:高度な脅威からの防御(4項目)
 インテル スレット・ディテクション・テクノロジー、TDT - 高速メモリスキャン、TDT - 高度なプラットフォームテレメトリー、インテル コントロールフロー・エンフォースメント・テクノロジー


そもそも「ハードウェアシールド」とは何か?

 ハードウェアシールドとは、vProのセキュリティ保護機能の総称だ。

 その特徴は、なによりも「ハードウェアレベルで実装されていること」。保護のレベルが「OSより下」のため、昨今増えているファームウェアやBIOSへの攻撃を検知、防御しやすいほか、余分なオーバーヘッドがなく機能することもポイントだ。

 機能としては、OSやセキュリティソフトのセキュリティ保護を強化、あるいは効率よく補助する機能や、セキュリティソフトやOSの手が届かない領域への攻撃を守れる機能が多く用意されており、中には「CPUの起動前に、BIOSの安全性を確認する」など、とてもOSレベルでは実現できない機能も用意されている。

 今回ベースとするホワイトペーパーでは、こうしたハードウェアシールドの機能を「OSより下位層のセキュリティー」「アプリケーションとデータの保護」「高度な脅威からの防御」の3カテゴリーに分けて紹介している。

 大雑把にまとめると、「OSより下位層のセキュリティー」では、PC起動プロセスの保護や、ファームウェアへの不正書き込み防止機能、「アプリケーションとデータの保護」では仮想化時やデータそのものに対する防御機能、「高度な脅威からの防御」では、従来の検出ツールやプロセスをかいくぐる巧妙な攻撃を、ハードウェア的に発見したり、誤検出を削減したりといった機能をそれぞれ提供している。

 以下、それぞれに含まれる機能とあわせて説明していこう。

分類1:OSより下位層のセキュリティ

 「アプリを信頼するには、それを動かすOSが信頼できなくてはならない」というのは分かりやすいだろう。OSが乗っ取られれば、その上のアプリやデータ、パスワードなどは容易にアクセスできてしまうからだ。

 それと同じように、OSを信頼するには、それより下位層に位置するファームウェアやハードウェアが信頼できなくてはならない。

 つまり、本当に信頼できるPC環境を作るなら「PCの電源が投入され、BIOSが起動、OSも起動し、最後にアプリケーションが動作する」という流れが、全て「信頼できるもの」だけで構成されなくてはならない。こうした「トラストチェーン」を築くために、用意されているのが「OSより下位層をセキュリティ」に属する機能群。

 BIOSの不正書き込みを防止する機能をはじめとして、CPU起動前にBIOS内容を検証する機能や、万一マルウェアが侵入しても有効な攻撃がしにくくなるような機能が用意されている。

 この分類に属する機能としては、「インテル BIOSガード」から「インテル プラットフォーム・トラスト・テクノロジー」はvPro搭載PC以外でも使える機能、「インテル ランタイムBIOSレジリエンス」以降はvPro搭載PCの専用機能という切り分けになっているようだ。

 この項に関する個別のホワイトペーパーはこちら


インテル BIOSガード:ファームウェアの不正な書き込みを防止する

 BIOSファームウェアの不正な書き込みを防止する、ベーシックな保護機能。

 攻撃者がマルウェアを含んだBIOSファームウェアをマザーボードに書き込むことを防ぐ。

 インテル BIOSガードでは、「ファームウェアをフラッシュに書き込める権限」の範囲を最小限に制限しており、CPUのモデル固有レジスター(MSR)を設定してモード設定しない限り、書き込みが行えない。この仕組みがあるため、フラッシュの書き込みやアップデートの検証は必ずBIOSガードの機能が関与することになり、より高い防御が実現するという。

 なお、この機能から「インテル プラットフォーム・トラスト・テクノロジー」までの4項目は、vPro搭載PC以外でも利用できる。


インテル ブート・ガード:起動時にBIOS改竄を検証

 PC起動時に「BIOSが改竄されていないか」を検証し、安全な場合のみPCを起動する技術。

 vPro搭載PCにおけるセキュリティ保護機能の起点でもあり、こちらのホワイトペーパーによると「CPUのリセットベクタに制御が移る前にBIOS内容が検証される」と説明されている。つまり、実質的には「CPU起動前にBIOS内容を検証する機能」と言えるだろう。

 CPU起動前にBIOS内容が検証され、確実な安全性を確保するため、例えばマルウェアが仕込まれたBIOSファームウェアでOSの起動プロセスが進んでしまう、といったことを避けられる。

 なお、「起動を保護する」という点では、Windowsのセキュアブートと似ているが、Windowsのセキュアブートは、OSの起動プロセスを保護するもの。役割分担としては、インテル ブート・ガードが確保した安全な起動環境を、Windowsのセキュアブートが引継ぎ、安全な環境でOSを起動する、ということになる。


インテル ファームウェア・アップデート/リカバリー:安全なファームウェア更新を提供する

 自動回復機能を備えたファームウェア更新機能。

 ファームウェア更新の手間や、更新失敗の懸念からファームウェア更新を後回しにすることが無いように用意された機能。

 仮にファームウェア更新に電源が切れた場合でも、電源再投入後、リカバリーファームウェアから起動し、ファームウェア更新を継続、正常な状態に復元できる。

 比較的最近搭載された機能で、第11世代Coreプロセッサー以降の機能とされている。


インテル プラットフォーム・トラスト・テクノロジー(PTT):認証情報や鍵を格納する

 インテルTPM(Trusted Platform Module)2.0の一部をなし、Windowsのハードウェア要件を満たす、認証情報を保存し鍵を管理する。たとえばTPMが使う鍵のような、鍵やパスワード、デジタル証明書を格納する。TPM 2.0標準規格に準拠し、米国連邦情報処理標準規格FIPS 140-2認証を取得している。なお、CPUのS0iXステートでの低消費電力動作に最適化されている。


インテル ランタイムBIOSレジリエンス:SMMページテーブルをロック

 マルウェアが実行されてしまった際、CPUのシステム管理モード(SMM=システム全体を管理するための動作モードでBIOSなどで使われる)に侵入されるリスクを低減する。

 SMMページテーブルについて、セキュリティ・プロパティーを設定した後、そのページテーブルを変更できなくする、という機構で、万一マルウェアが実行されてしまっても、SMMページテーブルを後から変更できないため、不正なメモリ割り当てを行ったり、OSの動きを見てOSにマルウェアを注入する危険性が減少する。

 この機能から「インテル システム・セキュリティ・レポート」までの4項目は、vPro搭載PCのみの機能とされている。


インテル システム・リソース・ディフェンス(SRD):SMIハンドラーの権限を最小化

 BIOS実行時、システム管理モード(SMM)に入るためのハードウェア割り込み(SMI)が発生した際の割り込みハンドラーの権限を制御し、SMIハンドラーでの権限管理(リング0とリング3が使われる)をメモリ以外のシステムリソースにも適用するもの。

 「インテル ランタイムBIOSレジリエンス」とともに活用することで、例えば「OSへの攻撃の入り口としてSMIハンドラー内のバグや脆弱性が突かれるリスク」を低減する。

インテル トラステッド・エグゼキューション・テクノロジー(TXT):OSなどのブートを起動時に検証

 OSやハイパーバイザーのブートを保護し、安全を確保する技術。

 ブートローダー(標準起動環境=MLE)で実行されるコンポーネントを検証し、既知の正常な動作と一致しているかどうかをチェック可能にする。この仕組みにより、起動環境に変更・改竄が行われていないかを迅速に判断できるようになる。

 TPM 2.0やPTTをサポートしており、TPMとTXTを組み合わせることで、UEFIファームウェアとOSの真正性が検証可能になる。

インテル システム・セキュリティ・レポート:OSより下位層のセキュリティを可視化するチャネル

 vPro搭載PCでTXTを利用している場合に、OSより下位層のセキュリティを可視化し、そのポリシーをOSに伝える機能。

 OSブートの最初の段階で実行され、TXTと連携して、信頼できる方法でOSに情報を提供する。OSやハイパーバイザー、MLEは、この機能を使って、ファームウェアSMIハンドラーが、どのハードウェアやリソースにアクセスできるのかを確認する。

分類2:アプリケーションとデータの保護

 「アプリケーションとデータの保護」に分類される機能としては、仮想化やメモリの暗号化、メモリ保護、I/O保護などが提供されている。

 具体的な機能としては、vProならではといえるメモリ暗号化機能やAPICvがある反面、VT-xやVT-d、カーネルDMA保護、AES-NI、MBECなど、vPro搭載機以外で利用できるものも多い。ホワイトペーパーを読む際は「vProプラットフォームにおけるセキュリティ保護の観点で考えた場合の、この機能のポイントはどこなのか」という観点でを読むのがいいだろう。

 この項に関する個別のホワイトペーパーはこちら


インテル バーチャライゼーション・テクノロジー(VT-x):ワークロードを安全に隔離

 インテルのハードウェア仮想化技術のベースである「VT-x」もハードウェアシールドの一翼を担っている。

 ホワイトペーパーでは「ホストOSと個々のワークロードを異なるワークスペースに隔離して動かすことで、セキュリティを強化する」「安全なメモリ領域を作り、隔離、あるいは暗号化すること」などが挙げられているほか、侵害されたPCの復旧においても、侵害されたワークロードが隔離されているため、同じシステム上で稼動するほかのワークロードに影響することなく、問題解決にかかる時間とコストを削減できる、とされている。


ダイレクトI/O向けインテル バーチャライゼーション・テクノロジー(VT-d):仮想マシンのI/Oの高速化と保護

 同じく、I/O処理を仮想化する「VT-d」もハードウェアシールドの一つとされている。

 ポイントは、「VT-xによる仮想マシンの保護と隔離をI/O操作にも拡張できること」で、例えば問題があるデバイスのDMAや割り込みからOSを保護できる。また、仮想マシンの隔離への影響が起きかねないDMAや割り込みのエラーは、VT-dの機能により記録されるため、信頼性も向上する。


カーネルDMA保護:DMAを使った攻撃から保護

 DMA(Direct Memory Access)に対応したデバイスはCPUを介さずにメモリを読み書きできるが、現在はThunderboltのようなホットプラグ対応ポートでもDMAが利用できるため、そうしたポートに接続される周辺機器が攻撃的なDMAを実施、データを盗んだり、マルウェアを挿入されたりする可能性が出てきた。

 これに対応できるのが「カーネルDMA保護」と説明されるこの項の機能。技術としてはVT-dを活用しており、例えばWindows 10(バージョン1803以降)の「カーネルDMA保護」機能や、macOSのバージョン10.8.2以降の保護機能、Linuxカーネルのバージョン4.21の保護機能でも利用されている。

モードベースの実行制御(MBEC):「実行許可ビット」をユーザーページとスーパーバイザーページで分離、信頼性向上

 カーネルレベルの実行権限を持つコードをより安全に実行するための、実行制御機能。

 仮想マシンの仮想メモリをCPUのハードウェアで管理する第2レベルのアドレス変換(SLAT)の拡張で、SLATの拡張ページテーブル(EPT)において、ページ単位に用意されている実行許可(X)ビットを、ユーザーページ用のXUと、スーパーバイザー・ページ用のXSの2つに拡張する。そのうえで「書き込みとスーパーバイザーによる実行の両方が同時に許可されない」ように制御することで、ハイパーバイザーがカーネルレベルのコードの完全性をより高い信頼性で検証し、徹底できる。

 XU/XSビットの値はハイパーバイザーから提供されるため、ハイパーバイザーのサポートが必要になる。

インテル トータル・メモリ・エンクリプション(TME):システムメモリ全てを暗号化

 vPro搭載システムの特徴ともいえる、システムメモリ全てを暗号化する技術。

 メモリチップへの書き込みを暗号化するため、メモリチップへのアクセスを横取りしてデータを盗み出すことが防止できるほか、「ノートPCを盗み出し、強制再起動してメモリ内容をダンプする」といった攻撃も防御できるという。また、物理メモリやDIMMを取り外し、メモリチップそのものからデータを抜き出すような攻撃からも保護できる。

 第11世代Coreプロセッサーから搭載されている。

インテル AES New Instructions(AES-NI):AESによる暗号化を高速化するCPU命令

 Advanced Encryption Standard(AES)による暗号化を高速化する命令群「インテルAES-NI」もハードウェアシールドを構成する機能とされる。

 これは、CPUに7つの命令を追加するもので、AES暗号化/復号化が高速化されることで、暗号化の適用範囲が広くなる。たとえば、Microsoft BitLockerやGoogle Chromeのディスク暗号化といったフルディスク暗号化(FDE)ソリューションでは、保管中のデータの保護にインテルAES-NIを使用しているとのこと。

Advanced Programmable Interrupt Controller virtualization(APICv):仮想マシンのAPIC割り込みを安全かつ高速に処理

 PCの割り込みを制御するAPICだが、この仮想化対応バージョンである「APICv」もハードウェアシールドの機能を担うとされる。

 ポイントは、仮想環境での割り込み処理が、APICvなしでは仮想マシンモニター(VMM)を経由する反面、APICvありではVMMを経由せず、仮想環境内のAPICvインスタンスで処理されること。仮想マシンモニターを経由しないことで、パフォーマンスが向上するほか、システムの保護ができ、安全性も向上すると説明されている。

 第11世代Coreプロセッサーから搭載されており、vPro専用機能とされている。

分類3:高度な脅威からの防御

 最近は、セキュリティの脅威が高度化し、被害も深刻化しているが、その中でも厄介なのが、従来の検出ツールやプロセスをかいくぐる巧妙な攻撃が増えていること。

 「高度な脅威からの防御」に含まれる機能としては、性能への影響をおさえる機能や、検出の難しい攻撃の発見、あるいは攻撃そのものを無効化する機構などがある。

 この分類の機能には「vPro専用機能」とされているものはないが、vPro専用機能との組み合わせでより高いセキュリティを実現できる機能群と言えるだろう。

 この項に関する個別のホワイトペーパーはこちら

インテル スレット・ディテクション・テクノロジー(TDT):セキュリティソフトの検出支援機能

 セキュリティソフトのマルウェア検出機能をCPUが支援する機能の総称が「インテル TDT」と呼ばれている。

 具体的には次項の「高速メモリスキャン(AMS)」、次々項の「高度なプラットフォームテレメトリー」の組み合わせで、MicrosoftのWindows Defenderをはじめ、複数のベンダーがTDTを活用している。

 前者ではシステム負荷を最小限に抑えながら脅威の検出を行うことができ、後者では、パターンファイルでは検出が難しいポリモーフィック型マルウェアや、ファイルレススクリプト、クリプトマイニング、標的型攻撃などを特定しやすい仕組みが提供されている。


TDT - 高速メモリスキャン(AMS):マルウェアのメモリスキャンをGPUにオフロード

 インテル TDTの高速メモリスキャン(AMS)は、セキュリティソフトウェアが行う、マルウェアのメモリスキャンをCPU内蔵GPUにオフロードさせるもの。

 メモリスキャンの効率が上がる上、メモリスキャンの負荷からCPUを解放。結果としてCPUパフォーマンスの低下を抑え、バッテリー消費の削減を実現できる。

 CPUがメモリスキャンを行う場合、数千ものパターンをスキャンする必要があり、CPU使用率も非常に高くなってしまうが、これをGPUが行うことで前述のメリットが実現される。多くのスキャンを実行できるため、脅威検出も強化されるという。


TDT - 高度なプラットフォームテレメトリー:CPUのテレメトリーでコードの挙動から攻撃を検出

 インテル TDTの「高度なプラットフォームテレメトリー」は、CPUが検出するプロセスの挙動情報(テレメトリー)と機械学習を組み合わせて、攻撃コードと思わしきものをプロファイリングし、攻撃と思われる挙動を検出する仕組み。パターンデータによる単純スキャンでは検出が難しい攻撃の検出精度が向上し、なおかつ、そのためのオーバーヘッドも少ないのが特徴。

 ディスクのスキャンをすり抜けるマルウェアやゼロデイ攻撃など、検出対象となるシグネチャーを持たない未知の脅威に対しても特に有効とされる。


インテル コントロールフロー・エンフォースメント・テクノロジー(CET):制御フローの乗っ取りを阻止

 正規コードを悪用した攻撃である、「コントロールフローハイジャック攻撃」を防御するための機構。

 コントロールフローハイジャック攻撃は、正規コードのリターン命令やジャンプ命令を悪用し、「(部分的な)正規コードを、攻撃に使えるタイミングで実行させる」ことで、攻撃者が狙う処理を実行させるもの。コードそのものは正規のもののため、既存の手段では検出と防御が難しかった。

 CETは、こうした制御フローの乗っ取りを阻止する機構で、大別してIndirect Branch Tracking(間接的分岐トラッキング)とShadow Stack(シャドウスタック)の2つで構成されている。

 Indirect Branch Trackingは、ジャンプ指向/呼び出し指向プログラミング(JOP/COP)攻撃手法に対応するもの。ジャンプ先に特定の命令が無いとエラーになるため、「既存コードの途中にジャンプすることで制御を乗っ取る」といった攻撃を防ぐ。

 Shadow Stackは、関数呼び出しなどの戻り先を保存する専用スタックを新たに用意し、通常スタックと比較することで、リターンアドレスの書き換えを検出する。リターン指向プログラミング(ROP)攻撃手法から防御する。

 第11世代Coreプロセッサー以降のCPUが対応している。