IntelおよびAMDプロセッサのマイクロアーキテクチャ構造に対する新たな攻撃

バージニア大学とカリフォルニア大学の研究者グループは、文書化されていない CPU 機能のリバース エンジニアリング中に特定された、Intel および AMD プロセッサのマイクロアーキテクチャ構造に対する新しいタイプの攻撃を発表しました。 提案された攻撃方法には、プロセッサ内の中間マイクロオペレーション キャッシュの使用が含まれており、これを使用して、命令の投機的実行中に蓄積された情報を取得できます。

最適化の目的で、プロセッサは、前の計算が完了するのを待たずに、一部の命令の実行を投機モードで開始し、予測が正当でないと判断した場合は、操作を元の状態にロールバックしますが、その間に処理されたデータは失われます。投機的実行はキャッシュに保存され、その内容を判断できます。

新しい手法は Spectre v1 攻撃を大幅に上回り、攻撃の検出が困難になり、命令の投機的実行によって引き起こされる脆弱性をブロックするように設計された既存のサイドチャネル攻撃に対する保護方法ではブロックされないことに注意してください (たとえば、の LFENCE 命令は投機的実行の最終段階でのリークをブロックしますが、マイクロアーキテクチャ構造によるリークは防ぎません)。

この方法は、Intel Skylake および AMD Zen シリーズを含む、2011 年以降にリリースされた Intel および AMD プロセッサ モデルに影響します。 最新の CPU は、複雑なプロセッサ命令をより単純な RISC のようなマイクロ操作に分割し、別のキャッシュにキャッシュします。 このキャッシュは上位レベルのキャッシュとは根本的に異なり、直接アクセスできず、CISC 命令を RISC マイクロ命令にデコードした結果に迅速にアクセスするためのストリーム バッファとして機能します。 しかし、研究者たちは、キャッシュ アクセスが競合するときに発生する条件を作成し、特定のアクションの実行時間の違いを分析することでマイクロオペレーション キャッシュの内容を判断できるようにする方法を発見しました。

IntelおよびAMDプロセッサのマイクロアーキテクチャ構造に対する新たな攻撃

Intel プロセッサのマイクロオペレーション キャッシュは CPU スレッド (ハイパー スレッディング) に関連してセグメント化されていますが、AMD Zen プロセッサは共有キャッシュを使用しているため、XNUMX つの実行スレッド内だけでなく、SMT の異なるスレッド間でもデータ漏洩の条件が作成されます。 (異なる論理 CPU コアで実行されているコード間でデータ漏洩の可能性があります)。

研究者らは、マイクロオペレーションキャッシュの変更を検出するための基本的な方法と、単一プロセス内で隠しデータ送信チャネルを作成し、脆弱なコードを使用して機密データを漏洩することを可能にするいくつかの攻撃シナリオを提案しました(たとえば、実行時にプロセスデータを漏洩する) JIT を使用したエンジンおよび仮想マシン内のサードパーティ コード)、およびユーザー空間内のカーネルとプロセス間のサードパーティ コード。

研究者らは、マイクロオペレーション キャッシュを使用して Spectre 攻撃の亜種を組織した場合、エラー率 965.59% で 0.22 Kbps のパフォーマンスを達成することができ、同じアドレス内でリークを組織した場合、エラー修正を使用した場合は 785.56 Kbps のパフォーマンスを達成することができました。スペースと特権レベル。 リークがさまざまな特権レベル (カーネルとユーザー空間の間) にまたがる場合、パフォーマンスはエラー修正を追加した場合で 85.2 Kbps、エラー率 110.96% で 4 Kbps でした。 AMD Zen プロセッサを攻撃して、異なる論理 CPU コア間でリークを作成した場合、パフォーマンスは 250 Kbps、エラー率 5.59%、エラー訂正ありで 168.58 Kbps でした。 従来の Spectre v1 方式と比較して、新しい攻撃は 2.6 倍高速でした。

マイクロオペレーション キャッシュ攻撃から保護するには、Spectre 攻撃保護を有効にした場合よりもパフォーマンスが低下する変更が必要になることが予想されます。 最適な妥協策として、キャッシュを無効にするのではなく、異常を監視し、攻撃に典型的なキャッシュの状態を識別するレベルで、このような攻撃をブロックすることが提案されています。

Spectre 攻撃と同様、カーネルや他のプロセスからのリークを組織するには、被害プロセス側で特定の一連のコマンド (ガジェット) を実行する必要があり、これが命令の投機的な実行につながります。 Linux カーネルでは同様のガジェットが約 100 個見つかっており、これらは削除される予定ですが、それらの生成に対する回避策は定期的に発見されており、たとえば、カーネル内で特別に設計された BPF プログラムを実行することに関連しています。

出所: オープンネット.ru

コメントを追加します