検索
特集

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

2018年の年明けすぐに、CPU業界で発生した「Spectre」「Meltdown」問題。Googleのチームなどが同年1月3日に報告した当初、情報が錯綜(さくそう)して混乱したものの、情報が公開されるにつれて落ち着きを取り戻しつつある。本稿では、主要ベンダーが用意した最新の対策情報と、いまひとつ分かりにくい「分岐先予測」「投機的実行」「データキャッシュ」に脆弱性が潜んでいた理由を解説する。

Share
Tweet
LINE
Hatena
前のページへ |       

データキャッシュと投機的実行


画像はイメージです

 ここまで(Spectreと呼んでいたVariant1とVariant2の脆弱性問題)は、分岐予測と分岐先予測が関係していたが、ここから先(Meltdownと呼んでいるVariant3の脆弱性問題)では、データキャッシュと投機的実行が関係する。CPUでは実行するプログラムによってアクセスできるメモリ領域を制限している。一般に、「誰が使っているか分からない可能性がある」というリスクの高いユーザーアプリケーションは、通常のメモリ領域だけにアクセスして、そのデータをキャッシュメモリに置くことができる一方で、カーネルメモリ領域にはアクセスできない。

 しかし、ユーザーアプリケーションのプログラムで投機的実行が発生すると、特定の条件下でカーネルメモリにアクセスしてそこにあるデータをユーザーアプリケーションが使えるキャッシュメモリに置くことが分かってしまった。このとき、1次キャッシュメモリに置いたデータが、後に続く命令にわたってしまう可能性がある。

 この仕組みを利用すると、もともとカーネルメモリ領域に置いておいた秘密データを不正なユーザーが利用しているアプリケーションで参照できてしまう(これがVariant3で問題になる、CPUの投機的実行機能とユーザープログラムの組み合わせによるカーネルメモリ領域へのアクセスで可能になるデータキャッシュの不正読み込みだ)。

 Varitant1は分岐予測、分岐先予測、投機的実行ができるCPUは全て影響を受ける。この手法は1995年以降に広く導入されており、IntelもAMDもArmも1995年以降に登場したモデルは攻撃の対象になりえる。「古い世代のCPU」のために更新プログラムを用意しているのもそのためだ。一方、Variant2は、間接分岐予測器を実装するCPUは影響を受けるものの、そこで採用している予想アルゴリズムによって攻撃の難易度が変わってくる。これまでの検証でIntel製CPUとArm製プロセッサでは影響が確認された一方で、AMD製CPUでは成功事例が確認できていないというのも、このあたりが影響している。

 Variant3は、データキャッシュとキャッシュにアクセスする仕組みの実装方法によって影響が変わってくる。AMDがVariant3は影響しないと述べているのは、データキャッシュの実装方法の違いによって、ユーザーアプリケーションがカーネルメモリ領域にアクセスできないように保護しているからと説明している。

根本的解決はCPUの世代交代

 以上で述べたように、1月18日時点で主要なベンダーのほとんどは今回の脆弱性への対策を用意できている。一部、対策が遅れている製品や更新プログラムの不具合に追われているベンダーもあるが、1月中には作業を終える見通しだ。ただ、現在の対策は、対症療法なもので、一部の用途、特にデータの入出力を多用する場合に最大25%のベンチマークテストスコアの低下が確認されている。根本的な解決には、現在開発中の次世代CPUへの移行が必要とCPUベンダーは案内している。

 また、更新プログラムの配信が始まったものの、一部のモデルでは自動更新でなくユーザーの操作で更新する必要がある。特に、最近数を増やしているIoT対応デバイスは、設置したらあとはそのままというケースも多く、問題を抱えたまま稼働し続ける可能性がある。

 Armは2017年12月に日本で開催したテクノロジーカンファレンス「Arm Tech Symposia 2017」にて、「IoTデバイスに共通のセキュリティ基盤」と訴え、同社の「Platform Security Architecture(PSA)」を訴求していたが、そこで危惧していた「Arm IPを搭載するデバイスの急激な増加によって困難になるセキュリティ確保の問題」が現実になってしまったといえるだろう(関連記事:「IoTデバイスに共通のセキュリティ基盤を、Arm「PSA」 」)。

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る