1: 2018/01/08(月) 17:54:02.62 _USER9
米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によれば、今回の対策をすることにより性能が低下するとしているが、コンシューマレベルではその影響は少ないという。
https://pc.watch.impress.co.jp/docs/news/1099687.html
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によれば、今回の対策をすることにより性能が低下するとしているが、コンシューマレベルではその影響は少ないという。
https://pc.watch.impress.co.jp/docs/news/1099687.html
引用元: http://ai.2ch.sc/test/read.cgi/newsplus/1515401642/
続きを読む