CPUを狙うスペクター、メルトダウンとは 2

前回は、パソコンの脆弱性問題「Meltdown(メルトダウン)」について、ご紹介しました。パソコンの頭脳であるCPUというパーツの設計に問題があるとのことでした。今回は、脆弱性問題「Spectre(スペクター)」についてです。

今回、発表された脆弱性問題は、2種類ですが3つに分けることができます。

Variant 1: 境界チェックのバイパス (bounds check bypass : CVE-2017-5753)
Variant 2: 分岐ターゲットのインジェクション (branch target injection : CVE-2017-5715)
Variant 3: 不正なデータのキャッシュ読み込み (rogue data cache load : CVE-2017-5754)

「Variant 3」は、前回ご紹介した「メルトダウン(Meltdown)」と呼ばれる脆弱性になります。そして今回は「Variant 1」と「Variant 2」に該当する「スペクター(Spectre)」と呼ばれる脆弱性についてです。

脆弱性の原因

前回、「メルトダウン(Meltdown)」の原因部分は、パソコンの頭脳のパーツであるCPUで行われるプロセッサつまり、そこで行われている投機的実行の処理設計であるとご紹介しました。「スペクター(Spectre)」にも重なる部分でもあり、基本的に同じような部分が原因にあります。

Variant1

「スペクター(Spectre)」の脆弱性であるVariant1も、プロセッサのアーキテクチャとして採用されている投機的実行(speculative execution)のメカニズムを悪用するものです。投機的実行は、プログラムの分岐が行われる際、分岐条件がはっきりする前からコードをあらかじめ実行させてパフォーマンスを上げる仕組みのことでした。もし予測が外れれば、投機的に実行しているコードを廃棄するというシステムです。

投機的実行されたコードデータを実行するためなのですが、実際にはカーネルメモリを読み出すことができます。つまり、本来なら、投機的実行の結果自体も破棄する必要がありますが、厳密に破棄がされていない、この状態を指摘しています。

簡単に言うと、パソコンの処理を早くするために行う予測して行うシステムのデータは、削除されるべきなのに、ちゃんと削除されていない言うことです。

Variant2

「Variant2」の不具合も「Variant1」と、とてもよく似ています。脆弱性と言われているのは、「Variant1」と同じパーツの同じ処理部分になります。「Variant1」が予測したデータが削除されないないという点に対して「Variant2」は、処理プロセッサの分岐予測や分岐ターゲットバッファを悪用する点です。つまり、投機的実行システムの分岐予測をする部分ということです。

「スペクター(Spectre)」が指摘されているのは、アプリケーションの実行を許可し、プロセス管理しているカーネルなどの特権モードでしかアクセスできない部分ですから、ちょっと安心な気もします。しかし、油断は禁物です。OSは外部のプラグインを特権モードで動かすことができます。今は誰でも開発ができる時代ですから、「スペクター(Spectre)」を利用する不正なプラグインが開発され悪用されてしまえば、ブラウザ経由でJavaScriptなどのコードを使って、不正アクセスを許すことになってしまいます。

「メルトダウン(Meltdown)」と「スペクター(Spectre)」

「メルトダウン(Meltdown)」と「スペクター(Spectre)」のどちらも、多くのパソコンで利用されているInteI、AMD、ARMのプロセッサの脆弱性です。今のところ、このどちらの脆弱性も悪用されたとの報告はありません。(いつあってもおかしくないですが・・・)それにしても「スペクター(Spectre)」が厄介なのは、サーバーだけでなく、PCやスマートフォン、IoTデバイスなど、広範囲で利用されているという点です。また、すでに報告されている3社(Intel、AMD、Arm)のプロセッサ以外にも、各種製品のコアを採用したライセンス品や、投機実行システムを採用している他社のプロセッサアーキテクチャにも問題が存在する可能性が高いと言われています。ですから、この問題の影響は、広範範囲におよぶと思われるます。

各社の対応

前回と今回のブログでご紹介したパソコンの脆弱性問題「Meltdown(メルトダウン)」と「Spectre(スペクター)」について、各社はどのように対応しているのでしょうか。

Microsoft

Microsoft社は、緊急アップデートの提供を開始しています。Windows 10 用のパッチ「KB4090007」として、自社サイトの「Microsoft Updateカタログ」で提供を始めています。更新プログラム「KB4056890」が今回の脆弱性問題に該当します。これによりOSやEdgeブラウザ、Internet Explorerを含むアプリケーションなどの対策がなされています。また、Windowsである自社ブランド以外のデバイスにも対応を行い始めました。Intelのマイクロコードアップデートも自社サイトで公開されています。

Apple

Meltdown(メルトダウン)の緩和策として、iOS 11.2、macOS 10.13.2、tvOS 11.2がリリースされました。さらに、Spectre(スペクター)の緩和策は、Safariのアップデートで対処する計画だと発表されています。

Google

Googleは、この問題が指摘される前の2017年6月に、この脆弱性への対策を開始していました。そして、12月には完了していたことを発表しています。

各社が発表するアップデートなどを個人で行うことで、セキュリティ 対策が行えます。これからも各社の対応の動向に注意を払いましょう。