ニュース

Google、CPUの投機実行機能に脆弱性発見。業界をあげて対策へ

~Intel、AMD、Armなど多数のCPUが対象も、コンシューマでは影響は軽微

Branch Target Injectionを利用した、KBMゲストのメモリを読み取る例

 米GoogleのProject Zeroは3日(現地時間)、Intel、AMD、Armなどの多くのCPUに使われている、性能を最適化するための「投機実行」機能に欠陥があり、深刻な脆弱性が存在すると発表した。

 Project Zeroの研究員Jann Horn氏によると、悪意のある攻撃者は、CPUの投機実行を利用することで、本来アクセス権限のないソフトウェアで、アクセスできないはずのシステムメモリを読み取ることができ、パスワードや暗号化キー、アプリケーションで開いている機密情報にアクセス可能になるという。

 テストでは、研究チームは、HaswellベースのXeon E5-1650 v3、AMD FX-8320、AMD PRO A8-9600、およびArmのCortex-A75を搭載したスマートフォン「Nexus 5x」などを利用。1台の仮想マシン上でこの攻撃を利用し、ホストマシンの物理メモリにアクセスでき、同じホスト上の異なる仮想マシンメモリに対する読み取りアクセス権を得られたという。

 今回発見された脆弱性は3種類。1つ目は「Bounds Check Bypass」(共通脆弱性識別子:CVE-2017-5753)、2つ目は「Branch Target Injection」(CVE-2017-5715)、3つ目は「Rogue Data Cache Load」(CVE-2017-5754)だ。このうち1つ目と2つ目の脆弱性を突いた攻撃手法を「Spectre」、3つ目の攻撃手法を「Meltdown」と名付けた。

 Googleでは2017年6月にもこの脆弱性をIntel、AMDおよびArmに報告しており、問題解決に向け取り組んできたという。もともと2018年1月9日に公開を予定していたが、一部メディアがこの問題をすでに報じ、セキュリティリスクが高まっているため、公開に踏み切った。

 具体的な攻撃の手法については、Google Project Zeroのブログを参照されたいが、Intelが公開したホワイトペーパーで大まかな概要が明らかとなっている。

 Bounds Check Bypass攻撃の肝は、投機実行は条件分岐するさいに、命令を実行する必要があるかどうかを知る前に命令を実行する点と、投機実行ではデータなどを暗黙でキャッシングする点だ。投機実行の結果が正しければ処理時間が短くてすむが、間違っていれば命令を破棄して、メモリからほかのデータをロード、再処理しなければならない。その処理およびデータのロードにかかった時間を計測することで、投機実行中のデータを予測する。

 Branch Target InjectionはCPU内部の「間接分岐予測器」を利用するもの。条件付き直接分岐では投機実行するものには2つのオプションしかないが、間接分岐に投機的に「ガジェット」を実行させることにより、悪質なコードを投機的に実行させることができてしまう。

 Rogue Data Cache Loadはアプリケーションがカーネルメモリを直接プロービングする手法。典型的にこのような操作はプログラムエラー(ページテーブルのパーミッションによるページフォルト)となるのだが、L1データキャッシュに投機的な操作の実行を常駐することで、投機的に実行されデータを照会できてしまう。

 Intelによれば、次期プロセッサでは、この問題を軽減する対策と性能強化を行なうとしており、既存製品に関しては、それぞれの脆弱性に対応した緩和策などを提示している。

 今回の脆弱性の情報公開に伴い、各社が対応策を公開している。Microsoftによれば、今回の対策をすることにより性能が低下するとしているが、コンシューマレベルではその影響は少ないという。

Intel:OSベンダーやシステム製造者がもうすぐ対策を公開
AMD:知らないURLをクリックしたりせず、定期的なソフトウェアアップデートを受け入れるよう呼びかけ
Arm:ファームウェアを提供し問題を修正するとともに、Linux向けカーネルパッチを提供
NVIDIA:GPUドライバの更新でCPUセキュリティの問題を免疫、ARM SoCについては分析中
Microsoft:2018年1月のセキュリティアップデートで対策、性能に影響するもコンシューマでは限定的
Microsoft Azure:対策を完了し、VMを再起動することで適用
Google:Androidは最新のセキュリティアップデートで対応。Google Apps/G Suiteは顧客が対応する必要なし、ChromeやChrome OSは一部ユーザーで操作が必要
Apple:すべてのiOSおよびMacが影響するが、iOS 11.2、macOS 10.13.2、tvOS 11.2ではMeltdownに対策済み。Apple Watchは影響を受けず
Mozilla:Firefox 57.0.4で対策
Synology:問題を認識、1月4日時点では緩和策なし
Red Hat:Linuxカーネルのアップデートで対応。IBM System Z、POWER8プロセッサ(ビッグエンディアンおよびリトルエンディアン)、POWER9プロセッサ(リトルエンディアン)でも同様の問題が発生
SUSE:Linuxコミュニティと協力し、Linuxカーネルパッチをリリースへ
Xen:Spectreは緩和なし、MeltdownはゲストをHVMまたはPVHモードで実行することで緩和可能