Windows 10 のセキュリティ機能を使用して脅威を軽減する

適用対象

  • Windows 10

このトピックでは、現在のセキュリティ環境におけるソフトウェアやファームウェアの脅威の概要と、これらの脅威に対応するために Windows 10 が提供する軽減策について説明します。 Microsoft が提供する関連する保護については、「関連トピック」をご覧ください。

セクション 内容
今日のセキュリティの脅威 今日のセキュリティの脅威の性質を説明し、ソフトウェアの悪用や脅威を軽減するための Windows 10 の対応策について説明します。
構成可能な Windows 10 の軽減策 構成可能な脅威の軽減策の一覧表と、詳細情報へのリンクを提供します。 Device Guard などの製品の機能を表 1 に示し、データ実行防止などのメモリ保護オプションを表 2 に示します。
Windows 10 に組み込まれている軽減策 構成を必要としない、オペレーティング システムに組み込まれている、Windows 10 の軽減策について説明します。 たとえば、ヒープの保護とカーネル プールの保護は、Windows 10 に組み込まれています。
Enhanced Mitigation Experience Toolkit に関連する Windows 10 の理解 Enhanced Mitigation Experience Toolkit (EMET) の軽減策と Windows 10 の組み込み機能の対応、および EMET の設定を Windows 10 の軽減策のポリシーに変換する方法について説明します。

このトピックでは、侵害発生前の軽減策である、デバイス保護と脅威への対抗について説明します。 Windows 10 でのこれらの保護機能とその他のセキュリティ防御のしくみを次の図に示します。

Types of defenses in Windows 10

図 1    Windows 10 のセキュリティ防御の一部としてのデバイス保護と脅威への対抗

今日のセキュリティの脅威

現在問題になっているセキュリティの脅威は、攻撃的で執拗なものです。 以前は、悪意のある攻撃者は、主に攻撃を通じてコミュニティで認められることや、システムを一時的にオフラインにするスリルに重点を置いていました。 その後、攻撃者の動機は、所有者が要求された身代金を支払うまで、デバイスやデータを人質に取るなどの方法による、金銭の獲得に移りました。 最近の攻撃は次第に大規模な知的財産の窃盗に集中してきています。システムがターゲットとなったことによる名誉損失が金銭的な損失につながったり、サイバー テロによって世界中の個人、企業、および国家の利益のセキュリティまで脅かされるようになりました。 通常、これらの攻撃者は高いスキルを持った個人やセキュリティの専門家であり、大規模な予算や、無制限とも言える人材を持つ、国家や組織に雇われている場合もあります。 これらの脅威には、その課題に対応したアプローチが必要となります。

今日のこれらの状況を踏まえ、Windows 10 Creators Update (Windows 10 バージョン 1073) には、多くのソフトウェア脆弱性の発見と悪用を困難 (またはコストがかかるよう) にするための、複数のセキュリティ機能が含まれています。 これらの機能は、次の目的で設計されています。

  • あらゆるクラスの脆弱性を排除します

  • 悪用手法を防ぎます

  • 損害を阻止し、持続化を防止します

  • 悪用される機会を制限します

以下のセクションでは、Windows 10 バージョン 1703 におけるセキュリティの軽減策の詳細を説明します。

構成可能な Windows 10 の軽減策

構成可能な Windows 10 の軽減策を、次の 2 つの表に示します。 最初の表は、企業におけるデバイスとユーザーのためのさまざまな保護を示します。2 つ目の表は、データ実行防止などの具体的なメモリ保護について詳しく説明しています。 メモリ保護オプションは、システムの制御を取得するためにメモリを操作しようとするマルウェアに対する具体的な軽減策を提供します。

表 1 Windows 10 の構成

軽減策と対応する脅威 説明とリンク
Windows Defender SmartScreen
は、悪意のあるアプリケーションがダウンロードされることを防ぎます
悪質なアプリケーション
ダウンロードされません
Windows Defender SmartScreen では、Microsoft が保守を行っているサービスを使用して、ダウンロードされたアプリケーションの評判を確認できます。 インターネットに由来するアプリ (ユーザーが別の PC からコピーしたものも含む) をユーザーが初めて実行する場合、SmartScreen はアプリに評判があるかどうか、悪意があることがわかっているかどうかを確認し、それに応じて対応します。

詳しくは、 後述の「Windows Defender SmartScreen」をご覧ください。
Credential Guard
は、pass-the-hash または pass-the-ticket 攻撃によって、攻撃者がアクセスを取得しないようにします
access から
Hash または
チケットを受け渡す攻撃
Credential Guard は、仮想化ベースのセキュリティを使って、NTLM パスワード ハッシュ、Kerberos チケット保証チケットなどのシークレットを分離し、特権を持つシステム ソフトウェアのみがアクセスできるようにします。
Credential Guard は Windows 10 Enterprise および Windows Server 2016 に含まれています。

詳しくは、Credential Guard によるドメインの派生資格情報の保護」をご覧ください。
エンタープライズ証明書のピン留め
は、PKI を使った man-in-the-middle 攻撃を防ぎます
man-in-the-middle 攻撃の場合
PKI を活用する
エンタープライズ証明書のピン留めを使用すると、望ましくない証明書や不正に発行された証明書にチェーンすることを防ぎ、内部のドメイン名を保護できます。 エンタープライズ証明書のピン留めを使用すると、X.509 証明書とその公開キーを、証明機関のルートまたはリーフに「ピン留め」(関連付け)することができます。

詳しくは、エンタープライズ証明書のピン留め」をご覧ください。
Device Guard
は、デバイスでマルウェアやその他の信頼されていないアプリが実行されることを防ぎます
マルウェアの実行または
その他の信頼されていないアプリ
Device Guard には、コードの整合性ポリシーが含まれており、組織で実行を許可される、信頼できるアプリのみのホワイトリストを作成できます。 Device Guard には、ハイパーバイザーで保護されているコード整合性 (HVCI) と呼ばれる、強力なシステムの軽減策も含まれています。これにより、仮想化ベース セキュリティ (VBS) を活用して、Windows のカーネル モードのコード整合性の検証プロセスを保護します。 HVCI には特定のハードウェア要件があり、コード整合性ポリシーと共に動作して、攻撃者がカーネルへのアクセスを取得した場合でも、攻撃を防止します。
Device Guard は Windows 10 Enterprise および Windows Server 2016 に含まれています。

詳しくは、Device Guard の概要」をご覧ください。
Windows Defender ウイルス対策
は、デバイスをウイルスやその他のマルウェアから防ぎます
ウイルスなどの無料通話
マル
Windows 10 には、組み込みの堅牢なマルウェア対策ソリューションである、Windows Defender ウイルス対策が含まれています。 Windows Defender ウイルス対策は、Windows 8 で導入されて以来、大幅に向上しました。

詳しくは、 後述の「Windows Defender ウイルス対策」をご覧ください。
信頼されていないフォントのブロック
は、特権の昇格攻撃でフォントが使用されるのを防ぎます
使用元
権限昇格攻撃
信頼されていないフォントのブロックの設定により、ネットワークで信頼されていないフォントをユーザーが読み込むことを防ぐことができます。これにより、フォント ファイルの解析に関連付けられている、特権の昇格攻撃を軽減することができます。 ただし、Windows 10 バージョン 1703 では、フォントの解析は AppContainer サンドボックス (これとその他のカーネル プールの保護を説明している一覧は、後述の「カーネル プールの保護」をご覧ください) 内で分離されているため、この軽減策の重要性は低くなっています。

詳しくは、エンタープライズ内の信頼されていないフォントのブロック」をご覧ください。
メモリ保護
は、マルウェアがバッファ オーバーランなどのメモリ操作技術を使用することを防ぎます
メモリ操作の使用から
バッファーなどの手法
オーバーラン
表 2 に記されている軽減策は、マルウェアやその他のコードがメモリを操作してシステムの制御を取得する(たとえば、マルウェアがバッファ オーバーランを使って悪意のある実行コードをメモリに挿入しようとするなど)、メモリ ベースの攻撃からの保護を行います。 注:
これらの軽減策のいくつかで、最も制限の厳しい設定に設定されている場合、アプリのサブセットは実行できません。 テストは、これらのアプリを実行しながら、保護を最大化するのに役立ちます。

詳しくは、 後述の「表 2」をご覧ください。
UEFI セキュア ブート
は、プラットフォームをブートキットやルートキットから保護します
プラットフォームは、
ブートキットとルートキット
Unified Extensible Firmware Interface (UEFI) セキュア ブートは、Windows 8 以降、メーカーによって PC に組み込まれている、ファームウェアのセキュリティ標準です。 これにより、物理的に存在する攻撃者や、ブート プロセスの初期段階や起動後のカーネルで実行されるマルウェアによる改ざんから、ブート プロセスとファームウェアを保護します。

詳しくは、UEFI とセキュア ブート」をご覧ください。
起動時マルウェア対策 (ELAM)
は、ドライバーに偽装するルートキットからプラットフォームを保護します
プラットフォームは、
ドライバーとして装ったルートキット
起動時マルウェア対策 (ELAM) は、Microsoft 以外のすべてのドライバーとアプリより前に、マルウェア対策ソリューションを起動できるように設計されています。 マルウェアが起動関連のドライバーを変更した場合、ELAM によって変更が検出され、Windows がドライバーの起動を防止するため、ドライバー ベースのルートキットがブロックされます。

詳しくは、起動時マルウェア対策」をご覧ください。
デバイス正常性構成証明
は、侵害されたデバイスが組織の資産にアクセスすることを防ぎます
からの感染したデバイス
組織へのアクセス
資産
デバイス正常性構成証明 (DHA) は、組織のネットワークに接続しようとするデバイスが、正常な状態であり、マルウェアに侵害されていないことを確認する方法を提供します。 DHA が構成されると、デバイスの実際のブートの測定データを、正常なブート データの予測値と比較して確認します。 チェックによってデバイスが正常でないことが示されると、デバイスからネットワークへのアクセスが行われないようにします。

詳しくは、Windows 10 ベースのデバイスの正常性の制御」および「デバイス正常性構成証明」をご覧ください。

メモリ操作からの保護を提供するための、構成可能な Windows 10 の軽減策には、これらの脅威および軽減策の詳細な理解と、オペレーティング システムとアプリケーションがメモリを処理する方法に関する知識が必要です。 これらの軽減策を最大化するための標準的なプロセスは、テスト ラボで、ある設定が使用しているアプリケーションと干渉しないかどうかを確認することです。それによって、アプリが正常に実行されるようにしながら、保護を最大化できる設定を展開します。

IT 担当者は、制御フロー ガード (CFG) と呼ばれる追加の保護機能を含んだアプリケーションを提供するように、アプリケーション開発者やソフトウェア ベンダーに依頼することができます。 オペレーティング システムの構成は必要ありません。保護は、アプリケーションにコンパイルされています。 詳しくは、「制御フロー ガード」をご覧ください。

表 2   メモリ攻撃からの保護のための構成可能な Windows 10 の軽減策

軽減策と対応する脅威 説明
データ実行防止 (DEP)
は、バッファ オーバーランの悪用を防ぎます
バッファーオーバーランの悪用
データ実行防止 (DEP) は、Windows オペレーティング システムで利用できる、システム レベルのメモリ保護機能です。 DEP によってオペレーティング システムは、メモリの 1 つ以上のページを非実行可能としてマークできます。これにより、メモリのその領域からコードが実行されることを防ぎ、バッファ オーバーランの悪用を防ぎます。
DEP は、コードが、既定のヒープ、スタック、メモリ プールなどのデータ ページから実行されることを防ぎます。 一部のアプリケーションでは、DEP と互換性の問題がありますが、アプリケーションの大部分は問題ありません。
詳しくは、 後述の「データ実行防止」をご覧ください。

グループ ポリシー設定: DEP は 64 ビット アプリケーションでは既定でオンになっていますが、グループ ポリシーの設定を使って、DEP 保護の追加の構成を行うことができます。詳しくは「アプリに関連するセキュリティ ポリシーの適用に役立つ [プロセス軽減策オプション] の上書き」をご覧ください。
SEHOP
は、構造化例外ハンドラーの上書きを防ぎます
の上書き
構造化例外ハンドラー
構造化例外処理の上書き保護 (SEHOP) は、構造化例外ハンドラー (SEH) の上書き処理の悪用を防ぎます。 この保護メカニズムは実行時に提供されるため、最新の機能強化を使ってコンパイルされているかどうかにかかわらず、アプリを保護するために役立ちます。 一部のアプリケーションでは、SEHOP との互換性の問題があるため、必ず使用環境でテストを行ってください。
詳しくは、 後述の「構造化例外処理の上書き保護」をご覧ください。

グループ ポリシー設定: SEHOP は 64 ビット アプリケーションでは既定でオンになっていますが、グループ ポリシーの設定を使って、SEHOP 保護の追加の構成を行うことができます。詳しくは「アプリに関連するセキュリティ ポリシーの適用に役立つ [プロセス軽減策オプション] の上書き」をご覧ください。
ASLR
は、予期されるメモリ位置に基いて、マルウェア攻撃を軽減します
に基づく攻撃
想定されるメモリの場所
アドレス空間レイアウトのランダム化 (ASLR) は、ブート時に DLL をランダムなメモリ アドレスに読み込みます。 これによって、特定の DLL が読み込まれる特定のメモリ位置を攻撃するようなマルウェアを軽減できます。
詳しくは、 後述の「アドレス空間レイアウトのランダム化」をご覧ください。

グループ ポリシー設定: ASLR は 64 ビット アプリケーションでは既定でオンになっていますが、グループ ポリシーの設定を使って、ASLR 保護の追加の構成を行うことができます。詳しくは「アプリに関連するセキュリティ ポリシーの適用に役立つ [プロセス軽減策オプション] の上書き」をご覧ください。

Windows Defender SmartScreen

Windows Defender SmartScreen は、報告されたフィッシングやマルウェアの Web サイトをユーザーがクリックした場合に、ユーザーに通知して、安全でないダウンロードを防いだり、情報に基いてダウンロードに関する判断を行えるようにします。

Windows 10 の場合、Microsoft は、アプリの評価機能をオペレーティングシステム自体に統合して、アプリの評価機能をオペレーティングシステム自体に統合することにより、SmartScreen (Windows Defender SmartScreen) の保護機能を強化しました。ダウンロードしたファイルの評価を SmartScreen で確認できます。を使っている場合は、ユーザーがリスクの高いダウンロードファイルを実行しようとしているときに警告が表示されます。 インターネットから入手したアプリをユーザーが初めて実行すると、SmartScreen は、デジタル署名やその他の要素を使い、Microsoft が保守を行っているサービスを使用して、アプリケーションの評価を確認します。 アプリに評価がないか、悪意のあることがわかっている場合、SmartScreen は管理者による Microsoft Intune またはグループ ポリシーの設定によって、ユーザーに警告を表示するか、または実行を全面的にブロックします。

詳しくは、「Windows Defender SmartScreen 概要」をご覧ください。

Windows Defender ウイルス対策

Windows 10 の Windows Defender ウイルス対策 は、多面的なアプローチにより、マルウェア対策を向上しています。

  • クラウドによる保護によって、まったく新しいマルウェアでも、数秒でマルウェアを検出してブロックできます。 Windows 10 バージョン 1703 で利用できるこのサービスは、分散リソースと機械学習を使用して、従来の署名の更新よりもはるかに速いペースで、保護をエンドポイントに配布します。

  • リッチなローカル コンテキストは、マルウェアを識別する方法を強化します。 Windows 10 は、ファイルやプロセスなどのコンテンツだけでなく、コンテンツの入手元、保存場所などに関しても Windows Defender ウイルス対策に通知します。 入手元と履歴に関する情報により、Windows Defender ウイルス対策はコンテンツごとに異なるレベルの調査を適用できます。

  • 広範なグローバル センサーは、Windows Defender ウイルス対策を最新の状態に維持し、最新のマルウェアも検出できるようにします。 これは、エンド ポイントからリッチなコンテキスト データを収集する方法と、そのデータを一元的に分析する方法の 2 つにより実現されます。

  • 改ざん証明は、マルウェア攻撃に対して Windows Defender ウイルス対策自体を保護します。 たとえば、Windows Defender ウイルス対策は、保護されたプロセスを使用し、信頼されていないプロセスが Windows Defender ウイルス対策のコンポーネントやレジストリ キーなどを改ざんしようとすることを防ぎます。 (保護されたプロセスについては、後述します)。

  • エンタープライズ レベルの機能により、Windows Defender ウイルス対策をエンタープライズ クラスのマルウェア対策ソリューションとして活用するために必要なツールや構成オプションを、IT 担当者に提供します。

詳しくは、「Windows 10 の Windows Defender」および「Windows Server 用 Windows Defender の概要」をご覧ください。

Microsoft Defender Advanced Threat Protection の詳細については、「 Microsoft Defender Advanced Threat protection (ATP) 」を参照してください。企業は、ネットワーク上の高度な攻撃を検出、調査、および対応することができます。リソース) とMicrosoft Defender Advanced Threat Protection (ATP) (ドキュメント)。

データ実行防止

マルウェアは、悪意のあるペイロードをメモリに挿入して、それが後で実行されることを期待しています。 情報の保存のみを目的として割り当てられた領域にマルウェアが書き込まれた場合に、マルウェアの実行を防止できればすばらしいことです。

データ実行防止 (DEP) は、悪意のあるコードが自身の利益のために使うことができるメモリの範囲を大幅に削減することでまさにそれを行います。 DEP は、最新の CPU で No eXecute ビットを使って、メモリのブロックを読み取り専用とマークするため、脆弱性の悪用によって挿入された悪意のあるコードの実行にそれらのブロックを使うことはできません。

タスク マネージャーを使って、DEP を使用するアプリを確認する方法

  1. タスク マネージャーを開く: Ctrl + Alt + Del キーを押して、[タスク マネージャー] を選択するか、またはスタート画面を検索します。

  2. [詳細] (必要な場合) をクリックし、次に [詳細] をクリックします。

  3. 任意の列見出しを右クリックし、 [列の選択] をクリックします。

  4. [列の選択] ダイアログ ボックスで、最後の [データ実行防止] チェック ボックスをオンにします。

  5. [OK] をクリックします。

DEP が有効なプロセスが表示されます。

Windows 10 で DEP が有効になっているプロセス

図2 Windows 10 で DEP が有効になって いるプロセス

コントロール パネルを使用すると、DEP の設定の表示と変更ができます。

コントロール パネルを使って個々の PC で DEP 設定の表示と変更を行う方法

  1. [コントロール パネル] の [システム]を開く: スタートをクリックし、「コントロール パネル システム」と入力して、Enter キーを押します。

  2. [システムの詳細設定] をクリックして、[詳細設定] タブをクリックします。

  3. [パフォーマンス] のボックスで [設定] をクリックします。

  4. [パフォーマンス オプション][データ実行防止] タブをクリックします。

  5. オプションを選択します。

    • [重要な Windows のプログラムおよびサービスについてのみ有効にする]

    • [次に選択するものを除くすべてのプログラムおよびサービスについて DEP を有効にする] このオプションを選択する場合は、[追加][削除] ボタンを使って、DEP をオンにしない、例外リストを作成します。

グループ ポリシーを使用して DEP 設定を制御する方法

[プロセス軽減策オプション] というグループ ポリシー設定を使って DEP 設定を制御できます。 一部のアプリケーションでは、DEP との互換性の問題があるため、必ず使用環境でテストを行ってください。 グループ ポリシー設定の使用について、詳しくは、「アプリに関連するセキュリティ ポリシーの適用に役立つ [プロセス軽減策オプション] の上書き」をご覧ください。

構造化例外処理の上書き保護

構造化例外処理の上書き保護 (SEHOP) は、攻撃者が悪意のあるコードを使って構造化例外ハンドラー (SEH) を悪用することを防ぎます。構造化例外ハンドラーは、(悪意のない) アプリが例外を適切に処理できるようにする、システムにとって重要な機能です。 この保護メカニズムは実行時に提供されるため、最新の機能強化を使ってコンパイルされているかどうかにかかわらず、アプリケーションを保護するために役立ちます。

[プロセス軽減策オプション] というグループ ポリシー設定を使って SEHOP 設定を制御できます。 一部のアプリケーションでは、SEHOP との互換性の問題があるため、必ず使用環境でテストを行ってください。 グループ ポリシー設定の使用について、詳しくは、「アプリに関連するセキュリティ ポリシーの適用に役立つ [プロセス軽減策オプション] の上書き」をご覧ください。

アドレス空間レイアウトのランダム化

システムへのアクセスを取得するために使われる最も一般的な手法の 1 つは、既に実行されている特権付きプロセスで脆弱性を見つけ、重要なシステム コードやデータが置かれているメモリ内の場所を推測または発券して、その情報を悪意のあるペイロードで置き換える手法です。 システム メモリに直接書き込みができるマルウェアは、よく知られた予測可能な場所に上書きすることができます。

アドレス空間レイアウトのランダム化 (ASLR) により、その種の攻撃がかなり難しくなっています。重要なデータがメモリに格納される方法と場所がランダム化されるためです。 ASLR により、マルウェアが攻撃に必要な特定の場所を見つけるのはより困難になります。 図 3 は、ASLR のしくみを示しています。重要な各種の Windows コンポーネントのメモリ内の場所が再起動のたび変化するようすを示しています。

ASLR のしくみ

図3   ASLR のしくみ

Windows 10 は、システム全体で ASLR holistically を適用し、以前のバージョンの Windows と比較して、ヒープ spraying などの高度な攻撃に対抗するために、エントロピーのレベルを何度も高めます。 64ビットシステムとアプリケーションプロセスでは、大幅に増加したメモリ領域を利用できます。これにより、Windows 10 が重要なデータを保存する場所をマルウェアによって予測するのが難しくなります。 TPM を搭載したシステムで使うと、ASLR メモリ ランダム化のデバイス間での一意性はさらに高まるため、あるシステムで機能している悪用の成功が別のシステムで確実に機能することはより困難になります。

[プロセス軽減策オプション] というグループ ポリシー設定を使って ASLR 設定 (“Force ASLR” と “Bottom-up ASLR”) を制御できます。詳しくは、「アプリに関連するセキュリティ ポリシーの適用に役立つ [プロセス軽減策オプション] の上書き」をご覧ください。

Windows 10 に組み込まれている軽減策

Windows 10 では、悪用からの保護を行うための、脅威に対する多くの軽減策がオペレーティング システムに組み込まれて提供されます。オペレーティング システム内で構成をする必要はありません。 次の表では、これらの軽減策の一部について説明します。

制御フロー ガード (CFG) は、オペレーティング システム内で構成する必要のない軽減策ですが、アプリケーション開発者がアプリケーションをコンパイルするときに軽減策をアプリケーションに構成する必要があります。 CFGは、Microsoft Edge、IE11、Windows 10 のその他の領域に組み込まれています。他の多くのアプリケーションにコンパイル時に組み込むことができます。

表 3 Windows 10 ではメモリの攻略を防ぐため、構成は必要ありません。

軽減策と対応する脅威 説明
SYSVOL と NETLOGON 共有に関する SMB セキュリティ強化
は、man-in-the-middle 攻撃を軽減します
man-in-the-middle 攻撃の場合
Active Directory ドメイン サービスの、ドメイン コントローラーの既定の SYSVOL 共有および NETLOGON 共有へのクライアント接続には、SMB 署名と (Kerberos などの) 相互認証を必要とするようになりました。

詳しくは、 後述の「SYSVOL と NETLOGON 共有に関する SMB セキュリティ強化の向上」をご覧ください。
保護されたプロセス
は、1 つのプロセスが別のプロセスから改ざんされることを防ぎます
別の改ざんから
プロセス
保護されたプロセスの機能により、Windows 10 は、信頼されていないプロセスが特別に署名されたプロセスを操作または改ざんできないようにします。

詳しくは、 後述の「保護されたプロセス」をご覧ください。
ユニバーサル Windows アプリの保護
は、ダウンロード可能なアプリの審査を行い、アプリを AppContainer サンドボックス内で実行します
アプリを実行して、
AppContainer サンドボックス
ユニバーサル Windows アプリは利用可能になる前に慎重に審査されます。アプリは、限られた特権と機能を持った AppContainer サンド ボックス内で実行されます。

詳しくは、 後述の「ユニバーサル Windows アプリの保護」をご覧ください。
ヒープの保護
は、ヒープの悪用を防止します
ヒープの悪用
Windows 10 には、ヒープで使用されるメモリの破損からの保護を行う内部データ構造の使用など、ヒープの保護が含まれています。

詳しくは、 後述の「Windows のヒープの保護」をご覧ください。
カーネル プールの保護
は、カーネルが使用するプール メモリの悪用を防止します
プールメモリの悪用
カーネルで使用される
Windows 10 には、カーネルが使用するプール メモリの保護が含まれています。 たとえば、安全なリンク解除は、攻撃の作成に使われるリンク解除操作と同時に発生する、プール オーバーランからの保護を行います。

詳しくは、 後述の「カーネル プールの保護」をご覧ください。
制御フロー ガード
は、メモリ内のコードの位置間のフローに基づく悪用を軽減します
ベースとなる
コードの場所間のフロー
メモリ内
制御フロー ガード (CFG) は、オペレーティング システム内で構成を行う必要がなく、ソフトウェアがコンパイルされるときに組み込まれる、リスク軽減策です。 CFG は、Microsoft Edge、IE11、Windows 10 の他の領域に組み込まれています。 CFG は、C または C++ で作成するアプリケーション、または Visual Studio 2015 を使ってコンパイルされるアプリケーションに組み込むことができます。
それらのアプリケーションでは、意図したコードのフローを変更しようとする攻撃者の試みを、CFG が検出することができます。 この問題が発生した場合、CFG はアプリケーションを終了します。 CFG を有効にしてコンパイルした Windows アプリケーションを提供するように、ソフトウェア ベンダーに要求を行うことができます。

詳しくは、 後述の「制御フロー ガード」をご覧ください。
Microsoft Edge ブラウザーに組み込まれている保護
は、複数の脅威を軽減できます
潜む
Windows 10 には、まったく新しいブラウザーである Microsoft Edge が含まれています。Microsoft Edge は複数のセキュリティ強化を含めて設計されています。

詳しくは、 後述の「Microsoft Edge と Internet Explorer 11」をご覧ください。

SYSVOL と NETLOGON 共有に関する SMB セキュリティ強化の向上

Windows 10 および Windows Server 2016 では、Active Directory Domain Services の、ドメイン コントローラーの既定の SYSVOL 共有および NETLOGON 共有へのアクセスには、サーバー メッセージ ブロック (SMB) 署名と (Kerberos などの) 相互認証を必要とします。 これにより、man-in-the-middle 攻撃の可能性を軽減します。 SMB 署名と相互認証が使用できない場合、Windows 10 または Windows Server 2016 を実行しているコンピューターでは、ドメイン ベースのグループ ポリシーやスクリプトを処理しません。

注意

これらの設定のレジストリ値は既定では存在しませんが、グループ ポリシーまたは他のレジストリ値によって上書きされるまでは、強化されたルールが依然として適用されます。 これらのセキュリティ機能強化 (UNC ハードニングとも呼ばれます) の詳細については、マイクロソフト サポート技術情報の記事 3000483 および「MS15-011 & MS15-014: Hardening Group Policy (MS15-011 & MS15-014: グループ ポリシーのセキュリティ強化)」を参照してください。

保護されたプロセス

ほとんどのセキュリティ制御は、初期の感染ポイントを防止することを目的としています。 しかし、最良の予防的制御をすべて講じても、マルウェアはシステムに感染する方法を最終的に見つける可能性があります。 そのため、デバイスに侵入したマルウェアに制限をかけるための保護があります。 保護されたプロセスは、そのような制限を行います。

保護されたプロセスにより、Windows 10 は、信頼されていないプロセスが特別に署名されたプロセスを操作または改ざんできないようにします。 保護されたプロセスは、プロセスの信頼レベルを定義します。 信頼性の低いプロセスは操作が防止されるため、より信頼性の高いプロセスが攻撃されることになります。 Windows 10 は保護されたプロセスを、広くオペレーティング システム全体で活用しています。また Windows 8.1 と同様に、サード パーティのマルウェア対策ベンダーが使用できるように、保護されたプロセスを実装しています。詳しくは、「マルウェア対策サービスの保護」をご覧ください。 これにより、システムおよびマルウェア対策ソリューションは、システムに侵入しようとするマルウェアによる改ざんを受けにくくなります。

ユニバーサル Windows アプリの保護

Microsoft Store のすべてのユニバーサル Windows アプリは、ストアで利用可能になる前に慎重な審査が行われているため、ユーザーがストアからユニバーサル Windows アプリをダウンロードする場合には、マルウェアにあう可能性はほとんどありません。 組織がサイドローディング プロセスを通じてビルドおよび配布するアプリは、組織のセキュリティ要件を満たしているを内部で確認する必要があります。

ユニバーサル Windows アプリは、ユーザーが取得した方法に関係なく安心して使うことができます。 ユニバーサル Windows アプリは、特権と機能が限定された AppContainer サンドボックス内で実行されます。 たとえば、ユニバーサル Windows アプリは、システム レベルのアクセスを持っておらず、他のアプリとのやり取りが厳しく制御されるため、ユーザーがアプリケーションのアクセス許可を明示的に付与しない限りデータにアクセスできません。

さらに、すべてのユニバーサル Windows アプリは、最小限の特権のセキュリティ原則に従っています。 アプリは、正当なタスクの実行に必要な最小限の特権のみ受け取るため、攻撃者がアプリを悪用した場合でも、悪用による損害はかなり限定的で、サンドボックス内に収まります。 Microsoft Store には、アプリの年齢区分と発行元に加えて、アプリが必要とする正確な機能 (カメラへのアクセスなど) が表示されます。

Windows のヒープの保護

ヒープ は、Windows が動的なアプリケーション データの格納に使うメモリ内の場所です。 Windows 10 は、攻撃の一部として使用される可能性があるヒープの攻略のリスクを軽減することで、以前の Windows ヒープ設計の向上に進みます。

Windows 10 には、ヒープのセキュリティに対するいくつかの重要な改善点があります。

  • ヒープ メタデータの強化により、ヒープが使用する内部データ構造体を強化して、メモリの破損に対する保護を向上させています。

  • ヒープ割り当てのランダム化により、ヒープ メモリの割り当てにランダム化された場所とサイズを使用するため、重要なメモリの場所を予測して上書きしようとする攻撃者の試みがより困難になります。 具体的には、Windows 10 は、新しく割り当てられたヒープのアドレスにランダムなオフセットを追加します。これにより、割り当ての予測が大幅に少なくなります。

  • メモリ ブロックの前後に仕掛けとしてヒープ ガード ページが使われています。 攻撃者は、メモリ ブロックを越えて書き込もうとする場合 (バッファー オーバーフローと呼ばれる一般的な手法)、ガード ページを上書きする必要があります。 ガードページを変更しようとすると、メモリが破損したと見なされ、Windows 10 はすぐにアプリを終了して応答します。

カーネル プールの保護

Windows オペレーティング システムのカーネルは、2 つのメモリ プールを確保しています。物理メモリに残っているメモリ (「非ページ プール」) と、物理メモリのページインとページアウトができるメモリ (「ページ プール」) です。 これらのプールに対する攻撃には、プロセス クォータ ポインター エンコーディング、ルックアサイド、ディレイ フリー、プール ページ クッキー、プール インデックス境界チェックなど、多くの種類があります。 Windows 10 では、このような攻撃に対してカーネル プールを保護するため、整合性チェックなど、複数の「プールの強化」の保護を備えています。

プールの強化だけでなく、Windows 10 には、その他のカーネルのセキュリティ強化機能が含まれています。

  • カーネル DEPカーネル ASLR: 先述のデータ実行防止アドレス空間レイアウトのランダム化と同じ原則に従います。

  • AppContainer でのフォント解析: フォント解析を AppContainer サンドボックス内に分離します。

  • NTVirtual DOS Machine (NTVDM) を無効にする: 古い NTVDM カーネルモジュール (16 ビットアプリケーションの実行用) は、既定では無効になっています。これにより、関連付けられている脆弱性が neutralizes されます。 (NTVDM を有効化すると、NULL 逆参照やその他の悪用への保護が低下します。)

  • スーパーバイザー モード実行防止 (SMEP): カーネル (「スーパーバイザー」) がユーザー ページでコードを実行することを防止します。これは攻撃者がローカル カーネルの特権の昇格 (EOP) を使う一般的な手法です。 これは、Intel Ivy Bridge 以降のプロセッサによるサポート、または PXN を備えた ARM のサポートを必要とします。

  • 安全なリンク解除: プール オーバーランからの保護を行います。プール オーバーランは、リンク解除操作と同時に発生し、攻撃に利用されます。 Windows 10 にはグローバルに安全なリンク解除が含まれています。これにより、ヒープとカーネル プールの安全なリンク解除を LIST_ENTRY のすべての用途に拡大します。"FastFail" メカニズムにより、高速で安全なプロセスの終了を可能にします。

  • メモリ予約: システムには、最小限の 64 KB のプロセス メモリが予約されています。 アプリは、メモリのこの部分を割り当てることはできません。 これにより、マルウェアが、メモリ内の重要なシステム データ構造を上書きする「NULL 逆参照」などの手法を使用することが困難になります。

制御フロー ガード

アプリケーションがメモリに読み込まれると、コードのサイズ、要求されたメモリ、他の要素に基づいてスペースが割り当てられます。 アプリケーションがコードを実行し始めると、他のメモリ アドレスにある追加のコードを呼び出します。 コードの場所間の関係はよく知られていますが (コード自体に書き込まれます)、Windows 10 より前では、これらの場所間のフローが強制的に適用されませんでした。このため、攻撃者が自分のニーズを満たすためにフローを変更することができました。

Windows 10 では、この種の脅威が制御フロー ガード (CFG) 機能によって軽減されています。 信頼されたアプリケーションが CFG 呼び出しコードを使うようにコンパイルされている場合、CFG は呼び出されたコードの場所が信頼して実行できることを確認します。 場所が信頼できない場合、潜在的なセキュリティ リスクが存在するためアプリケーションがすぐに終了されます。

管理者が CFG を構成することはできません。代わりに、アプリケーション開発者がアプリケーションのコンパイル時に構成することで CFG を利用できます。 CFG を有効にしてコンパイルされた信頼できる Windows アプリケーションを提供するよう、アプリケーション開発者とソフトウェア ベンダーに依頼することを検討してください。 たとえば、C や C++ で記述されたアプリケーション、または Visual Studio 2015 を使ってコンパイルされたアプリケーションで、CFG を有効にすることができます。 Visual Studio 2015 プロジェクトでの CFG の有効化について、詳しくは、「制御フロー ガード」をご覧ください。

もちろん、ブラウザーは攻撃の主要なエントリ ポイントであるため、Microsoft Edge、IE、および他の Windows の機能は CFG を十分に活用しています。

Microsoft Edge およびインターネット Explorer11

ブラウザーのセキュリティは、セキュリティ戦略の重要なコンポーネントであり、それには十分な理由があります。ブラウザーは、ユーザーのインターネットへのインターフェイスであり、悪意のあるサイトや攻撃を待つコンテンツが多数あるためです。 ほとんどのユーザーは、ブラウザーなしでは少なくともジョブの一部を実行できず、多くのユーザーはブラウザーに完全に頼っています。 この現実のため、ブラウザーは悪意のあるハッカーが攻撃を開始する一般的な経路となっています。

すべてのブラウザーでは、ブラウザーの元の範囲を超えた操作を行うことができるように、ある程度の機能拡張が可能です。 一般的な例として Flash 拡張と Java 拡張の 2 つがあり、対応するアプリケーションをブラウザー内で実行することができます。 Web 閲覧やアプリケーションのための Windows 10 のセキュリティを確保するために、特にこの2種類のコンテンツには優先度があります。

Windows 10 では、まったく新しいブラウザーである Microsoft Edge が含まれています。 Microsoft Edge は、次のような複数の点でセキュリティが強化されています。

  • 攻撃対象領域が低減されています。Microsoft 以外のバイナリ拡張機能はサポートされません。 脆弱な攻撃対象領域のある複数のブラウザー コンポーネントは、Microsoft Edge から削除されています。 削除されたコンポーネントには、従来のドキュメント モードとスクリプト エンジン、ブラウザー ヘルパー オブジェクト (BHO)、ActiveX コントロール、Java などがあります。 ただし Microsoft Edge は、Flash コンテンツおよび PDF の表示は、組み込みの拡張機能によって、既定でサポートしています。

  • 64 ビット プロセスを実行します。 以前のバージョンの Windows を実行する 64 ビット PC は、セキュリティの低い以前の拡張機能をサポートするため、32 ビット互換モードで実行されることがよくあります。 Microsoft Edge が 64 ビット PC で実行される場合、64 ビット プロセスのみを実行します。これによって、悪用に対してより安全となります。

  • メモリ ガベージ コレクション (MemGC) を含んでいます。 これは、解放後使用 (UAF) の問題からの保護を行います。

  • ユニバーサル Windows アプリとして設計されています。 Microsoft Edge は本質的に分離されており、ブラウザーをシステム、データ、他のアプリからサンドボックス化する AppContainer で実行されます。 IE11 on Windows 10 は、強化された保護モードを通じて、同じ AppContainer テクノロジを利用することもできます。 ただし、IE11 は ActiveX と BHO を実行することができるため、ブラウザーとサンドボックスは Microsoft Edge よりかなり多くの攻撃を受けやすくなります。

  • セキュリティ構成タスクが簡素化されます。 Microsoft Edge では、簡略化されたアプリケーション構造と単一サンドボックス構成が使われるため、必要なセキュリティ設定が少なくなります。 さらに、Microsoft Edge の既定の設定は、セキュリティのベスト プラクティスに沿って作成されているため、既定でもより安全です。

Microsoft Edge に加えて、マイクロソフトには、主に web サイトとの下位互換性、および Microsoft Edge で動作しないバイナリ拡張機能の IE11 が含まれています。 このブラウザーは、メイン ブラウザーとして構成するのではなく、オプションまたは自動切り替えブラウザーとして構成してください。 Microsoft では、メイン Web ブラウザーとして Microsoft Edge を使うことをお勧めしています。最新の Web と互換性があり、できる限り高いセキュリティが実現されているためです。

IE11 の互換性を必要とするサイト (バイナリ拡張機能やプラグインを必要とするサイトなど) では、エンタープライズ モードを有効にし、エンタープライズ モード サイト一覧を使って依存関係を持つサイトを定義します。 この構成によって、Microsoft Edge が IE11 を必要とするサイトを識別すると、自動的に IE11 に切り替わります。

ソフトウェア ベンダーが軽減策をアプリに組み込むための関数

Windows 10 で利用可能な保護のいくつかについては、アプリまたはその他のソフトウェアから呼び出すことができる関数が提供されています。 保護を活用したソフトウェアは悪用される可能性が低減します。 ソフトウェア ベンダーによるアプリケーションを利用している場合は、これらのセキュリティ指向の関数をアプリケーションに含めるように要求できます。 次の表では、いくつかの軽減策と、対応するアプリで使用可能なセキュリティ指向の関数を示します。

注意

制御フロー ガード (CFG) も、開発者がコンパイル時にソフトウェアに含めることができる、重要な軽減策です。 詳しくは、先述の「制御フロー ガード」をご覧ください。

表4アプリの軽減を構築するために開発者が利用できる関数

軽減策 関数
LoadLib イメージの読み込みの制限 UpdateProcThreadAttribute 関数
[PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_ON]
MemProt 動的なコードの制限 UpdateProcThreadAttribute 関数
[PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON]
子プロセスの制限: 子プロセスを作成する機能の制限 UpdateProcThreadAttribute 関数
[PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY]
コード整合性制限による、イメージの読み込みの制限 SetProcessMitigationPolicy 関数
[ProcessSignaturePolicy]
Win32k システム呼び出し無効の制限による、NTUser と GDI の使用の制限 SetProcessMitigationPolicy 関数
[ProcessSystemCallDisablePolicy]
高エントロピー ASLR による、最大 1 TB のメモリ割り当ての分散 UpdateProcThreadAttribute 関数
[PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_ON]
厳密なハンドル確認による、不正ハンドル参照時の例外の即時発生 UpdateProcThreadAttribute 関数
[PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_ON]
拡張ポイントの無効化による、特定のサード パーティ拡張ポイントの使用のブロック UpdateProcThreadAttribute 関数
[PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON]
破損時のヒープ終了による、破損ヒープに対するシステムの保護 UpdateProcThreadAttribute 関数
[PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_ON]

Enhanced Mitigation Experience Toolkit に関連する Windows 10 の理解

ご存知の方も多いと思いますが、Enhanced Mitigation Experience Toolkit (EMET) は 2009 年以来、さまざまな悪用の軽減策と、軽減策のための構成インターフェイスを提供してきました。 このセクションでは、EMET の軽減策と Windows 10 の軽減策の関連を理解するための説明を提供します。 EMET の軽減策の多くは、Windows 10に組み込まれています。追加の機能強化を含むものもあります。 しかし一部の EMET 軽減策では、パフォーマンス上のコストが高かったり、最近の脅威に対して相対的に効果が低いため、Windows 10 に導入されなかったものがあります。

既知のバイパスの軽減に特に効果的であると評価された軽減策を始め、EMET の軽減策とセキュリティ メカニズムの多くは、既に Windows 10 に含まれて機能強化されているため、バージョン 5.5x は EMET (Enhanced Mitigation Experience Toolkit をご覧ください) の最後のメジャー バージョン リリースとして発表されました。

次の表では、EMET の機能と Windows 10 の関連機能を示します。

Windows 10 の機能に関連する表5EMET 機能

EMET の機能 EMET の機能に対応する Windows 10 の機能
Windows 10 の機能
  • DEP

  • SEHOP

  • ASLR (Force ASLR、Bottom-up ASLR)

DEP、SEHOP、ASLR は、構成可能な機能として Windows 10 に含まれています。 先述の表 2 をご覧ください。

ProcessMitigations PowerShell モジュールをインストールすると、お使いのこれらの機能の EMET 設定を Windows 10 に適用できるポリシーに変換することができます。

  • ライブラリ読み込みチェック (LoadLib)

  • メモリ保護チェック (MemProt)

LoadLib と MemProt は、Windows 10 では、これらの機能を使用するように作成されているすべてのアプリケーションでサポートされています。 先述の表 4 をご覧ください。
  • Null ページ

この脅威への軽減策は Windows 10 に組み込まれています。詳しくは、先述の「カーネル プールの保護」の「メモリの予約」をご覧ください。
  • ヒープ スプレー

  • EAF

  • EAF+

Windows 10 では、これらの EMET の機能に具体的に対応する軽減策は含まれていません。今日の脅威の状況では影響が低いこと、また脆弱性の悪用をあまり困難にしないためです。 Microsoft は引き続き、セキュリティの環境を監視し、新しい悪用の出現に対応して、オペレーティング システムを強化するための対策の実行に努めていきます。
  • 呼び出し元チェック (Caller Check)

  • 実行フローのシミュレート (Simulate Execution Flow)

  • スタック ピボット (Stack Pivot)

  • ディープ フック (Deep Hooks) (ROP の "高度な軽減策")

  • 迂回回避 (Anti Detours) (ROP の "高度な軽減策")

  • 禁止された機能 (Banned Functions) (ROP の "高度な軽減策")

Windows 10 では、制御フロー ガードを使ってコンパイルされたアプリケーションで、軽減されます。詳しくは、先述の「制御フロー ガード」をご覧ください。

EMET の XML 設定ファイルを Windows 10 の軽減策ポリシーに変換する

EMET の利点の 1 つは、EMET の軽減策の構成設定を XML 設定ファイルとしてインポート/エクスポートして、簡単に展開できることです。 EMET の XML 設定ファイルから Windows 10 の軽減策のポリシーを生成するには、ProcessMitigations PowerShell モジュールをインストールします。 管理者特権の PowerShell セッションで、次のコマンドレットを実行します。

Install-Module -Name ProcessMitigations

Get-ProcessMitigation コマンドレットは、レジストリや実行中のプロセスから、現在の軽減策の設定を取得するか、またはすべての設定を XML ファイルに保存することができます。

notepad.exe の実行中のすべてのインスタンスで、現在の設定を取得するには:

Get-ProcessMitigation -Name notepad.exe -RunningProcess

notepad.exe のレジストリ内の現在の設定を取得するには:

Get-ProcessMitigation -Name notepad.exe

プロセス ID 1304 で実行中のプロセスの現在の設定を取得するには:

Get-ProcessMitigation -Id 1304

すべてのプロセスの軽減策の設定をレジストリから取得して、それを xml ファイル settings.xml に保存するには:

Get-ProcessMitigation -RegistryConfigFilePath settings.xml

Set-ProcessMitigation コマンドレットを使うと、プロセスの軽減策の有効化と無効化を行えます。また XML ファイルから設定を一括で行えます。

"notepad.exe" の現在のプロセスの軽減策をレジストリから取得し、MicrosoftSignedOnly を有効化して、MandatoryASLR を無効化するには:

Set-ProcessMitigation -Name Notepad.exe -Enable MicrosoftSignedOnly -Disable MandatoryASLR

XML ファイルからプロセスの軽減策を設定するには (XML ファイルは get-ProcessMitigation -RegistryConfigFilePath settings.xml によって生成できます):

Set-ProcessMitigation -PolicyFilePath settings.xml

システムの既定値を MicrosoftSignedOnly に設定するには:

Set-ProcessMitigation -System -Enable MicrosoftSignedOnly

ConvertTo-ProcessMitigationPolicy コマンドレットは、軽減策のポリシー ファイルの形式を変換します。 構文は次のとおりです。

ConvertTo-ProcessMitigationPolicy -EMETFilePath <String> -OutputFilePath <String> [<CommonParameters>]

例:

  • EMET 設定から Windows 10 設定への変換: EMET XML 設定ファイルを入力として、ConvertTo-ProcessMitigationPolicy を実行し、Windows 10 軽減策設定のための結果ファイルを生成します。 例:

    ConvertTo-ProcessMitigationPolicy -EMETFilePath policy.xml -OutputFilePath result.xml
    
  • 変換された設定 (出力ファイル) の監査と変更: 追加のコマンドレットを使うと、出力ファイルの設定の適用、列挙、有効化、無効化、保存を実行できます。 たとえば次のコマンドレットにより、メモ帳の SEHOP を有効化し、MandatoryASLR と DEPATL レジストリ設定を無効化できます。

    Set-ProcessMitigation -Name notepad.exe -Enable SEHOP -Disable MandatoryASLR,DEPATL
    
  • 攻撃表面の縮小 (ASR) の設定をコードの整合性ポリシー ファイルに変換する: 入力ファイルに EMET の攻撃表面の縮小 (ASR) の軽減策の設定が含まれている場合には、コードの整合性ポリシー ファイルも作成されます。 この場合、コードの整合性ポリシーのマージ、監視、展開のプロセスを完了できます。詳しくは、「Device Guard の展開: コード整合性ポリシーを展開する」をご覧ください。 これによって、EMET の ASR と同等の保護が Windows 10 で可能になります。

  • 証明書信頼の設定をエンタープライズ証明書のピン留めルールに変換する: EMET の "証明書信頼" XML ファイル (ピン留めルール ファイル) がある場合、ConvertTo-ProcessMitigationPolicy を使って、ピン留めルール ファイルをエンタープライズ証明書のピン留めルール ファイルに変換できます。 次にそのファイルの有効化を完了できます。詳しくは、「エンタープライズ証明書のピン留め」をご覧ください。 以下に例を示します。

    ConvertTo-ProcessMitigationPolicy -EMETfilePath certtrustrules.xml -OutputFilePath enterprisecertpinningrules.xml
    

EMET 関連製品

Microsoft コンサルティング サービス (MCS) と Microsoft サポート/プレミア フィールド エンジニアリング (PFE) では、EMET と EMET のサポートに関するさまざまなオプションや、EMET Enterprise Reporting Service (ERS) などの EMET 関連のレポート作成や監視を行う製品を提供しています。 このような製品を現在使用している企業のお客様、または同様の機能に関心を持っている企業の場合は、 Microsoft Defender Advanced Threat Protection (ATP) を評価することをお勧めします。

関連トピック