先月、CPUのセキュリティ脆弱性「メルトダウン」と「スペクター」の詳細が明らかになった際、関係する研究者らは、初期の概念実証例を超えて、さらなるエクスプロイトが開発される可能性を示唆した。
時間はかかりませんでした。今月発表された研究論文「MeltdownPrimeとSpectrePrime:無効化ベースのコヒーレンスプロトコルを悪用した自動合成攻撃」の中で、プリンストン大学とチップ設計会社NVIDIAのビット専門家が、サイドチャネルタイミング攻撃に使用可能なMeltdownとSpectreのエクスプロイトコードの亜種について説明しています。
つまり、研究チームは、現代のプロセッサにおけるメルトダウンとスペクターの設計上の欠陥を悪用し、マルウェアが脆弱なコンピュータのメモリからパスワードなどの機密情報を抽出する新たな方法を発見したのです。メルトダウンとスペクターの攻撃を阻止するために開発・展開されているソフトウェアによる緩和策は、パフォーマンスの低下をもたらす可能性があり、これらの新たな脆弱性を阻止できる可能性が高くなります。
しかし重要なのは、基盤となるハードウェアの変更だけではおそらく解決できないということです。つまり、Intelとその競合他社がCPUの設計図からこれらの脆弱性を排除するために現在取り組んでいることは、十分ではない可能性があるということです。これらの新たなエクスプロイトは、現代のチップアーキテクチャに深く埋め込まれた欠陥を攻撃するものであり、技術的に排除するのは困難です。
パニックになる前に:慌てる必要はありません。エクスプロイトコードは公開されていません。
パターン
一体なぜこのような事態に至ったのでしょうか?プリンストン大学のコンピュータサイエンス教授マーガレット・マルトノシ氏、博士課程のキャロライン・トリッペル氏、そしてNVIDIAの上級研究科学者ダニエル・ラスティグ氏は、コンピューターチップのマイクロアーキテクチャをモデル化し、メルトダウン・スペクターベースのタイミング攻撃などの特定の実行パターンを分析する、名前のないツールを開発しました(このツールについては後続の論文で解説します)。
彼らはこのツールを用いて、メルトダウンとスペクターの設計上の欠陥を引き起こす新たな手法を探求し、その過程でプロセッサの欠陥を悪用する新たな方法を特定しました。これらの最新のエクスプロイト手法は、「MeltdownPrime」と「SpectrePrime」と名付けられています。
これらの派生型が以前のものと異なる点の 1 つは、2 つのコアに対する攻撃 (2 つの CPU コアを相互に使用) であり、マルチコア システムでメモリがアクセスされる方法を活用するという点です。
やったー!Meltdown CPUの修正プログラムがリリースされました。Spectreの脆弱性は今後何年もテクノロジー業界を悩ませ続けるでしょう。
続きを読む
Meltdown と Spectre の設計上の欠陥は、チップメーカーがセキュリティよりも速度を優先した結果です。
現代のプロセッサは、ある瞬間にすべてまたは大部分のコンピューティングリソースを効率的に使用するために、ソフトウェア命令をアウトオブオーダーで実行します。これは、命令を次々にシリアルに処理するよりも高速です。シリアルに処理すると、チップの一部がアイドル状態になります。CPUコアは命令を投機的に実行し、プログラムがコード内でどのパスを通るかを正しく推測できれば、パフォーマンスが向上します。
Meltdown と Spectre を悪用する悪意のあるソフトウェアは、これらのプロセッサ設計特性を利用して、個人情報など、アクセスできないはずの特権データを取得します。
CPUメモリへのアクセスは比較的遅いため、チップにはキャッシュと呼ばれる高速メモリプールが搭載されています。複数のメモリユニットを持つことの問題点は、システム全体でデータのコピーが複数存在してしまう可能性があることです。
そのため、複数のプロセッサコアがキャッシュされたデータとシステムメモリの状態について一貫したビューを共有できるようにするキャッシュコヒーレンスプロトコルが存在します。様々な操作を通じて、キャッシュの状態は、例えば共有から無効へ、あるいは排他から変更へと変化する可能性があります。
Meltdown と Spectre は、プロセッサの設計特性から生じる予期しない副作用を悪用するため、サイドチャネル攻撃と呼ばれます。
キャッシュベースのサイドチャネル攻撃では、ターゲット アプリケーションの実行時にそのアプリケーションに関する特権情報を検出し、その情報をホスト システムに対して使用しようとします。
ロックしてロード
MeltdownPrime および SpectrePrime の亜種は、キャッシュ無効化プロトコルに基づいており、被害者がキャッシュ メモリをどのように使用しているかに関する情報を提供する、Prime+Probe および Flush+Reload と呼ばれるタイミング攻撃手法を活用します。
「SpectreとMeltdownの文脈では、コヒーレンス無効化を利用することで、Prime+Probe攻撃はFlush+Reload攻撃と同等の精度を達成し、同種の情報を漏洩することが可能になる」と論文は説明している。「キャッシュ無効化を悪用することで、MeltdownPrimeとSpectrePrime(それぞれMeltdownとSpectreの亜種)は、Prime+Probeタイミングサイドチャネル攻撃を利用しながら、MeltdownやSpectreと同等の粒度で被害者のメモリを漏洩することができる。」
これらの亜種は、Meltdown および Spectre 向けに開発された以前の攻撃と類似していますが、同一ではありません。
「MeltdownとSpectreは投機中にキャッシュを汚染することで発生するが、MeltdownPrimeとSpectrePrimeは無効化ベースのコヒーレンスプロトコルを使用するシステムで書き込み要求が投機的に送信されることで発生する」と論文は説明している。
研究者らは、キャッシュ コヒーレンス プロトコルが「たとえ操作が最終的に押しつぶされたとしても、投機的な書き込みアクセス要求の結果として共有コア内のキャッシュ ラインを無効にする可能性がある」ことを発見しました。
考慮事項
SpectrePrime 概念実証エクスプロイトは、macOS Sierra(バージョン 10.12.6)を搭載した 2.4GHz Intel Core i7 プロセッサ搭載の Apple Macbook で正常に実行されました。(Apple の Spectre パッチは、macOS High Sierra 10.13.2 でリリースされました。)MeltdownPrime はまだ実際のハードウェアでテストされていません。
研究者らは、元の欠陥に対するソフトウェアの修正によって亜種の攻撃も無力化できるものの、ハードウェアの変更だけでは不十分かもしれないと示唆している。
「SpectreとSpectrePrimeに関する観察と、実験における緩和成功を踏まえmfence
、lfence
MeltdownとSpectreを緩和するあらゆるソフトウェア技術は、MeltdownPrimeとSpectrePrimeも緩和できると考えています」と論文は結論づけている。「一方で、Prime亜種に対するマイクロアーキテクチャ上の緩和には、新たな検討が必要になると考えています。」
ちなみに、これらの欠陥の影響を最も受けたチップメーカーであるインテルは、サイドチャネルの脆弱性も対象とし、最大25万ドルの賞金を出すバグ報奨金プログラムを2018年末まで延長すると発表したばかりだ。
上記の調査についてインテルにコメントを求めたが、広報担当者からの回答はすぐには得られなかった。®
追加更新
この記事の公開後にThe Registerに電子メールで提供された声明の中で、Intel の広報担当者は、研究者らが提起した疑問に具体的には触れずに、既存のハードウェアによる緩和策で十分であると示唆した。
「調査報告書のコピーを受け取りました」と広報担当者は述べた。「報告書に記載されているサイドチャネル解析手法は、Google Project Zeroで公開され、SpectreおよびMeltdownと呼ばれる手法に類似しています。Intelは、SpectreおよびMeltdownに対する緩和策が、報告書に記載されている手法に対しても同様に有効であると予想しています。」