共有されたマイクロアーキテクチャのプレディクタ・ステートは、コードがハードウェアの境界を越えて過渡的な実行に影響を与える可能性がある。
共有されたマイクロアーキテクチャの予測状態は、コードがハードウェアの境界を越えて一時的な実行に影響を与える可能性がある。
データを公開する可能性がある。
多くの汎用プロセッサは、命令セット・アーキテクチャ(ISA)を備えている。
機能を備えている。これらの機能には
これらの機能には、メモリ・セグメンテーション、仮想メモリ、特権リング、信頼された実行環境、仮想マシンなどがある。
リング、信頼された実行環境、仮想マシンなどがある。
などがある。例えば、仮想メモリは各プロセスに独自の
アドレス空間を提供する。
プライベートデータにアクセスすることを防ぐ。これらの機能の多くは
ソフトウェア・コンポーネント間のセキュリティ境界を形成するために使用することができる。
別々のソフトウェア・コンポーネント(たとえば 2 つのプロセス)がハードウェア境界を越えて
マイクロアーキテクチャ予測子の状態をハードウェア境界を越えて共有する場合、一方のコンポーネントのコードは
あるコンポーネントのコードが別のコンポーネントのマイクロアーキテクチャー・ プレディクターの動作に影響を与える可能性があります。
の動作に影響を与える可能性があります。予測子が過渡的な実行を引き起こす可能性がある場合
予測子が過渡的な実行を引き起こす可能性がある場合、共有された予測子の状態によって、攻撃者は被害者の過渡的な実行に影響を与えることができる。
被害者の過渡的な実行に影響を与えることができる。
攻撃者が観測可能な不一致を監視することで、被害者から個人データを推測することを可能にします。
観測可能な不一致(CWE-203)を監視することで、攻撃者が被害者から個人データを推測することを可能にする。
プロセッサがあるコンポーネントから別のコンポーネントに遷移するとき(たとえば、あるコンポーネントから別のコンポーネントに遷移するとき)、予測ステートが共有されることがあります。
プロセッサがあるコンポーネントから別のコンポーネントに遷移するとき(たとえば、プロセスがカーネルに入るためにシステムコールを行うとき)、予測器の状態が共有されることがある。
を呼び出してカーネルに入るときなど)。多くの汎用プロセッサーは
多くのコモディティ・プロセッサは、あるバウンダリより前に発生したマイクロアーキテクチャ上の予測が、バウンダリより後に発生した予測に影響を与えないようにする機能を備えています。
多くのコモディティ・プロセッサは、バウンダリより前に発生したマイクロアーキテクチャ予測が、バウンダリより後に発生した予測に影響を与えないような機能を備えています。
予測子の状態は、ハードウェアスレッド間で共有されることもあります。
例えば、同時マルチスレッド(SMT)をサポートするプロセッサ上の兄弟ハードウェアスレッドなどである。
例えば、同時マルチスレッド(SMT)をサポートするプロセッサの兄弟ハードウェアスレッドなどである。この共有は
ハードウェアスレッドが同じソフトウェアコンポーネントで同時に実行されている場合、この共有は良性かもしれません。
あるいは、一方の兄弟が悪意のあるソフトウェア・コンポーネントで、もう一方の兄弟が悪意のあるソフトウェア・コンポーネントである場合に、弱点が露呈する可能性がある。
また、一方の兄弟が悪意のあるソフトウェア・コンポーネントで、もう一方の兄弟が犠牲となるソフトウェア・コンポーネントである場合は、弱点が露呈する可能性がある。
コンポーネントになる可能性がある。ハードウェアスレッド間でマイクロアーキテクチャの予測子を共有するプロセッサーには、次のような機能があります。
ハードウェアスレッド間でマイクロアーキテクチャ予測子を共有するプロセッサは、あるハードウェアスレッドで発生したマイクロアーキテクチャ予測を
あるハードウェア・スレッドで発生したマイクロアーキテクチャ予測が、別のハードウェア・スレッドで発生した予測に影響を与えることを防ぐ機能がある場合があります。
あるハードウェアスレッドで発生したマイクロアーキテクチャ予測が、別のハードウェアスレッドで発生した予測に影響を与えないようにする機能を備えている場合があります。
トランジション間またはハードウェア・スレッド間の予測器ステートの共有を制限する機能は、常時オンになっている場合があります。
ハードウェア・スレッド間で予測子の状態共有を制限する機能は、常時オン、デフォルトでオン、またはソフトウェアからのオプトインを必要とする場合があります。
ソフトウェアからのオプトインが必要な場合があります。
Shared microarchitectural predictor state may allow code to influence
transient execution across a hardware boundary, potentially exposing
data that is accessible beyond the boundary over a covert channel.
Many commodity processors have Instruction Set Architecture (ISA)
features that protect software components from one another. These
features can include memory segmentation, virtual memory, privilege
rings, trusted execution environments, and virtual machines, among
others. For example, virtual memory provides each process with its own
address space, which prevents processes from accessing each other's
private data. Many of these features can be used to form
hardware-enforced security boundaries between software components.
When separate software components (for example, two processes) share
microarchitectural predictor state across a hardware boundary, code in
one component may be able to influence microarchitectural predictor
behavior in another component. If the predictor can cause transient
execution, the shared predictor state may allow an attacker to
influence transient execution in a victim, and in a manner that could
allow the attacker to infer private data from the victim by monitoring
observable discrepancies (CWE-203) in a covert channel [REF-1400].
Predictor state may be shared when the processor transitions from one
component to another (for example, when a process makes a system call
to enter the kernel). Many commodity processors have features which
prevent microarchitectural predictions that occur before a boundary
from influencing predictions that occur after the boundary.
Predictor state may also be shared between hardware threads, for
example, sibling hardware threads on a processor that supports
simultaneous multithreading (SMT). This sharing may be benign if the
hardware threads are simultaneously executing in the same software
component, or it could expose a weakness if one sibling is a malicious
software component, and the other sibling is a victim software
component. Processors that share microarchitectural predictors between
hardware threads may have features which prevent microarchitectural
predictions that occur on one hardware thread from influencing
predictions that occur on another hardware thread.
Features that restrict predictor state sharing across transitions or
between hardware threads may be always-on, on by default, or may
require opt-in from software.