ニュース
CPU“脆弱性問題”の現状と対策
~セキュリティは? パフォーマンスは? ユーザーへの影響を確認する
2018年3月30日 13:42
気になるあの話題はどうなの? 最新パーツの実力は? このパーツはどう使いこなせばいい? そんなPC自作の最前線を総ざらい!!
DOS/V POWER REPORT2018年5月号(3月29日発売)では、「PC自作最新事情」と題して、PC自作界隈で最近話題になっている話題、最新の製品情報、そしてPCパーツの運用ノウハウの常識&ディープゾーンを大ボリュームでお届けします。年始以降たびたび話題に上り影響も懸念されるCPUの脆弱性問題、Optane SSDなど新顔も続々登場のSSDの最新ベンチマーク、さらには7GHzに達するという究極オーバークロックの最新動向など、すぐに役立つ情報からなかなかお目に掛かれない極地まで、幅広く紹介していきます。
本稿では、この特集に掲載した「CPU“脆弱性問題”の現状と対策」の内容の一部を抜粋して掲載します。さらに詳しいベンチマークテストの結果や、特集の全貌はぜひ本誌を購入してお楽しみください。
著者:(前段解説)DOS/V POWER REPORT編集部、(記事本編)鈴木雅暢
CPUの高速化手法を悪用しキャッシュから盗む手法
冬以降問題になっている脆弱性は「Spectre」、「Meltdown」と呼ばれるもので2系統3種類に分類される。いずれもCPUが採用している高速化の仕組を悪用したものだ。
近年のCPUは、ベルトコンベアの流れ作業のように、命令実行のステージを細分化して次々に処理していく「パイプライン」を複数持つ。この構造では、それぞれ命令の実行完了を待たずに、次々と命令を実行パイプラインへと送り込んでいく。この際、命令は順番どおりにだけ処理されるわけではなく、依存関係などを判断して実行可能なものを先に進めたり、実行履歴などから分岐先を予測し、計算結果を待たずに条件分岐先の命令を先行して実行したりする。もし先行・分岐の予測が間違っていた場合は、命令の結果を外に出す前に、一連の命令をキャンセルして「実行しなかったことにする」のである。
SpectreやMeltdownは、こうした仕組を悪用したものだ。命令が破棄される前提で故意に不正な命令を実行させ、本来保護されているはずのデータをCPUのキャッシュメモリを介してを盗むという手口だ。
- 呼称の由来
投機的実行(Spec-ulative Execution)を原因とする幽霊(Spectre)から - 影響
悪用はきわめて困難ながら、クライアントPCに対してもJava Scriptを利用しての攻撃により、パスワードの盗難などが可能 - 影響を受けるCPU
理論上は投機実行を利用する、近年のほとんどのCPUが該当。AMDはVariant 2の影響はきわめて少ないとしている - 対策
OSのパッチ適用、アプリケーションの更新、CPUマイクロコードの更新(Variant 2)で緩和が可能
- 呼称の由来
セキュリティ境界を溶かしてしまうことから - 影響
仮想環境のクラウドサーバー、レンタルサーバーなどで深刻な問題。本来保護されているメモリの内容を別の仮想マシンから取得することが可能。パッチ未適用のOSで悪用されるとパスワードなど重要データが見られ放題となる - 影響を受けるCPU
主にIntelの近年のCPU。ARMは変形例含めいくつかのARMコアで影響を確認している。AMDは影響を受けないとしている - 対策
OSのパッチ適用で対処可能
影響としてはとくにMeltdownは深刻で、クラウドサーバーなどの仮想化環境で重要な情報が筒抜けになる恐れがある。Spectreについては、実際に悪用するのは難しいというが、対象範囲が幅広いことと、ソフトウェアレベルの対応では攻撃の可能性をゼロにすることができないことが課題となっている。
ユーザーがすべき対策としては、まずOSのパッチを当てることだ。Windows 10では、1月4日に公開されたパッチがそれにあたる。また、Spectreの攻撃を受ける可能性があるWebブラウザなどが緩和策を導入しており、アプリケーションを最新バージョンに更新しておけばより安全性は高まる。また、Spectre Variant 2については「CPUマイクロコードの更新」が対策として有効。Intel環境の場合、最新のUEFIがマザーボードメーカーから段階的に提供されているので、これに更新しておこう。なお、AMDは「AMD CPUがVariant 2の攻撃を受ける危険性はきわめて低い」という見解を示している。
ユーザーがすべき対応は?
- Windowsのパッチを適用する
Meltdown攻撃防止に有効な仕組が導入されたOSのパッチが必須。
Microsoftは2018年1月からMeltdown対策とSpectre緩和策が含まれたWindows更新プログラムを提供している。 - Webブラウザを最新版に更新
Spectreが悪用された場合、JavaScriptを利用してWebサイトから攻撃される可能性があることから、Webブラウザ側でも緩和策が行なわれている。 - マザーボードのUEFIアップデートを行ない、CPUのマイクロコードを更新
Spectre(Variant 2)の緩和策として有効
IntelからはCoffee Lake、Kaby Lake、Skylake向けが提供されている。
Broadwell、Haswell向けは一時公開されたものの、再起動が頻発する不具合により撤回され、修正版をパートナーへ配布したとのアナウンスがあった(一般ユーザーレベルに届く更新は公開はまだされていない)。
AMDはVariant 2の攻撃を受ける可能性は極めて少ないとしつつ、今後マイクロコードを提供する予定としている。 - GPUドライバの更新
NVIDIAはSpectre緩和策を導入している。同社のGPUに脆弱性の影響が確認されたからではなく、CPUの脆弱性に対するソフトウェアとしての対策であるとしている。
Windows PowerShellで脆弱性への対策状況を確認しよう
パッチを自分のシステムに脆弱性対策がされているかどうか、不安な方もいるだろう。MicrosoftのサポートWebサイトには脆弱性対策のガイダンスが用意され、Windows PowerShellのスクリプトを利用した確認方法も記載されている。Windows PowerShellを利用したコマンドラインによる診断だが、上記のページにあるスクリプトを1行ずつコピー&ペーストしていけばよい。一連の捜査の流れと診断結果の表示内容については、下の画面を参考にしていただきたい。
Windows PowerShellを管理者権限で実行し(スタートメニューに入っているので右クリックしてメニューを呼び出す)、以下のコマンドを順に入力
Install-Module SpeculationControl
$SaveExecutionPolicy = Get-ExecutionPolicy
Set-ExecutionPolicy RemoteSigned -Scope Currentuser
Import-Module SpeculationControl
Get-SpeculationControlSettings ←入力後、診断結果が表示される
Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser
脆弱性問題パッチによるパフォーマンスへの影響は? ――CPUおよびメモリ周辺の基本性能
今回の脆弱性は、GoogleのProject Zeroなどによる研究の結果判明し、秘密裏に対策を進めてきた段階で報道されてしまったもので、実際に攻撃が実行されたわけではない。OSやアプリケーションのメーカー、PCメーカーなどから提供されている対策パッチを放置せず導入すれば、エンドユーザーのPCが攻撃を受ける可能性はきわめて少ない。
しかし、今回の脆弱性はCPUの構造的な部分にかかわるため、対策後はパフォーマンスが低下することが明らかにされている。その影響がどのくらいなのか、気になっている方もいるだろう。それを調べるために、OSやドライバ含め2017年12月31日以前の環境を再現し、対策が行なわれている2018年3月の最新環境とではどのくらい性能が異なるのか、さまざまなベンチマークテストを行なって比較してみた。
【検証環境】
<Intel Core i7-8700K>マザーボード:ASUSTeK ROG STRIX Z370-F GAMING(Intel Z370)、メモリ:Micron Ballistix Tactical BLT2K8G4D26AFTA(PC4-21300 DDR4SDRAM 8GB×2)、システムSSD:Samsung SM961[M.2(PCI Express 3.0 x4)、512GB]、電源プラン:高パフォーマンス<Intel Core i7-7700K>マザーボード:ASUSTeK ROG STRIX Z270G GAMING(Intel Z270)、メモリ:Micron Ballistix Tactical BLT2K8G4D26AFTA(PC4-21300 DDR4SDRAM 8GB×2 ※PC4-19200で動作)、システムSSD:Samsung SM961[M.2(PCI Express 3.0 x4)、512GB]、電源プラン:高パフォーマンス<AMD Ryzen 7 1700>マザーボード:ASUSTeK CROSSHAIR VI HERO(AMD X370)、メモリ:Micron Ballistix Tactical BLT2K8G4D26AFTA(PC4-21300 DDR4SDRAM 8GB×2)、システムSSD:Samsung 950 PRO[M.2(PCI Express 3.0 x4)、256GB]、電源プラン:Ryzenバランス調整<Intel Core i7-4770K>マザーボード:ASUSTeK Z97-I PLUS(Intel Z97)、メモリ:Team TEAD38G1600C11BK(PC3-12800 DDR3 SDRAM 8GB×2)、システムSSD:Samsung SSD 850 EVO(Serial ATA 3.0、500GB)、電源プラン:高パフォーマンス<共通>ビデオカード:ASUSTeK ROG STRIX-GTX1070-O8G-GAMING(NVIDIA GeForce GTX 1070)、電源:Corsair RX Series RX1000x(1,000W、80PLUS Platinum)、OS:Windows 10 Pro 64bit版まずはCPUの基本的な演算性能について検証結果を見てみよう。Sandra PlatinumでCPUの実行ユニットやキャッシュに対する影響を調べた。「プロセッサの性能」が基本的な演算性能で、「マルチメディア処理」は、SIMD(SSE、AVX)命令を利用する演算のテストとなっている。Core i7-8700Kと7700Kで影響が感じられるのが、整数演算(Dhrystone整数集計)で、それぞれ6%、5%とわずかではあるが、スコアが下がっている。マイクロコードの更新がない4770KとRyzen 7では影響は見られない。SandraのCPUテストはCPU内部で完結する内容なので、これも当然ではあるだろう。
「メモリー帯域」は文字どおりメモリ帯域を計測するものだ。対策後と対策前の差は誤差と言ってよいわずかなものでしかない。「キャッシュとメモリー」は、データのブロックサイズを変えて転送することで、キャッシュやメモリの帯域を計測する内容だ。8700Kと7700KではL1データキャッシュの値が若干下がっているが、やはりこれも誤差と言ってもよいような差でしかなく、脆弱性対策の影響があるとは言えないだろう。
もう1つ、アプリケーションベースのテストとして、CINEBENCH R15を利用した。CGレンダリングをマルチスレッドで行なう「CPU」とシングルスレッドで行なう「CPU(シングルコア)」の2種類のスコアが出る。結果については、Core i7-8700Kと7700Kでわずかながらスコアが下がっている。ばらつきも大きいテストではあるが、何回か繰り返し実行しても、対策前のスコアと同等と言えるスコアは出すことができなかった。率にすると2%前後というわずかな差ではあるが、やはりこれは脆弱性対策の影響が出ていると考えられる。なお、マイクロコードの更新がないCore i7-4770KとRyzen 7 1700では、はっきりした影響を確認できなかった。
このほか5月号本誌では、ストレージ性能や3D性能への影響、そして実際の使用感への影響の指標になる総合的なアプリケーションベンチ、Webブラウザベースのテストでの検証を実施。詳しくは本誌にて!!