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

これまでさまざまなWindows 10のセキュリティ新機能を紹介してきました。ただ、最後に皆さんが気になるのは「結局のところ、Windows 7と何が違うの?」「セキュリティ的にどれほど良くなってるの?」というポイントではないでしょうか。最終回では、両OSの設計の違いを紐解きます。

Windows 7 と Windows 10はなにが違うのか?

新OSのメリットとしては、新機能が利用できることに焦点が当たりがちですが、最新のセキュリティ脅威への対策や技術が実装されている点も見逃してはいけません。これは、セキュリティの機能やOS自体を設計する上で、そもそもの目指す志向・設計思想が、大きく異なることを意味します。

Windows 7がリリースされた2009年当時を振り返ると、サーバー/クライアント型のシステムが主流でした。ファイアウォールなどを駆使してネットワーク境界の保護を軸に据え、攻撃者による重要なサーバーへのアクセス阻止を重視したセキュリティ対策が優先されてきました。こうした背景から、Windows 7のOS設計思想でも「いかに侵入を阻止するか」が重視され、ネットワーク管理機能やユーザーアカウント制御 (UAC)によるカーネル保護などの機能を充実させています。

しかし近年は、Webサイトへのアクセスやメールを経由したファイアウォールが阻止しづらい通信を利用して、クライアントから組織内のサーバーへ攻め入る、標的型攻撃に代表される手法が主流となりました。こうした攻撃手法の変化は、これまでの境界型保護による「侵入をゼロにする」という理想を達成するには非常に困難な状況をもたらしました。

Windows 7時代の設計は、当時のセキュリティ脅威(とある程度予想された将来の攻撃手法)をベースにしているため「侵入を阻止する」ことは得意でも、「侵入した後の防御」は設計上手薄です。侵入をゼロにできないのであれば、セキュリティ対策として脆弱な状況と言うほかないのです。

これに対してWindows 10では、「侵入されることを前提とした対策」の設計思想を採用しています。例えば、ローカル管理者や特権が侵害されたとしても重要な資格情報を守る「Credential Guard」と、より深刻な不正コードの実行を防ぐ「Device Guard」によって深刻な被害から端末を保護して、これを踏み台にした組織への侵入を防ぎます

迅速な検知・拡大抑止機能の実装によって、これまでひとたび侵入を許した環境で甚大な被害をもたらしていた攻撃であっても、被害を最小限に食い止められるようになっています。

Windows 7、Windows 8.1、Windows 10のセキュリティ機能比較

またWindows 10では、人が介在する処理を可能な限り自動化した上で、クラウド活用を前提とした設計を行っています。一例として挙げられるのが「Windows Defender」と「SmartScreen」です。

クラウド上にマイクロソフトとセキュリティパートナー企業の最新データベースを集約しており、機械学習なども用いてゼロデイ攻撃への対策を図っています。攻撃データのログは自動的にクラウドへアップして処理するため、管理面から見ても効率化が図られています。実は、Windows 7やWindows 8でもソリューションを追加することで、同等の環境を実現できます。しかし、OSにネイティブで実装されているわけではないため、システム環境が複雑化して管理がより煩雑になるだけではなく、費用がかさむことも考える必要があります。

セキュリティの強みは「新機能」以外にもアリ

新機能以外にも、多くのセキュリティ技術がOSの基本機能として組み込まれています。これまでのOSで培った知見をもとに、既知の脆弱性はもとより、攻撃の糸口、将来的に脆弱性になる可能性のあるコードなども最大限に排除しています。一方で、技術の進化や攻撃者による新たな攻撃手法の発見、そして何万にも及ぶコードラインから、脆弱性をゼロにすることは現実的に不可能です。

そこで、Windows 10は脆弱性があったとしても、攻撃を「成功させない緩和策」をOSの基本機能のレイヤーで実装することに重点を置いています。攻撃の実現性と成功率を下げれば、攻撃者が費やす必要のあるコストの上昇につながり、結果としてWindows 10の攻撃を受ける機会が減少します。以下に、その具体的な緩和策を例示します。

  • 64ビットのブラウザ「Edge」 : ブラウザへの攻撃に「Heap Spray」と呼ばれる手法があります。攻撃コードがどのメモリアドレス位置から実行されるか攻撃者にはわからないため、ヒープ領域にコードを大量に配置(スプレー)することで、攻撃の実行率を上げます。32ビットのプログラムは比較的小さなアドレス空間であるため、攻撃が成功しやすい傾向にあります。一方で64bitはメモリ空間が巨大な上、Edgeはさらに高エントロピーの「Address Space Layout Randomization(ASLR)」を利用してアドレス位置を推察しにくくしています。

  • コードの整合性とimage load restriction : EdgeではFlashやプラグインを読み込めないようにするなど、これまで攻撃の糸口として利用されてきた機能を排除しています。さらに、マイクロソフトかWHQL(Windows Hardware Auality Labs)、Store、DRMで署名されたDLLしか読み込むことができません。例えば、マルウェアがブラウザにDLLを不正に埋め込んで偽物の表示をするといった「バンキング マルウェア」で利用される手口を防ぐことができます。

  • Control Flow Guard : インストラクション ポインタの制御を奪って任意のコードを実行させる攻撃が存在します。これに対しては、コンパイル時にIndirect Call(call eaxなど)を精査して、正当な呼び出しだけを「ホワイトリスト化」したうえで、呼び出し先アドレスにチェックするための関数を挿入する対策を導入しました。これによって、実行時はリストにないIndirect Callかチェックして、不正な呼び出しの場合には例外を発生させて、処理を中断します。なお、プログラムは再コンパイルする必要があるので、注意してください。

昨今、セキュリティの強化には多くの制限事項を伴い、ビジネスやユーザービリティの妨げになるというイメージで語られます。しかし、セキュリティを正しく理解・活用すれば、ビジネスをより加速させるパートナーと成り得るのではないでしょうか。セキュリティは “妨げるもの” から “Business Enabler” へ。Windows 10はセキュリティ対策の転換点を支えるOSになると考えています。