Azure での予測実行のサイドチャネルの脆弱性を軽減するためのガイダンスGuidance for mitigating speculative execution side-channel vulnerabilities in Azure

ドキュメントの最終更新日: 2018 年 8 月 14 日午前 10:00 (PST)。Last document update: 14 August 2018 10:00 AM PST.

投機的実行のサイドチャネル攻撃として知られる新たな CPU 脆弱性クラスを開示したところ、よりわかりやすい説明を求めて、お客様からさまざまな質問が寄せられています。The disclosure of a new class of CPU vulnerabilities known as speculative execution side-channel attacks has resulted in questions from customers seeking more clarity.

Microsoft は、クラウド サービス全体に軽減策を展開しました。Microsoft has deployed mitigations across all our cloud services. Azure を実行し、顧客ワークロードを互いに分離するインフラストラクチャは保護されています。The infrastructure that runs Azure and isolates customer workloads from each other is protected. つまり同じインフラストラクチャを使用する潜在的な攻撃者が、これらの脆弱性を利用してお客様のアプリケーションを攻撃することはできません。This means that a potential attacker using the same infrastructure can’t attack your application using these vulnerabilities.

Azure では、可能な限りメモリ保持メンテナンスを利用することで、お客様への影響を極力少なくし、再起動を不要にしています。Azure is using memory preserving maintenance whenever possible, to minimize customer impact and eliminate the need for reboots. システム全体に及ぶ更新をホストに対して行う際は、引き続きこうした手法を活用しながらお客様を保護してまいります。Azure will continue utilizing these methods when making systemwide updates to the host and protect our customers.

Azure にさまざまな角度から組み込まれているセキュリティについて詳しくは、「Azure のセキュリティのドキュメント」サイトをご覧ください。More information about how security is integrated into every aspect of Azure is available on the Azure Security Documentation site.

注意

このドキュメントが初めて公開されて以来、この脆弱性クラスについて同様の記事がいくつか開示されてきました。Since this document was first published, multiple variants of this vulnerability class have been disclosed. Microsoft は今後もお客様の保護とガイダンスの提供に積極的に投資していく予定です。Microsoft continues to be heavily invested in protecting our customers and providing guidance. 引き続き解決策を公開していくために、このページは随時更新されます。This page will be updated as we continue to release further fixes.

2018 年 8 月 14 日には、投機的実行に関する新たなサイドチャネルの脆弱性が業界により開示されました。この脆弱性は L1 Terminal Fault (L1TF) と呼ばれ、複数の CVE (CVE-2018-3615、CVE-2018-3620、CVE-2018-3646) が割り当てられています。On August 14, 2018, the industry disclosed a new speculative execution side channel vulnerability known as L1 Terminal Fault (L1TF) which has been assigned multiple CVEs (CVE-2018-3615, CVE-2018-3620, and CVE-2018-3646). この脆弱性が影響を及ぼすのは Intel® Core® プロセッサと Intel® Xeon® プロセッサです。This vulnerability affects Intel® Core® processors and Intel® Xeon® processors. Microsoft のクラウド サービスには、顧客間の分離性を高める軽減策が導入されています。Microsoft has deployed mitigations across our cloud services which reinforce the isolation between customers. L1TF や以前の脆弱性 (Spectre Variant 2 CVE-2017-5715 および Meltdown Variant 3 CVE-2017-5754) から保護するための詳しいガイダンスについては、以降の情報をご覧ください。Please read below for additional guidance to protect against L1TF and previous vulnerabilities (Spectre Variant 2 CVE-2017-5715 and Meltdown Variant 3 CVE-2017-5754).

オペレーティング システムを最新の状態に保つKeeping your Operating Systems up-to-date

Azure 上で実行するアプリケーションを他の Azure ユーザーから切り離すために必ずしも OS の更新は必要ありませんが、ソフトウェアは常に最新に保つことをお勧めします。While an OS update is not required to isolate your applications running on Azure from other Azure customers, it is always a best practice to keep your software up-to-date. Windows の最新のセキュリティ ロールアップには、投機的実行について、いくつかのサイドチャネルの脆弱性に対する軽減策が含まれています。The latest Security Rollups for Windows contain mitigations for several speculative execution side channel vulnerabilities. 同様に、Linux ディストリビューションからも、これらの脆弱性に対処するための更新プログラムが複数リリースされています。Similarly, Linux distributions have released multiple updates to address these vulnerabilities. オペレーティング システムを更新するうえで Microsoft が推奨している対策は以下のとおりです。Here are our recommended actions to update your Operating System:

サービスOffering 推奨される操作Recommended Action
Azure クラウド サービスAzure Cloud Services 自動更新を有効にするか、最新のゲスト OS を実行していることを確認します。Enable auto update or ensure you are running the newest Guest OS.
Azure Linux Virtual MachinesAzure Linux Virtual Machines オペレーティング システムの提供元から入手した更新プログラムをインストールします。Install updates from your operating system provider. 詳細については、このドキュメントで後述する Linux に関する情報を参照してください。For more information, see Linux later in this document.
Azure Windows Virtual MachinesAzure Windows Virtual Machines 最新のセキュリティ ロールアップをインストールします。Install the latest security rollup.
その他の Azure PaaS サービスOther Azure PaaS Services これらのサービスを使用している顧客がとる必要のある操作はありません。There is no action needed for customers using these services. Azure では、お使いの OS バージョンが自動的に最新に保たれます。Azure automatically keeps your OS versions up-to-date.

信頼できないコードを実行する場合の追加のガイダンスAdditional guidance if you are running untrusted code

信頼できないユーザーに任意のコードの実行を許可している場合、Azure Virtual Machines または Cloud Services 内に追加的なセキュリティ機能を導入したいことがあります。Customers who allow untrusted users to execute arbitrary code may wish to implement some additional security features inside their Azure Virtual Machines or Cloud Services. 投機的実行に関するいくつかの脆弱性によって説明されるプロセス間の情報漏えいベクターは、こうした機能によって保護することになります。These features protect against the intra-process disclosure vectors that several speculative execution vulnerabilities describe.

追加的なセキュリティ機能が推奨されるシナリオの例を次に示します。Example scenarios where additional security features are recommended:

  • 信頼できないコードに VM 内での実行を許可している。You allow code that you do not trust to run inside your VM.
    • "バイナリまたはスクリプトのアップロードをいずれかの顧客に許可していて、その後、そのコードを自分がアプリケーション内で実行してしまうなど"。For example, you allow one of your customers to upload a binary or script that you then execute within your application.
  • 信頼できないユーザーに、権限の低いアカウントを使って自分の VM にログインすることを許可している。You allow users that you do not trust to log into your VM using low privileged accounts.
    • "リモート デスクトップや SSH を使っていずれかの VM にログインすることを権限の低いユーザーに許可しているなど"。For example, you allow a low-privileged user to log into one of your VMs using remote desktop or SSH.
  • 入れ子になった仮想化を使って導入された仮想マシンにアクセスすることを、信頼できないユーザーに許可している。You allow untrusted users access to virtual machines implemented via nested virtualization.
    • "Hyper-V ホストを管理しているのは自分だが、その VM を信頼できないユーザーに割り当てているなど"。For example, you control the Hyper-V host, but allocate the VMs to untrusted users.

信頼できないコードに関するシナリオが該当しないのであれば、追加のセキュリティ機能を有効にする必要はありません。Customers who do not implement a scenario involving untrusted code do not need to enable these additional security features.

追加のセキュリティの有効化Enabling additional security

VM 内または Cloud Services 内で追加的なセキュリティ機能を有効にすることができます。You can enable additional security features inside your VM or Cloud Service.

WindowsWindows

そうした追加的なセキュリティ機能を有効にするためには、対象のオペレーティング システムが最新の状態にあることが必要です。Your target operating system must be up-to-date to enable these additional security features. 投機的実行のサイドチャネルに関しては、さまざまな軽減策が既定で有効になっていますが、ここで説明する追加的な機能は手動で有効にする必要があり、またパフォーマンスに影響を及ぼすことがあります。While numerous speculative execution side channel mitigations are enabled by default, the additional features described here must be enabled manually and may cause a performance impact.

手順 1: Azure サポートに連絡して、ご利用の Virtual Machines に最新のファームウェア (マイクロコード) を公開してもらいます。Step 1: Contact Azure Support to expose updated firmware (microcode) into your Virtual Machines.

手順 2: Kernel Virtual Address Shadowing (KVAS) と Branch Target Injection (BTI) OS サポートを有効にします。Step 2: Enable Kernel Virtual Address Shadowing (KVAS) and Branch Target Injection (BTI) OS support. KB4072698 の指示に従い、Session Manager のレジストリ キーで保護を有効にします。Follow the instructions in KB4072698 to enable protections via the Session Manager registry keys. 再起動が必要となります。A reboot is required.

手順 3: 入れ子になった仮想化を使ったデプロイの場合 (D3 と E3 のみ): これらの手順は、Hyper-V ホストとして使用している VM 内でのみ当てはまります。Step 3: For deployments that are using nested virtualization (D3 and E3 only): These instructions apply inside the VM you are using as a Hyper-V host.

  1. KB4072698 の指示に従い、MinVmVersionForCpuBasedMitigations のレジストリ キーで保護を有効にします。Follow the instructions in KB4072698 to enable protections via the MinVmVersionForCpuBasedMitigations registry keys.

  2. こちらの手順に従って、ハイパーバイザーのスケジューラの種類を [コア] に設定します。Set the hypervisor scheduler type to Core by following the instructions here.

手順 4: KB4072698 の手順に従い、SpeculationControl PowerShell モジュールを使って、保護が有効になっていることを確認します。Step 4: Follow the instructions in KB4072698 to verify protections are enabled using the SpeculationControl PowerShell module.

注意

このモジュールをダウンロード済みであっても、インストールするのは最新バージョンであることが必要です。If you previously downloaded this module, you will need to install the newest version.

すべての VM で次のように表示される必要があります。All VMs should show:

branch target injection mitigation is enabled: True

kernel VA shadow is enabled: True  

L1TFWindowsSupportEnabled: True

LinuxLinux

追加的なセキュリティ機能一式を内部で有効にするためには、対象のオペレーティング システムが完全に最新の状態にあることが必要です。Enabling the set of additional security features inside requires that the target operating system be fully up-to-date. 一部の軽減策については、既定で有効になります。Some mitigations will be enabled by default. 次のセクションで説明している内容は、既定でオフになっている機能や、ハードウェア サポート (マイクロコード) に依存している機能が対象となります。The following section describes the features which are off by default and/or reliant on hardware support (microcode). これらの機能を有効にすると、パフォーマンスに影響が生じることがあります。Enabling these features may cause a performance impact. 詳しい手順については、オペレーティング システムの提供元のドキュメントを参照してください。Reference your operating system provider’s documentation for further instructions

手順 1: Azure サポートに連絡して、ご利用の Virtual Machines に最新のファームウェア (マイクロコード) を公開してもらいます。Step 1: Contact Azure Support to expose updated firmware (microcode) into your Virtual Machines.

手順 2: CVE-2017-5715 (Spectre Variant 2) を軽減するために、オペレーティング システムの提供元のドキュメントに従って、Branch Target Injection (BTI) OS サポートを有効にします。Step 2: Enable Branch Target Injection (BTI) OS support to mitigate CVE-2017-5715 (Spectre Variant 2) by following your operating system provider’s documentation.

手順 3: CVE-2017-5754 (Meltdown Variant 3) を軽減するために、オペレーティング システムの提供元のドキュメントに従って、Kernel Page Table Isolation (KPTI) を有効にします。Step 3: Enable Kernel Page Table Isolation (KPTI) to mitigate CVE-2017-5754 (Meltdown Variant 3) by following your operating system provider’s documentation.

詳しい情報については、オペレーティング システムの提供元から入手してください。More information is available from your operating system’s provider:

次の手順Next steps

詳しくは、CPU の脆弱性からの Azure 顧客の保護に関する記事を参照してください。To learn more, see Securing Azure customers from CPU vulnerability.