日本マイクロソフト セキュリティ レスポンス チーム セキュリティ プログラム マネージャー
ゆりか先生(村木 由梨香)

これまで取り上げた「「Windows Hello」と「Microsoft Passport」といった不正侵入を防ぐ機能は、デバイスセキュリティにおいて、脅威を未然に防ぐ手立てとして重要な役割を果たします。

しかし、新種のマルウェアや攻撃手法が毎日のように生み出される昨今では、侵入の可能性をゼロにすることは現実的に不可能です。そこで、攻撃者がシステムに侵入したとしても「マルウェアが悪意のあるコードを実行し、より重要な資格情報を窃取できないようにする」ことが近年重要視されつつあります。

Windows 10でもこうしたセキュリティアプローチを取り入れ、仮想化を組み込んだ新たなセキュリティ アーキテクチャ「Virtualized Based Security」を実装しました。

Windows では、任意の命令の実行やメモリ空間へのアクセスが可能である「カーネル モード」と、より制限された特権で実行される「ユーザーモード」があります。特権の高いカーネル モードでは、システムプログラムの書き換えや自由なファイルアクセスを可能にする一方で、信頼性の高いドライバーのみが実行でき、署名などによる改ざん防止策で安全性を高めています。

しかし、高いセキュリティを担保しているはずのカーネル モードであっても、攻撃者が脆弱性を持つドライバーの高い特権を悪用し、システムを攻撃している現状があります。カーネル モード空間に攻撃者が入り込むと、同モードによって保護されているはずの資格情報や、セキュリティ トークンにアクセスし、セキュリティ権限に対して直接攻撃できてしまうのです。

Windows 10では、こうした攻撃に対処すべく、新たなセキュリティの境界線を作りました。「Virtualized Based Security (VSM)」と呼ばれるこの境界線は、カーネル自体がアクセスができず、より高い特権を必要とします。

VSMは、Hyper-Vでも利用されている仮想化テクノロジー「ハイパーバイザー」や「SLAT」「IOMMU」を活用し、通常のOS領域とセキュリティの高い領域を分離しています。これまでは、高い特権を持つカーネル モードが「Ring 0」として中心にあり、特権レベルの低いユーザーモードが、Ring 3としてその周りを取り囲むリング プロテクションによって守られていました。一方のVSMは、ハイパーバイザーで動作する隔離された「マイクロ OS」のように動作し、資格情報やセキュリティ トークンをOSの処理から保護します。

この仕組みは、従来のOSから独立した新たな特権レベル「Virtual Trust Level (VTL)」を追加して実現しています。通常のOSはVTL 0レベルで動作し、VSM はVTL 1で動作します(リング プロテクションとは逆で、数字が大きいほど特権が高くなります)。VSMはOSから独立したハイパーバイザーで動作しており、GUIやネットワークはつながっていません。

VSMに対するアクセスはSLATでマップされたメモリのみとなります。メモリ変換テーブルには、各メモリページがどのレベルで読み取り・実行可能か指定されているため、低いレベルでの処理ができません。これにより、VTL 0で動作する通常のOSや、そこに含まれているドライバーから、VTL 1で指定されているメモリ領域の読み取りを不用意に、あるいは悪意を持って行うことができなくなり、より高いレベルの保護を実現しました。

Virtualized Based Securityの概念図

Virtualized Based Securityは、Windowsにおいて新たな特権の領域を作る基本的なフレームワークを提供する役割を果たしています。この機能を使用し、悪意ある攻撃者が仮にシステムに侵入をしたとしても、コードの整合性を守りつつ、稼働できるソフトウェアを守る「Device Guard」、認証に必要な資格情報を守る「Credential Guard」という仕組みを実装しています。次回は、これらの機能について取り上げていきます。