Spectre にまだ飽きていない方のために… Boffins が、CPU のデータ漏洩ホールを検知する Speculator ツールをデモします

Table of Contents

Spectre にまだ飽きていない方のために… Boffins が、CPU のデータ漏洩ホールを検知する Speculator ツールをデモします

分析Intel、AMD、Power、Armのプロセッサにパッチを適用し、厄介なデータ漏洩を引き起こす投機的実行プロセッサのバグを解消しましたか? いいえ、スイスのIBMのエキスパートたちが、アメリカのノースイースタン大学の研究者と協力し、SplitSpectreと名付けたSpectreエクスプロイトコードを開発したのです。

SplitSpectreは、チームが開発したCPUバグ自動検出ツール「Speculator」をベースに構築された概念実証であり、同チームはSpeculatorをオープンソースソフトウェアとして公開する予定です。この取り組みの詳細は、今週初めに発表された学術論文で説明されています。

アンドレア・マンブレッティ氏はレジスター紙に対し、彼とスペキュレーターの共著者であるノースイースタン大学のエンギン・キルダ氏、ウィリアム・ロバートソン氏、IBMのマティアス・ノイグシュヴァントナー氏、アレッサンドロ・ソルニオッティ氏、アニル・クルムス氏は、チップの脆弱性をさらに悪用して世界を怖がらせようとしているのではなく、CPUのマイクロアーキテクチャの秘密を解き明かしたいのだと語った。

大手シリコン設計会社はプロセッサの内部機構の詳細を厳重に秘密にしているため、投機的実行の欠陥などを発見するには、かなりの量のリバースエンジニアリングが必要になります。

そこで、Speculator は、その発見プロセスを自動化しようと試みます。Spec-ex はプロセッサ速度を左右する重要な要素の一つであり、CPU エンジニアやその上司が競合他社に秘密を漏らしてしまうことを恐れて、この技術について語りたがらないのはそのためです。

マンベルティ氏はレジスター紙に対し、スペキュレーターは「[投機的実行]攻撃の共通要素の分析」から生まれたものであり、「新旧の攻撃の分析に役立つはずだ」と説明した。

「SplitSpectre は私たちの分析の結果であり、Speculator のおかげで、攻撃が成功するために必要な特性を正確に測定できるだけでなく、これまで知られていなかった、または文書化されていなかった投機中の CPU の一般的な動作を研究することができました。」

SplitSpectre: パッチを当てたら安心してください

Speculatorは、プロセッサのSpectreバリアント1の脆弱性を悪用するために必要な手法の「新たなバリエーション」を発見しました。これは、よく耳にする脆弱性であり、不正なアプリケーションやマルウェアによって悪用され、本来アクセスできないはずのパスワード、暗号鍵、秘密情報、その他コンピューターのメモリからデータが漏洩する可能性があるものです。

この亜種はSplitSpectreと名付けられ、従来のエクスプロイトとは異なり、「被害者の攻撃対象領域に存在する脆弱なコードの断片を小さくする必要がある」という特徴があります。Spectreエクスプロイトは、スパイ対象のソフトウェア内で実行される特定のコードシーケンスに依存します。SplitSpectreは、被害者側でより短い命令列を必要とするため、Spectreの影響を受けないと思われていたコードでも、この新しい手法によって盗聴される可能性があります。

とはいえ、現在のSpectre対策は、このバージョンのSplitSpectreを阻止するはずです。将来のバージョンは、研究者の言葉を借りれば、より成功する可能性、あるいは「実行可能」になる可能性があります。結局のところ、これはSpeculatorの概念実証であり、MozillaのSpiderMonkey JSエンジンで動作するようにJavaScriptで記述されています。

重要な点の 1 つは、SplitSpectre が基盤となる JavaScript エンジンをスヌーピングできることです。つまり、理論的には、ブラウザ内の他のタブなど、エンジンで同時に実行されている他の JavaScript コードが使用するプライベートな機密データを覗き見ることができるということです。

したがって、防御策の一つとして、ブラウザのタブとウィンドウを安全にサンドボックス化し、悪意のあるJavaScriptがSpectreを介して他のページやスクリプトを盗聴できないようにすることが挙げられます。これは、最近のウェブブラウザでよく見られる手法です。繰り返しになりますが、SplitSpectreの目的は、SpeculatorがCPUマイクロアーキテクチャの将来の脆弱性を探索し、潜在的に発見できる可能性を示すことです。

SplitSpectreのフロー

チームの論文には、SplitSpectre 技術の図解(右図)が掲載されており、その要点を次のように説明しています。「V1 ガジェットは、境界チェックと 2 回の配列アクセスで構成されています。…通常の Spectre V1 攻撃を実行するには、JavaScript エンジンで利用可能な完全な Spectre V1 ガジェットが必要になります。SplitSpectre の背後にある直感的な仕組みにより、この要件を緩和し、V1 ガジェットの前半、つまり境界チェックと最初の配列アクセスのみを必要とできます。」

マンブレッティ氏は、これはブラウザ依存のエクスプロイトでもJavaScript依存でもないと強調した。これは共有インタープリタ上で同時に実行されるコードにほぼ影響する。JavaScriptが選ばれたのは、悪意のあるWebページやメール送信文書に埋め込まれ、基盤となる環境から個人情報を抜き出そうとする悪意のある人物によって使用される可能性があるためだ。言い換えれば、これは比較的現実的な攻撃シナリオと言える。

「私たちが話しているのはSpiderMonkeyについてであり、ブラウザについてではありません」と彼はメールで述べた。「SplitSpectreは、SpiderMonkeyエンジン内で、攻撃者が制御するJavaScriptとランタイム環境の間の権限境界を越えます。」

論文にはさらに、「この攻撃は成功している。10文字の文字列を漏洩した場合の成功率は80%を超え、文字列全体を漏洩した場合の成功率は10%である」と記されている。

マンブレッティ氏は、Spectre対策パッチを完全に適用したシステムは、現状ではSplitSpectreの影響を受けないと強調した。この脆弱性攻撃は特定のCPUアーキテクチャに限定されるものではないが、研究者らはIntel Broadwell、Skylake、AMD Ryzenチップ上でJavaScriptをテストした。今回の研究では、Arm互換コンポーネントは特に調査されていない。

AMDとIntelにコメントを求めたところ、AMDは既存の防御機構でSplitSpectreをブロックできると主張しました。Intelはコメントを控えました。しかし、Chipzillaのエンジニアは、最新のソフトウェアによる緩和策でSplitSpectreを阻止できると確信していると聞いています。

CPUのパフォーマンスカウンタをファジングして、楽しみながら投機的実行を行う

マンブレッティ氏が述べたように、spec-ex研究者が直面する最大の障害は、CPUベンダーがマイクロアーキテクチャの詳細を十分に公開していないことです。研究者たちは「異なるCPUの挙動をリバースエンジニアリングすることを目的としたツール」が必要だと判断し、プロセッサが外部に発信する信号に注目しました。この信号から、spec-exがいつ発生するか、そしてさらに難しいのは、その情報を利用して機密情報を含むメモリからデータを抜き出す方法を特定することです。

スペキュレータアーキテクチャ

投機家の建築 - クリックして拡大

彼らは、CPU ベンダーがソフトウェアの最適化を支援するために提供するインターフェース、つまりハードウェア パフォーマンス カウンターを詳しく調べました。

Speculator の論文では、これらのカウンターは「キャッシュ アクセス、リタイアされた命令、予測ミスした分岐などのマイクロアーキテクチャ状態の変化」を明らかにし、「ユーザーが指定したコード スニペットの実行の投機的部分に関連するマイクロアーキテクチャ状態属性を正確に測定」するために使用できると述べられています。

言い換えれば、これらのカウンターはCPUが裏でどれだけの負荷をかけているか、そして具体的に何をしているかを追跡し、実行速度を最大化します。この情報はSpectreベースの攻撃を実行するために利用されます。SpeculatorがSpectreの脆弱性を悪用するために監視する項目には、以下のようなものがあります。

  • どのコードスニペットが投機的に実行されるか
  • spec-exの開始と停止のきっかけ
  • 特定の指示がどのように動作に影響するか
  • どのようなセキュリティ境界がspec-exを阻止するのか、例えばカーネルとユーザーモードの境界、ランタイムエンジンと解釈コード間の境界など
  • 同じアーキテクチャ内または異なるアーキテクチャ間での CPU 動作の一貫性。

スペキュレーターの実行により、マンブレッティと共同研究者たちは、新たな手法であるSplitSpectreの構築方法を習得しました。彼らは、投機的に実行されるもののリタイアされない命令に注目しました。なぜなら、これらの命令はアーキテクチャ上の副作用、つまり大量のプライベートデータを持ち出すためのサイドチャネルを形成する副作用に関する知見を提供したからです。®

Discover More