SpecterとMeltdownという 2つの新しい重大なセキュリティ欠陥が発見されました。
Raspberry PiはSpectreやMeltdownに対して脆弱ですか?
SpecterとMeltdownという 2つの新しい重大なセキュリティ欠陥が発見されました。
Raspberry PiはSpectreやMeltdownに対して脆弱ですか?
回答:
ARM自身によると、Pi 4より前のすべてのモデルで使用されているプロセッサコアは脆弱ではありません。
Armプロセッサの大部分は、このサイドチャネル投機メカニズムのバリエーションの影響を受けません。影響を受けやすいArmが設計したプロセッサの小さなサブセットの決定的なリストを以下に示します。[表のリンクを参照]
古いPiで使用されているプロセッサコアは次のとおりです。
パイ1およびゼロ(W):ARM11
Pi 2 V1:ARM Cortex-A7
Pi 2 V1.2およびPi 3:ARM Cortex-A53
上記のコアはいずれも、どのバージョンの攻撃に対して脆弱であると記載されていません(実際、これらの攻撃に対する既知の脆弱性がないため、まったく記載されていません)。
ラズベリーパイ4は、使用のCortex-A72、脆弱としてリストされているに記載されているとおり2、変異体1に、図3aおよび4を幽霊の攻撃に対して脆弱ラズベリーパイ4ですか?、Raspbianにはこれらの脆弱性に対するソフトウェアの緩和策が含まれているため、悪用されるリスクは低いはずです。他のオペレーティングシステムには適切な緩和策が含まれていない可能性があり、ARMはCortex-A72のハードウェア緩和策がリリースされたと述べていますが、これがPi 4に適用されたかどうかは不明です。
バリアント1および2(CVE-2017-5753およびCVE-2017-5715)はSpecterとして知られており、バリアント3(CVE-2017-5754)および3a(ARMが調査した関連する攻撃)はMeltdownと呼ばれることに注意してください。したがって、Pi 4より前のRaspberry Piデバイスはいずれも、SpectreまたはMeltdownに対して脆弱ではないと考えられています。
Pi(すべてのバージョン)は脆弱ではありません。
SpectreとMeltdownはどちらも順不同の実行を必要とします。Cortex-A7の早期パイ2とで使用されるのCortex A53以降のパイ2とPI 3で使用されるが、厳密インオーダーアーキテクチャです。ARM11パイ1で使用されるが、部分的にアウトオブオーダーではなく、仕事にスペクターやメルトダウンが可能な方法です。
ARMはこれを確認します:ARMプロセッサの非常に限られたサブセットのみがSpectreに対して脆弱なハードウェアを持ち、さらに限られたサブセットはMeltdownに対して脆弱であり、それらのすべてが脅威の緩和を許可すると考えられています。
これについての私の別の見解を提供したいと思います。
Meltdownについては、一部のプロセッサに特有の脆弱性があるため、Raspberry PiのCPUに脆弱性がないとARMが言う場合、おそらく信頼できる可能性があります。
ただし、Spectreはより一般的な脆弱性です。これまでのところ、2つの亜種しか実証されていませんが、もっと多くの亜種があると確信しています。CPUの障害は、コンテキスト切り替えを行うときに分岐予測子の状態がフラッシュされず、分岐予測子の状態が分岐命令アドレスの下位ビットによってインデックス付けされ、まったくタグ付けされないことです。そのため、プロセスの境界を超えて、2つのブランチが同じブランチ予測子の状態を共有している場合があります。
すべてのRaspberry PiモデルのCPUは、ブランチプレディクタが2ビット飽和カウンタの単なる大きな配列であるという点で、他のすべてのRaspberry Piモデルとほぼ同じであると確信しています取られない)。この配列のインデックスは、分岐命令アドレスの下位ビットであり、タグはありません。この予測子の状態はフラッシュされません。
現在、2つのブランチが同じ予測子状態を共有している場合、ごく最近の過去に特定のブランチがどのように進んだかを測定できます。スペクターの情報漏洩はこうしてあります!ブラウザーを確実にトリガーして、JavaScriptからパスワードに分岐するコードを実行し、分岐がどの方向に行ったかを測定できる場合、実際にパスワードを抽出できます。これは極端な例です。JavaScriptからトリガーできるような方法で、パスワードのすべてのビットに正気な人はいませんが、これは問題を示しています。
ARMの言うことすべてを信じないでください。ARMが意味することは、おそらくGoogleが開発したエクスプロイトがこれらのARM CPUで動作しないことです。それは彼らがSpectreに無敵であることを意味しません。他の種類のエクスプロイトが機能する可能性があります。
この質問を参照してください:https : //security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fixとその回答の意味を理解します。ブラウザで実行されている不正なJavaScriptコードは、プロセス内の他のブランチが行った方法をSpecterが測定するために発生する可能性があります。ブラウザーが信頼できないコードを実行する前に積極的にブランチプレディクターをフラッシュしない限り、ブランチプレディクターフラッシュ命令でさえ、この不正なJavaScriptの問題を解決しません。
20ビット(2ビット飽和カウンタが必要になるため、インデックスとして14ビットを使用する分岐プレディクタは32ビットアドレス空間の残りの18ビットでタグ付けされないため、幽霊は非常に長い間私たちと一緒にいます、18ビットタグ)を2ビットだけでなく。これにより、分岐予測子のサイズが10倍になります!CPUメーカーは、特別な特権のないユーザー空間でも動作する分岐予測子フラッシュ命令を追加し、カーネルはコンテキスト切り替え時にそれを使用し、ユーザー空間は信頼できないJITedコードを実行するときに使用することを期待しています。これにより、実際にはほとんどのSpectre問題が修正されますが、理論的にはすべてではありません。