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 or
チケットパス攻撃
Credential Guard は、仮想化ベースのセキュリティを使って、NTLM パスワード ハッシュ、Kerberos チケット保証チケットなどのシークレットを分離し、特権を持つシステム ソフトウェアのみがアクセスできるようにします。
Credential Guard は Windows 10 Enterprise および Windows Server 2016 に含まれています。

詳しくは、Credential Guard によるドメインの派生資格情報の保護」をご覧ください。
エンタープライズ証明書のピン留め
は、PKI を使った 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) は、組織のネットワークに接続しようとするデバイスが、正常な状態であり、マルウェアに侵害されていないことを確認する方法を提供します。 デバイスの実際のブート データ測定値を、予想される "正常な" ブート データと照合して、デバイスの実際のブート データの測定値を確認できます。 チェックによってデバイスが正常でないことが示されると、デバイスからネットワークへのアクセスが行われないようにします。

詳しくは、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 との互換性の問題があるため、必ず使用環境でテストを行ってください。
詳しくは、 後述の「構造化例外処理の上書き保護」をご覧ください。

グループ ポリシー設定: 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 Windows Defenderインターネットからダウンロードされたファイルの評判を確認し、危険度の高いダウンロードファイルを実行しようとしているときにユーザーに警告することができます。 ユーザーが初めてインターネットから発信されたアプリを実行すると、SmartScreen Windows Defenderデジタル署名やその他の要因を使用して、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 ウイルス対策のコンポーネントやレジストリ キーなどを改ざんしようとすることを防ぎます。 (保護されたプロセスについては、後述します)。

  • Enterpriseレベルの機能により、 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 設定 ("Force ASLR" と "Bottom-up ASLR") を制御できます。

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

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

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

表 3 メモリの悪用からの保護を行う、構成が不要な Windows 10の軽減策

軽減策と対応する脅威 説明
SYSVOL と NETLOGON 共有に関する SMB セキュリティ強化
は、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) は、オペレーティング システム内で構成を必要としない軽減策ですが、コンパイル時にソフトウェアに組み込まれます。 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 つのプールを確保します。 プロセス クォータ ポインターのエンコードなど、時間の経過と共に追加された多くの軽減策があります。lookaside、遅延無料、プール ページ 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 を有効にしてコンパイルされた信頼できる 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 の閲覧やアプリケーションに対して (特にこれらの 2 つのコンテンツの種類に対して) Windows 10 のセキュリティを維持することは、優先事項です。

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

バイナリ拡張機能とプラグインを必要とするサイトを含め、IE11 互換性を必要とするサイトの場合は、Enterprise モードを有効にし、Enterprise モードサイトリストを使用して、依存関係を持つサイトを定義します。 この構成によって、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 以降、さまざまな悪用軽減策が提供されている拡張軽減策エクスペリエンス Toolkit (EMET) と、それらの軽減策を構成するためのインターフェイスについて既に理解している可能性があります。 このセクションを使用すると、EMET 軽減策がWindows 10のこれらの軽減策とどのように関連しているかを理解できます。 EMET の軽減策の多くは、Windows 10に組み込まれています。一部は改善されています。 ただし、一部の EMET 軽減策は、高パフォーマンスのコストを伴うか、または現代の脅威に対して比較的効果がないように見えるので、Windows 10に持ち込まれていません。

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

次の表では、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 "証明書信頼" 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を評価することをお勧めします。

    関連トピック