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 のセキュリティ防御の一部としてのデバイス保護と脅威への対抗

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

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

今日のこれらの状況を踏まえ、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 攻撃によって、攻撃者がアクセスを取得しないようにします
アクセス権の取得から
Pass-the-Hash または
Pass-the-Ticket 攻撃
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 には、仮想化ベースのセキュリティ (VBS) を使用して Windows のカーネル モード コード整合性検証プロセスを保護する、ハイパーバイザーで保護されたコード整合性 (HVCI) と呼ばれる強力なシステム軽減策も含まれています。 HVCI には特定のハードウェア要件があり、コード整合性ポリシーと共に動作して、攻撃者がカーネルへのアクセスを取得した場合でも、攻撃を防止します。
Device Guard は Windows 10 Enterprise および Windows Server 2016 に含まれています。

詳しくは、Device Guard の概要」をご覧ください。
Microsoft Defenderウイルス対策,
は、デバイスをウイルスやその他のマルウェアから防ぎます
ウイルスやその他のウイルスを含まない
マルウェア
Windows 10には、Microsoft Defenderウイルス対策、堅牢な受信トレイマルウェア対策ソリューションが含まれています。 Microsoft Defenderウイルス対策は、Windows 8で導入されて以来、大幅に改善されました。

詳細: ウイルス対策Microsoft 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 プロフェッショナルは、アプリケーション開発者やソフトウェア ベンダーに、Control Flow Guard (CFG) と呼ばれる追加の保護を含むアプリケーションを提供するように依頼できます。 オペレーティング システムの構成は必要ありません。保護は、アプリケーションにコンパイルされています。 詳しくは、「制御フロー ガード」をご覧ください。

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

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

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

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

グループ ポリシー設定: ASLR は 64 ビット アプリケーションでは既定でオンになっていますが、「プロセス軽減オプションのオーバーライド」で説明されているグループ ポリシー設定を使用して、より多くの ASLR 保護を構成して、アプリ関連のセキュリティ ポリシーを適用できます。

Windows Defender SmartScreen

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

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

詳細については、「Microsoft Defender SmartScreen の概要」を参照してください。

Microsoft Defender ウイルス対策

Windows 10のMicrosoft Defenderウイルス対策では、マルチプロンジド アプローチを使用してマルウェア対策を改善します。

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

  • リッチなローカル コンテキストは、マルウェアを識別する方法を強化します。 Windows 10は、ファイルやプロセスなどのコンテンツだけでなく、コンテンツがどこから来たのか、どこに保存されているかなどについて、Microsoft Defenderウイルス対策に通知します。 ソースと履歴に関する情報を使用すると、Microsoft Defenderウイルス対策を使用して、さまざまなレベルの調査をさまざまなコンテンツに適用できます。

  • 広範なグローバル センサーは、ウイルス対策Microsoft Defender最新のマルウェアを認識するのに役立ちます。 この最新の状態は、エンドポイントから豊富なローカル コンテキスト データを収集し、そのデータを一元的に分析することで、2 つの方法で実現されます。

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

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

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

企業がネットワークに対する高度な攻撃や標的型攻撃を検出、調査、対応するのに役立つサービスであるMicrosoft Defender for Endpointについては、Microsoft Defender for Endpoint (リソース) とMicrosoft Defender for Endpoint (ドキュメント)。

データ実行防止

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

データ実行防止 (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 をシステム全体にわたって適用し、Windows の以前のバージョンと比較して、エントロピー レベルを数倍も向上させ、ヒープ スプレーなどの高度な攻撃に対抗しています。 64 ビット システムとアプリケーションのプロセスでは、はるかに大きいメモリ空間を活用できるため、Windows 10 が重要なデータを格納している場所をマルウェアが推測するのは、さらに困難となります。 TPM を搭載したシステムで使うと、ASLR メモリ ランダム化のデバイス間での一意性はさらに高まるため、あるシステムで機能している悪用の成功が別のシステムで確実に機能することはより困難になります。

「プロセス軽減オプションのオーバーライド」で説明されているように 、プロセス軽減オプションと呼ばれるグループ ポリシー設定を使用して、ASLR 設定 ("ASLR の強制" と "ボトムアップ ASLR" ) を制御できます。これは、アプリ関連のセキュリティ ポリシーを適用するのに役立ちます

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

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

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

表 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 には、カーネルが使用するプール メモリの保護が含まれています。 たとえば、安全なリンク解除は、攻撃の作成に使われるリンク解除操作と同時に発生する、プール オーバーランからの保護を行います。

詳しくは、 後述の「カーネル プールの保護」をご覧ください。
制御フロー ガード
は、メモリ内のコードの位置間のフローに基づく悪用を軽減します
に基づいて
コードの場所間のフロー
メモリ内
Control Flow Guard (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 などの) 相互認証を必要とします。 この要件により、中間者攻撃の可能性が減少します。 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 アプリは、特権と機能が限定された AppContainer サンドボックス内で実行されます。 たとえば、ユニバーサル Windows アプリは、システム レベルのアクセスを持っておらず、他のアプリとのやり取りが厳しく制御されるため、ユーザーがアプリケーションのアクセス許可を明示的に付与しない限りデータにアクセスできません。

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

Windows のヒープの保護

ヒープ は、Windows が動的なアプリケーション データの格納に使うメモリ内の場所です。 Windows 10 では、攻撃の一部として使われるヒープの悪用のリスクを軽減することにより、以前の Windows のヒープ設計の強化が続けられています。

Windows 10 のヒープのセキュリティは、いくつかの重要な強化が行われています。

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

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

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

カーネル プールの保護

Windows のオペレーティング システム カーネルは、物理メモリ ("非ページ プール") に残る 2 つのメモリ プールと、物理メモリ ("ページ プール") のページングが可能な 2 つのプールを確保します。 プロセス クォータ ポインターのエンコードなど、時間の経過と伴って追加された多くの軽減策があります。ルックアサイド、遅延フリー、およびプール ページ Cookie。および PoolIndex 境界チェック。 Windows 10では、整合性チェックなど、より高度な攻撃からカーネル プールを保護するのに役立つ複数の "プールの強化" 保護が追加されます。

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

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

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

  • NT 仮想 DOS コンピューター (NTVDM) の無効化: 以前の NTVDM カーネル モジュール (16 ビット アプリケーション実行用) は既定で無効化されているため、関連する脆弱性を無効化できます。 (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 を利用できます。 CFG を有効にしてコンパイルされた信頼できる Windows アプリケーションを提供するよう、アプリケーション開発者とソフトウェア ベンダーに依頼することを検討してください。 たとえば、C や C++ で記述されたアプリケーション、または Visual Studio 2015 を使ってコンパイルされたアプリケーションで、CFG を有効にすることができます。 Visual Studio 2015 プロジェクトでの CFG の有効化について、詳しくは、「制御フロー ガード」をご覧ください。

ブラウザーは攻撃の重要なエントリ ポイントであるため、Microsoft Edge、IE、およびその他の Windows 機能は CFG を最大限に活用します。

Microsoft Edge と Internet Explorer 11

ブラウザーセキュリティはセキュリティ戦略の重要な要素であり、正当な理由から、ブラウザーはインターネットへのユーザーのインターフェイスであり、多くの悪意のあるサイトとコンテンツが攻撃を待機している環境です。 ほとんどのユーザーは、ブラウザーなしでジョブの少なくとも一部を実行することはできません。多くのユーザーは 1 つに依存しています。 この現実のため、ブラウザーは悪意のあるハッカーが攻撃を開始する一般的な経路となっています。

すべてのブラウザーでは、ブラウザーの元の範囲を超えた操作を行うことができるように、ある程度の機能拡張が可能です。 2 つの一般的な例として、それぞれのアプリケーションをブラウザー内で実行できるようにする Flash 拡張機能と Java 拡張機能があります。 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 で実行されます。 Windows 10 の IE11 も、拡張保護モードを通じて同じ AppContainer テクノロジを利用できます。 ただし、IE11 は ActiveX と BHO を実行することができるため、ブラウザーとサンドボックスは Microsoft Edge よりかなり多くの攻撃を受けやすくなります。

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

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

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

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

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

注意

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

表4 開発者がアプリに軽減策を組み込むために利用可能な関数

軽減策 関数
MemProt 動的なコードの制限 UpdateProcThreadAttribute 関数
[PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON]
LoadLib イメージの読み込みの制限 UpdateProcThreadAttribute 関数
[PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_ON]
子プロセスの制限: 子プロセスを作成する機能の制限 UpdateProcThreadAttribute 関数
[PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY]
コード整合性制限による、イメージの読み込みの制限 SetProcessMitigationPolicy 関数
[ProcessSignaturePolicy]
Win32k システム呼び出し無効の制限による、NTUser と GDI の使用の制限 SetProcessMitigationPolicy 関数
[ProcessSystemCallDisablePolicy]
メモリ割り当てで最大 1 TB の分散を実現する高エントロピ ASLR 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 の理解

2009 年からさまざまな悪用の軽減策と、それらの軽減策を構成するためのインターフェイスを提供してきた 拡張軽減エクスペリエンス ツールキット (EMET) に既に精通している可能性があります。 このセクションを使用して、EMET 軽減策がWindows 10の軽減策とどのように関連しているかを理解できます。 EMET の軽減策の多くは、Windows 10に組み込まれており、一部には追加の機能強化が加えられているものもあります。 ただし、一部の EMET 軽減策では、高パフォーマンス のコストがかかる場合や、最新の脅威に対して比較的効果がないと思われるため、Windows 10に導入されていません。

EMET の軽減とセキュリティメカニズムの多くは既にWindows 10に存在し、改善されているため、特に既知のバイパスを軽減する際に高い効果があると評価されたものは、バージョン 5.5x が EMET の最終メジャー バージョン リリースとして発表されました (「拡張軽減エクスペリエンス ツールキット」を参照)。

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

表5 EMET の機能と Windows 10 の関連機能

EMET の機能 これらの EMET フィーチャが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)
  • ディープ フック (ROP "高度な軽減策")
  • 迂回防止 (ROP "高度な軽減策")
  • 禁止関数 (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) 軽減策の設定が含まれている場合、コンバーターはコード整合性ポリシー ファイルも作成します。 この場合は、コード整合性ポリシーのマージ、監査、デプロイプロセスを完了できます。 詳細については、「Windows Defender アプリケーション制御 (WDAC) ポリシーの展開」を参照してください。 この完了により、EMET の ASR 保護と同等のWindows 10の保護が有効になります。

    • 証明書信頼設定をエンタープライズ証明書ピン留めルールに変換する: EMET "Certificate Trust" 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 for Endpointを評価することをお勧めします。

    関連トピック