web-dev-qa-db-ja.com

SpectreとMeltdown CPUのバグはIntelに加えてAMDにも影響しますか?

サーバーまたはPCがAMD CPUを実行している場合、それらは現在Intelチップに影響を与えているSpectreおよび/またはMeltdownバグの影響を受けますか?

なぜか、なぜそうでないのか?

それが一方に影響を与え、もう一方に影響を与えないのはなぜですか?建築はどのように役割を果たしますか?

4
DCIndieDev

Spectreは、攻撃者がターゲットプロセスのコンテキストで選択したコードを、CPUに投機的に実行させることで機能します。これは、次の分岐命令がどの方向に進むかについて分岐予測子に誤って推測させ、実行が破棄されたコードの副作用を探すことによって行われます。投機的実行を実行するすべてのCPUはSpectreに対して脆弱ですが、分岐予測子が十分にプリミティブである場合(たとえば、68040の「常に分岐する」予測)、または間接分岐の予測をサポートしていない場合、Specterを使用するのははるかに困難です。

メルトダウンは、保護されたメモリを投機的に読み取ることで機能します。 Intelでは、メモリの保護ステータスは、CPUが「はい」と判断するまでチェックされません。実行パスの「読み取り保護されたメモリ」ブランチは正しいブランチです。その間、観察可能な副作用が発生します。 AMD CPUが保護ステータスを以前にチェックし、影響を受けていないことを示します 、そして メルトダウンペーパーの著者は、攻撃をARMで機能させることができなかったと述べています

7
Mark

まず、メルトダウンはIntel CPUにのみ影響します。これは、順序どおりに実行されないすべてのIntel CPUに影響を与える比較的単純なエクスプロイトです。一部のAtom CPUを除いて、1997年以降のほとんどすべてです。

Spectreについては、どの種類のCPUが影響を受けるかについては、まだ多くの混乱があります。 PowerPCに関するtenfourfoxに関する記事があります。7447のような古いPowerPCチップには、Spectreに対して脆弱であるほどの順序どおりの実行ができないことが判明しています。 K6やK7アーキテクチャなどの古いAMD CPUも影響を受けるのに十分な投機的(順不同実行)機能を備えていない可能性があります。

Spectreの少なくとも1つのバリエーションを機能させるには、2つの命令を投機的に実行する必要があります。 1つ目は、プログラムがアクセスを許可されている場所以外の場所へのメモリアクセスで、2つ目は、最初の命令によってロードされたデータをアドレスとして使用する依存メモリロード命令です。これには、2つの命令がすべて前もって完了する必要があります。このようにすることで、最初のメモリ読み取りからの不正アクセスデータに基づいた2番目のメモリ読み取りのアドレスのトレースがキャッシュに残り、一種の試行錯誤のタイミングメソッドを使用してゆっくり抽出できます。不正なメモリアクセス命令は、CPUが誤って予測した分岐の後に発生する必要があります。そうしないと、その命令が実際に実行されたときにプログラムがクラッシュします。 CPUが予想とは別の方法で分岐する場合、CPUは投機的に実行された命令をダンプして続行しますが、キャッシュはそれらの命令が引き起こしたメモリアクセスの影響を受け続けます。

私はこれの専門家ではないので、おそらくいくつかの技術的なエラーがありますが、起こっていることの全体像は正しいはずです。

1
Alex Cannon

まもなく:はい、それだけではありません!

それが一方に影響を与え、他方に影響を与えるのは何ですか?建築はどのように役割を果たしますか?

これはすべて非常に古いCPUの概念的な機能についてです。 (私が見つけた最初の出版物投機的実行コードの投機的実行のための動的スキーム 日付は1998! 20歳!

CPUコンストラクターは、文書化されていますが(主にコンストラクターの自主主導によって)進化した多くのimprovement機能を使用します...時々、より多くの改善により、いくつかの機能がバグになる可能性があります!

各コンストラクターが各概念的な機能を独自の方法で実装するので、物理的な設計により、20年前から詳細を秘密に保ちます...パフォーマンスについて実行します...同等のパフォーマンスについて、同様の弱点が現れます各開発ブランチ全体...

つまりmeltdownspectreの特殊なケースのように見えますsomes実装では機能しますが、-othersでは機能しません。 ..しかし、確かに、新しいexploitsが表示され、-othersではなくsomes ...で実行されます。

しかし、それだけです私の自身の意見
;-)

いくつかの読書

単純な 任意の検索エンジンでSpectre ARM Intel NVidia を検索すると、興味深い出版物を見つけることができます。

その他...

0
F. Hauri