CPU脆弱性 Spectre & Meltdown はどうなったのか?

PC
この記事は約12分で読めます。

2018年初頭に明らかになりIT業界を震わせたこの2つの脆弱性は、現代CPUのアーキテクチャに関わる深い問題だったため、ソフトウェアバグのように単純にパッチを当てて対策完了とはいかない根の深い問題でした。それから3年、世間を騒がせたCPU脆弱性はどのような状態になっているのでしょうか?ここ3年の家庭用PCを対象に見ていきたいと思います。

Spectre & Meltdown 脆弱性の影響

この脆弱性は家庭用PCには余り影響がないので、ご家庭のPCが脆弱性の対象でも問題になることは少ないです。一番影響があったはクラウドサービスを提供するサーバー事業者です。クラウドサービスでは同じCPU上で異なる顧客のプログラムが同居します。しかし、提供のサービスが仮想マシンであれば仮想マシン(OS)による分離があり、絶対に他の顧客のプログラム空間のメモリは参照できないというのが通説でした。それが、このCPU脆弱性を悪用すると参照できてしまうということが分かり大問題となったのです。私自身この脆弱性のすべてを把握しているわけではないので間違いがないかと言われると自信がないのですが、大方この理解であっていると思います。

問題発覚後、Spectre & Meltdown の脆弱性を防ごうとして出てきた対処は当初、パフォーマンス低下が激しいものでした。その後CPU、ファームウェア、OSによる対処の方法が色々出てきて改善されていき、パフォーマンス低下があまりない対処の方法に収束していったと思われます。ただし、私のような素人がちょっと検索しただけでは対処の全貌を知ることは難しいです。なぜなら対処はCPU、ファームウェア、OSによる対処を組み合わせており、また時を重ねるごとにその内容がアップデートされているからです。

家庭用のPCの状況は?

私が確認できたここ3年ぐらいのマシンで脆弱性状態がどのようになっているか纏めます。対象マシンは第7、第8、第9、第10世代 Intel Coreプロセッサです。これらはSkylakeコアですので、コア数と周波数の違いこそあれ基本的には同じものなのですが、第9世代あたりから脆弱性対応が入っているという話です。マザーボードのBIOSの対応具合、すなわちマザーボードメーカーやリビジョンによっても変わってくるかと思いますが、一つの目安にはなると思います。なお執筆時点で最新のBIOSにしてあります。

脆弱性情報は以下のコマンドを実行して取得しました。

grep . /sys/devices/system/cpu/vulnerabilities/*

itlb_multihit, l1tf, mds, meltdown, spec_store_bypass, spectre_v1, spectre_v2, srbds, tsx_async_abort の9つの脆弱性情報が取得できます。

CPUチップセット影響のない脆弱性数対処された脆弱性数残っている脆弱性数残っている脆弱性
Core i7 10700H470540
Core i9 9900B365360
Core i7 8700Z370090
Core i5 7400H270162mds, srbds
Core i3 7300TH270153mds, spec_store_bypass, srbds
おまけ
Ryzen7 1700
B450630
おまけ
EPYC 7571
621spec_store_bypass
おまけARMv8720

Core i5 7400と Core i3 7300T は同じ世代で同じチップセットですが、マザーボード及びメーカーも違いますので、マザーボード(ファームウェア)が異なれば脆弱性への対応具合も違うということが分かります。

Core i9 9900 と Core i7 10700 を比べると後者のほうが影響のない脆弱性数が多く対処が進んだ印象を与えますが、第10世代 CoreプロセッサはTSX命令を無効化して出荷しており、これにより影響のない脆弱性数が増えています。第9世代についてはファームウェアで無効にされていますので、第9世代だからTSXが使えるわけではないようです。

# Core i7 10700
$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: Split huge pages
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl and seccomp
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Enhanced IBRS, IBPB: conditional, RSB filling
/sys/devices/system/cpu/vulnerabilities/srbds:Not affected
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
# Core i9 9900
$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: Split huge pages
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl and seccomp
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Enhanced IBRS, IBPB: conditional, RSB filling
/sys/devices/system/cpu/vulnerabilities/srbds:Mitigation: TSX disabled
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Mitigation: TSX disabled
# Core i7 8700
$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: Split huge pages
/sys/devices/system/cpu/vulnerabilities/l1tf:Mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable
/sys/devices/system/cpu/vulnerabilities/mds:Mitigation: Clear CPU buffers; SMT vulnerable
/sys/devices/system/cpu/vulnerabilities/meltdown:Mitigation: PTI
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl and seccomp
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling
/sys/devices/system/cpu/vulnerabilities/srbds:Mitigation: Microcode
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Mitigation: Clear CPU buffers; SMT vulnerable
# Core i5 7400
$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: Split huge pages
/sys/devices/system/cpu/vulnerabilities/l1tf:Mitigation: PTE Inversion; VMX: conditional cache flushes, SMT disabled
/sys/devices/system/cpu/vulnerabilities/mds:Vulnerable: Clear CPU buffers attempted, no microcode; SMT disabled
/sys/devices/system/cpu/vulnerabilities/meltdown:Mitigation: PTI
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl and seccomp
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: disabled, RSB filling
/sys/devices/system/cpu/vulnerabilities/srbds:Vulnerable: No microcode
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
# Core i3 7300T
$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: Split huge pages
/sys/devices/system/cpu/vulnerabilities/l1tf:Mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable
/sys/devices/system/cpu/vulnerabilities/mds:Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
/sys/devices/system/cpu/vulnerabilities/meltdown:Mitigation: PTI
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Vulnerable
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling
/sys/devices/system/cpu/vulnerabilities/srbds:Vulnerable: No microcode
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
# Ryzen 7 1700
$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:Not affected
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl and seccomp
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Full AMD retpoline, IBPB: conditional, STIBP: disabled, RSB filling
/sys/devices/system/cpu/vulnerabilities/srbds:Not affected
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
スポンサーリンク
PC
ヤマカワをフォローする
タイトルとURLをコピーしました