メディア

根本的解決はCPUの世代交代か、脆弱性問題各社の対策法まとめ(3/4 ページ)

» 2018年01月22日 09時30分 公開
[長浜和也EE Times Japan]

NVIDIA

 NVIDIAは、1月17日までの投稿で、NVIDIAのGPUはVariant1、Variant2、Variant3のいずれからも影響を受けないとしているが、CPUが受ける影響を軽減する機能を持たせた更新プログラムをドライバダウンロードから配信している。1月18日時点ではドライバブランチのR375、R390以外で配信が完了し、R375、R39も1月22日から配信を開始する予定だ。

クラウドサービス各社

 クラウドサービスを提供しているAmazon(AWS)、Microsoft(Azure)、Google(Google Compute Engine)からは、それぞれ、既に対策を施して脆弱性から保護された状態にあると発表が出ている。Amazonは、ユーザーに対しては使用している仮想OSにそれぞれ更新プログラムを適用するように指示している一方で、Azureは仮想マシンOSレベルでの対処は不要、Googleからは、ユーザー側の仮想マシン再起動もいらないと説明している。

気になる対策後のパフォーマンス低下は?

 今回判明したCPUの脆弱性をついた不正な攻撃では、本来守られていることが前提で開発者がプログラムを書いているメモリ領域が、不正な方法、または、ユーザー権限でアクセスできてしまうこと以外にも、この脆弱性に対応した更新プログラムを適用することで、システムのパフォーマンスが低下する可能性があることも問題となっている。

 この懸念について、Intelが自ら実施したベンチマークテストの結果を公開している。Skylake世代のXeonの2ソケットシステムで行ったベンチマークテストでは、ワークロード系の測定テストで最大2%の低下、証券取引所における処理を再現するテストで4%の低下、データの入出力を再現するI/Oテストで2〜18%の低下、そして、ストレージ性能を測定するStorage Performance Development KitのiSCSIテストでシングルコア処理において25%の低下を、それぞれのスコアで確認したという。

 また、クライアントPC環境では、Core i7-8700K、Core i7-8650U、Core i7-7920HQ、Core i7-6700Kを搭載したシステムで「SYSmark 2014 SE」「PCMark 10」「3DMark Sky Diver」を実施し、Core i7-6700KとNVMe SSDを組み合わせた構成におけるSYSMark 2014 SEの応答性テストで21%のスコア低下を確認した以外は、数パーセントの性能低下にとどまったとしている。

 クラウドサービスを提供しているAmazon(AWS)、Microsoft(Azure)、Google(Google Compute Engine)からは、仮想マシンに対策を施した後の性能低下測定についても報告が上がっているが、パフォーマンスへの影響は確認できなかったと述べているが、Azureでは、パフォーマンスに問題があったときの解決策としてAccelerated Networkingの利用を勧めている。

分岐先予測と投機的実行で境界を越えたアクセスが可能になる理由と影響

 Variant1とVariant2(Spectre)、そして、Variant3(Meltdown)が2018年(その発見は2017年中ごろ)になって脆弱性として問題となった原因は、CPUが実装する分岐予測と分岐先予測、投機的実行機能によって、本来ユーザーが起動したアプリケーションからアクセスできないように保護されているメモリ領域を不正に参照できる方法が露見したことにある。

 CPUはプログラムが指定する順番通りに命令を実行するのが基本だが、演算効率を高めるために、分岐処理が予想されるタイミングに合わせて(分岐予測)、分岐が起こると予想した場合には分岐先の命令(があるメモリアドレス)を先読みし(分岐先予測)、分岐して実行する可能性のある命令を複数読み込んで分岐する条件が確定するのを待たずして先回りして実行する(投機的実行)。

 プログラムが指定した順番通りに命令を実行するのは「正式な処理」なので、システムが定めたルールに従い、アクセスが禁じられているメモリ領域を使うことはない。しかし、分岐予測や分岐先予測、そして、投機的実行など「内部ルールで行う処理」では、本来アクセスを禁じているメモリ領域が使える可能性がある(これがVariant1で問題になる、CPUの投機的実行とOSによるカーネルメモリ領域のアクセス機能によるメモリアクセス境界チェックの回避だ)。このとき、本来ならアクセスできないメモリ領域なので「安心して」置いておいた秘密のデータを読むことができてしまう。

 分岐予測や分岐先予測は長い時間をかけて進化してきており、それだけに方法も多々ある。その方法の1つとして、過去の動作パターン履歴を保存するために用意したBTBを参照して分岐予測や分岐先予測を行う専用のハードウェア「間接分岐予測器」を実装するCPUがある。間接分岐予測器の挙動はCPUのコアシリーズや世代によって異なるが、それぞれにおいて予測結果に関与できる方法が分かれば、本来保護されているはずの別なプロセスで使っているメモリ領域を推定し(これがVariant2で問題になる、物理CPUまたは仮想CPUに実装した分岐先予測技術で利用するBTBによる分岐先メモリアドレスの不正推測だ)、Variant1で発生するメモリアクセス境界チェックの回避と組み合わせることで、秘密のデータにアクセスできる可能性がある。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.