web-dev-qa-db-ja.com

CPUの脆弱性を完全に軽減するために(ハイパースレッディングを無効にすることにより)CPUパフォーマンスの30%を犠牲にしますか?

私は spectre-meltdown-checker 、バージョン0.42を使用しましたが、オプションなしでall-green結果。しかし、ヘルプページで--paranoidスイッチを見つけたため、その後のCVEの約半分が赤になりました。私はそれが私に言ったことを読んだ、完全な緩和のために私はハイパースレッディングを無効にしなければならないだろう、それは私を少し怖がらせたので、私はもっとうまくやったそのため、残り1つのレッドフラグになります(CVE-2018-3646 = L1D無条件フラッシュを有効にして、脆弱性を完全に軽減する必要があります)。

私はプライマリOSとしてLinux Mint 19.2を使用しており、Windows 10 Pro 1903で実際に測定可能な時間を費やしていませんが、Windowsのベンチマークよりも優れたベンチマークがわかりません。ハイパースレッディングがなければ、パフォーマンスが約20〜30%カットされたように見えます(それほど重要ではないことはわかっていましたが、続行しました)。私は明らかにパフォーマンスが高い方がいいので、なぜハイパースレッディングがそのようなセキュリティホールになったのか理解できません。とにかく、私はあなたのために別のそしてうまくいけばまっすぐな質問があります。


ノートパソコン:最新のBIOSを搭載したDell Inspiron 15(1.8.0、 詳細はリンク )。

プロセッサー:Intel©Core™i7-7700HQ( Intel Ark へのリンク)。

Linuxカーネル:4.15.0-65-generic;完全uname -a

Linux Dell-7577 4.15.0-65-generic #74-Ubuntu SMP Tue Sep 17 17:06:04 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

完全を期すため、--paranoidスイッチのヘルプから情報を追加します。

--paranoid      require IBPB to deem Variant 2 as mitigated
                also require SMT disabled + unconditional L1D flush to deem Foreshadow-NG VMM as mitigated
                also require SMT disabled to deem MDS vulnerabilities mitigated

実際の質問

カーネルの別のバージョンへのアップグレード、新しいBIOSの待機など、これらの脆弱性から他の方法はありますか、またはこの結果は、BIOSアップデートまたはOSカーネルまたはそのようなもので修正できないという意味で最終的なものですか?


ハイパースレッディングを有効にすると、これは次のようになります:

Spectre and Meltdown mitigation detection tool v0.42

Checking for vulnerabilities on current system
Kernel is Linux 4.15.0-65-generic #74-Ubuntu SMP Tue Sep 17 17:06:04 UTC 2019 x86_64
CPU is Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz

Hardware check
* Hardware support (CPU microcode) for mitigation techniques
  * Indirect Branch Restricted Speculation (IBRS)
    * SPEC_CTRL MSR is available:  YES 
    * CPU indicates IBRS capability:  YES  (SPEC_CTRL feature bit)
  * Indirect Branch Prediction Barrier (IBPB)
    * PRED_CMD MSR is available:  YES 
    * CPU indicates IBPB capability:  YES  (SPEC_CTRL feature bit)
  * Single Thread Indirect Branch Predictors (STIBP)
    * SPEC_CTRL MSR is available:  YES 
    * CPU indicates STIBP capability:  YES  (Intel STIBP feature bit)
  * Speculative Store Bypass Disable (SSBD)
    * CPU indicates SSBD capability:  YES  (Intel SSBD)
  * L1 data cache invalidation
    * FLUSH_CMD MSR is available:  YES 
    * CPU indicates L1D flush capability:  YES  (L1D flush feature bit)
  * Microarchitecture Data Sampling
    * VERW instruction is available:  YES  (MD_CLEAR feature bit)
  * Enhanced IBRS (IBRS_ALL)
    * CPU indicates Arch_CAPABILITIES MSR availability:  NO 
    * Arch_CAPABILITIES MSR advertises IBRS_ALL capability:  NO 
  * CPU explicitly indicates not being vulnerable to Meltdown/L1TF (RDCL_NO):  NO 
  * CPU explicitly indicates not being vulnerable to Variant 4 (SSB_NO):  NO 
  * CPU/Hypervisor indicates L1D flushing is not necessary on this system:  NO 
  * Hypervisor indicates Host CPU might be vulnerable to RSB underflow (RSBA):  NO 
  * CPU explicitly indicates not being vulnerable to Microarchitectural Data Sampling (MDS_NO):  NO 
  * CPU supports Software Guard Extensions (SGX):  YES 
  * CPU microcode is known to cause stability problems:  NO  (model 0x9e family 0x6 stepping 0x9 ucode 0xb4 cpuid 0x906e9)
  * CPU microcode is the latest known available version:  YES  (latest version is 0xb4 dated 2019/04/01 according to builtin MCExtractor DB v111 - 2019/05/18)
* CPU vulnerability to the speculative execution attack variants
  * Vulnerable to CVE-2017-5753 (Spectre Variant 1, bounds check bypass):  YES 
  * Vulnerable to CVE-2017-5715 (Spectre Variant 2, branch target injection):  YES 
  * Vulnerable to CVE-2017-5754 (Variant 3, Meltdown, rogue data cache load):  YES 
  * Vulnerable to CVE-2018-3640 (Variant 3a, rogue system register read):  YES 
  * Vulnerable to CVE-2018-3639 (Variant 4, speculative store bypass):  YES 
  * Vulnerable to CVE-2018-3615 (Foreshadow (SGX), L1 terminal fault):  YES 
  * Vulnerable to CVE-2018-3620 (Foreshadow-NG (OS), L1 terminal fault):  YES 
  * Vulnerable to CVE-2018-3646 (Foreshadow-NG (VMM), L1 terminal fault):  YES 
  * Vulnerable to CVE-2018-12126 (Fallout, microarchitectural store buffer data sampling (MSBDS)):  YES 
  * Vulnerable to CVE-2018-12130 (ZombieLoad, microarchitectural fill buffer data sampling (MFBDS)):  YES 
  * Vulnerable to CVE-2018-12127 (RIDL, microarchitectural load port data sampling (MLPDS)):  YES 
  * Vulnerable to CVE-2019-11091 (RIDL, microarchitectural data sampling uncacheable memory (MDSUM)):  YES 

CVE-2017-5753 aka 'Spectre Variant 1, bounds check bypass'
* Mitigated according to the /sys interface:  YES  (Mitigation: usercopy/swapgs barriers and __user pointer sanitization)
* Kernel has array_index_mask_nospec:  YES  (1 occurrence(s) found of x86 64 bits array_index_mask_nospec())
* Kernel has the Red Hat/Ubuntu patch:  NO 
* Kernel has mask_nospec64 (arm64):  NO 
> STATUS:  NOT VULNERABLE  (Mitigation: usercopy/swapgs barriers and __user pointer sanitization)

CVE-2017-5715 aka 'Spectre Variant 2, branch target injection'
* Mitigated according to the /sys interface:  YES  (Mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling)
* Mitigation 1
  * Kernel is compiled with IBRS support:  YES 
    * IBRS enabled and active:  YES  (for firmware code only)
  * Kernel is compiled with IBPB support:  YES 
    * IBPB enabled and active:  YES 
* Mitigation 2
  * Kernel has branch predictor hardening (arm):  NO 
  * Kernel compiled with retpoline option:  YES 
    * Kernel compiled with a retpoline-aware compiler:  YES  (kernel reports full retpoline compilation)
  * Kernel supports RSB filling:  YES 
> STATUS:  NOT VULNERABLE  (Full retpoline + IBPB are mitigating the vulnerability)

CVE-2017-5754 aka 'Variant 3, Meltdown, rogue data cache load'
* Mitigated according to the /sys interface:  YES  (Mitigation: PTI)
* Kernel supports Page Table Isolation (PTI):  YES 
  * PTI enabled and active:  YES 
  * Reduced performance impact of PTI:  YES  (CPU supports INVPCID, performance impact of PTI will be greatly reduced)
* Running as a Xen PV DomU:  NO 
> STATUS:  NOT VULNERABLE  (Mitigation: PTI)

CVE-2018-3640 aka 'Variant 3a, rogue system register read'
* CPU microcode mitigates the vulnerability:  YES 
> STATUS:  NOT VULNERABLE  (your CPU microcode mitigates the vulnerability)

CVE-2018-3639 aka 'Variant 4, speculative store bypass'
* Mitigated according to the /sys interface:  YES  (Mitigation: Speculative Store Bypass disabled via prctl and seccomp)
* Kernel supports disabling speculative store bypass (SSB):  YES  (found in /proc/self/status)
* SSB mitigation is enabled and active:  YES  (per-thread through prctl)
* SSB mitigation currently active for selected processes:  YES  (ModemManager systemd-journald systemd-localed systemd-logind systemd-resolved systemd-timesyncd systemd-udevd vnstatd)
> STATUS:  NOT VULNERABLE  (Mitigation: Speculative Store Bypass disabled via prctl and seccomp)

CVE-2018-3615 aka 'Foreshadow (SGX), L1 terminal fault'
* CPU microcode mitigates the vulnerability:  YES 
> STATUS:  NOT VULNERABLE  (your CPU microcode mitigates the vulnerability)

CVE-2018-3620 aka 'Foreshadow-NG (OS), L1 terminal fault'
* Mitigated according to the /sys interface:  YES  (Mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable)
* Kernel supports PTE inversion:  YES  (found in kernel image)
* PTE inversion enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (Mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable)

CVE-2018-3646 aka 'Foreshadow-NG (VMM), L1 terminal fault'
* Information from the /sys interface: Mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable
* This system is a Host running a hypervisor:  YES  (paranoid mode)
* Mitigation 1 (KVM)
  * EPT is disabled:  NO 
* Mitigation 2
  * L1D flush is supported by kernel:  YES  (found flush_l1d in /proc/cpuinfo)
  * L1D flush enabled:  YES  (conditional flushes)
  * Hardware-backed L1D flush supported:  YES  (performance impact of the mitigation will be greatly reduced)
  * Hyper-Threading (SMT) is enabled:  YES 
> STATUS:  VULNERABLE  (enable L1D unconditional flushing and disable Hyper-Threading to fully mitigate the vulnerability)

CVE-2018-12126 aka 'Fallout, microarchitectural store buffer data sampling (MSBDS)'
* Mitigated according to the /sys interface:  YES  (Mitigation: Clear CPU buffers; SMT vulnerable)
* Kernel supports using MD_CLEAR mitigation:  YES  (md_clear found in /proc/cpuinfo)
* Kernel mitigation is enabled and active:  YES 
* SMT is either mitigated or disabled:  NO 
> STATUS:  VULNERABLE  (Your kernel and microcode partially mitigate the vulnerability, but you must disable SMT (Hyper-Threading) for a complete mitigation)

CVE-2018-12130 aka 'ZombieLoad, microarchitectural fill buffer data sampling (MFBDS)'
* Mitigated according to the /sys interface:  YES  (Mitigation: Clear CPU buffers; SMT vulnerable)
* Kernel supports using MD_CLEAR mitigation:  YES  (md_clear found in /proc/cpuinfo)
* Kernel mitigation is enabled and active:  YES 
* SMT is either mitigated or disabled:  NO 
> STATUS:  VULNERABLE  (Your kernel and microcode partially mitigate the vulnerability, but you must disable SMT (Hyper-Threading) for a complete mitigation)

CVE-2018-12127 aka 'RIDL, microarchitectural load port data sampling (MLPDS)'
* Mitigated according to the /sys interface:  YES  (Mitigation: Clear CPU buffers; SMT vulnerable)
* Kernel supports using MD_CLEAR mitigation:  YES  (md_clear found in /proc/cpuinfo)
* Kernel mitigation is enabled and active:  YES 
* SMT is either mitigated or disabled:  NO 
> STATUS:  VULNERABLE  (Your kernel and microcode partially mitigate the vulnerability, but you must disable SMT (Hyper-Threading) for a complete mitigation)

CVE-2019-11091 aka 'RIDL, microarchitectural data sampling uncacheable memory (MDSUM)'
* Mitigated according to the /sys interface:  YES  (Mitigation: Clear CPU buffers; SMT vulnerable)
* Kernel supports using MD_CLEAR mitigation:  YES  (md_clear found in /proc/cpuinfo)
* Kernel mitigation is enabled and active:  YES 
* SMT is either mitigated or disabled:  NO 
> STATUS:  VULNERABLE  (Your kernel and microcode partially mitigate the vulnerability, but you must disable SMT (Hyper-Threading) for a complete mitigation)

> SUMMARY: CVE-2017-5753:OK CVE-2017-5715:OK CVE-2017-5754:OK CVE-2018-3640:OK CVE-2018-3639:OK CVE-2018-3615:OK CVE-2018-3620:OK CVE-2018-3646:KO CVE-2018-12126:KO CVE-2018-12130:KO CVE-2018-12127:KO CVE-2019-11091:KO

UHDの画像は拡大できます:

spectre--hyper-threading

2

短い答えは次のとおりです:はい、ただし、それ安全である必要がある場合のみ

サイドチャネルの脆弱性は、ソフトウェアがアクセスできない場所に存在するデータを、直接読み取るか推論することによって判別できるさまざまな方法です。 これを防ぐためのさまざまなアプローチがありますが、バリアの性質はシステムのセキュリティ設計と攻撃の方法によって決まります。

最も一般的なのは、低レベルのソフトウェア(ファームウェア、カーネル)がスレッド/アプリケーションによる危険な命令ストリームの送信を禁止するアプローチです。それ以外の場合は、実行環境を微調整してこれらのストリームを無害にします。これはパフォーマンスに影響を与えることが多く、セキュリティの改善は通常コストに見合う価値があります。 ただし、パフォーマンスに影響がない場合は、これらの緩和策を無効にすることができます---パフォーマンスの向上とセキュリティの低下は常にオプションです

たとえば、メルトダウン保護は、ユーザーがアクセス可能なメモリにカーネルデータが存在する場合は保護できないことを認識するため、機密性の高いメモリページをユーザーコンテキストから完全に保護します。パフォーマンスは低下しますが、軽減はソフトウェアで完全に可能です。 Intelが後でハードウェアの問題を修正する場合、KPTIを無効にすることができます。

より侵入的な方法は、最初に脆弱性を引き起こすCPU機能を無効にすることです。 ある意味で、これが最初のオプションであることは幸運です---多くのCPU機能はまったく構成できません。各コアが同時に実行するスレッドの数を選択できますが、ディスパッチポートの数やレジスタの名前を変更することはできません。

一部のSpectreバリアントでは、Intel CPUに実行可能なソフトウェアバリアはありません。ハイパースレッディングを無効にすると、現在のCPUのリスクがなくなります。一方、インテルは現在の攻撃に対して脆弱ではない新しいCPUを設計しています。

これらの脆弱性に対する完全なマイクロコード、BIOS、またはカーネル緩和策を開発することは不可能であるようです---業界の最高の考えでは、それは実現不可能であると判断しました。これにより、その攻撃方法から保護したい場合は、機能を無効にする必要があります。私は確かにより良い解決策を開発する専門知識を持っていません。

また、仮想環境の場合、ハイパーバイザーはリスクもある程度軽減する可能性があることに注意してください(例:VMwareのSCAv2 CPUスケジューラー)。ホストにSCAv2または同等の保護機能がある場合、他のVMによる悪用の危険を冒すことなくハイパースレッディングを有効にしたままにすることができます---その同じVMで実行されているプロセスのみが脅威となります。

これは基本的にリスク許容の問題です:これらの脆弱性が悪用される可能性がある方法を考えると(やや難しい;ほとんどの場合ローカルアクセスが必要)、30%のパフォーマンス損失の価値がありますか?

見知らぬ人がCPUを共有している可能性があるクラウド環境では、アプリケーションのホワイトリストを適用するローカル管理の環境よりもリスクが大きくなります。

セキュリティはスペクトルであり、データの価値、環境、パフォーマンス要件、財務上の考慮事項など、関連するすべての要素を考慮してバランスを取る必要があります。

4
DoubleD