LVI は、CPU の投機的実行メカニズムに対する新しいクラスの攻撃です。

発行済み 新しい種類の攻撃に関する情報 LVI (負荷値の注入、 CVE-2020-0551) Intel CPU の投機的実行メカニズムに関するもので、Intel SGX エンクレーブやその他のプロセスからキーや機密データを漏洩するために使用される可能性があります。

新しい種類の攻撃は、攻撃に使用されるのと同じマイクロアーキテクチャ構造の操作に基づいています MDS (マイクロアーキテクチャ データ サンプリング)、 スペクターとメルトダウン。 同時に、新しい攻撃は、メルトダウン、スペクター、MDS、およびその他の同様の攻撃に対する既存の保護方法ではブロックされません。 効果的な LVI 保護には、CPU のハードウェア変更が必要です。 プログラムによって保護を構成する場合、メモリからの各ロード操作の後にコンパイラによって LFENCE 命令を追加し、RET 命令を POP、LFENCE、および JMP に置き換えることにより、過剰なオーバーヘッドが記録されます。研究者によると、ソフトウェアを完全に保護すると、パフォーマンスが 2 ~ 19 倍向上します。

問題をブロックすることの難しさの一部は、現時点では攻撃が実際的というよりも理論的なものであるという事実によって相殺されます (攻撃は理論的には可能ですが、実装は非常に難しく、合成テストでのみ再現可能です)。
インテル 充当された この問題には中程度の危険レベル (5.6 点中 10) があり、 解放された SGX 環境のファームウェアと SDK を更新し、回避策を使用して攻撃をブロックしようとしました。 提案された攻撃手法は現時点では Intel プロセッサにのみ適用可能ですが、Meltdown クラスの攻撃が適用される他のプロセッサにも LVI が適用される可能性は排除できません。

この問題は昨年 9 月にルーヴェン大学の研究者 Jo Van Bulck によって特定され、その後、他大学から XNUMX 人の研究者の参加を得て、XNUMX つの基本的な攻撃手法が開発されました。 オプション。 独立して、今年 XNUMX 月に、Bitdefender の研究者も 発見 LVI 攻撃亜種の 1 つを検出し、インテルに報告しました。 攻撃の亜種は、以前に使用されていたストレージ バッファ (SB、ストア バッファ)、フィル バッファ (LFB、ライン フィル バッファ)、FPU コンテキスト スイッチ バッファ、および XNUMX 次キャッシュ (LXNUMXD) などのさまざまなマイクロアーキテクチャ構造の使用によって区別されます。などの攻撃で ZombieLoad, リドル, Fallout, レイジーFP, フォレストウッド и メルトダウン.

LVI は、CPU の投機的実行メカニズムに対する新しいクラスの攻撃です。

メイン 栄誉 MDS 攻撃に対する LVI は、MDS が投機的例外処理 (フォールト) またはロードおよびストア操作の後にキャッシュに残るマイクロアーキテクチャ構造の内容の定義を操作することです。
LVI 攻撃では、攻撃者のデータがマイクロアーキテクチャ構造に挿入され、その後の被害者のコードの投機的実行に影響を与えることができます。 これらの操作を使用すると、攻撃者はターゲット CPU コアで特定のコードを実行するときに、他のプロセスのプライベート データ構造の内容を抽出できます。

LVI は、CPU の投機的実行メカニズムに対する新しいクラスの攻撃です。

のために 搾取問題 被害者プロセスのコード内 会うべきだ 攻撃者が制御する値がロードされる特殊なコード シーケンス (ガジェット)。この値をロードすると例外 (フォールト、アボート、またはアシスト) がスローされ、結果が破棄されて命令が再実行されます。 例外が処理されると、投機ウィンドウが表示され、その間にガジェットで処理されたデータが漏洩します。 特に、プロセッサは投機モードでコード (ガジェット) の実行を開始し、予測が正当でなかったと判断し、操作を元の状態にロールバックしますが、投機実行中に処理されたデータは L1D キャッシュに保存されます。およびマイクロアーキテクチャ バッファがあり、サードパーティ チャネルを通じて残留データを決定する既知の方法を使用してそれらから取得できます。

「アシスト」例外は、「フォールト」例外とは異なり、ソフトウェア ハンドラーを呼び出すことなくプロセッサによって内部的に処理されます。 アシストは、たとえば、メモリ ページ テーブルの A (アクセス) ビットまたは D (ダーティ) ビットを更新する必要がある場合に発生する可能性があります。 他のプロセスに対する攻撃を実行する際の主な困難は、被害者のプロセスを操作してアシストの発生を開始する方法です。 現時点ではこれを行う信頼できる方法はありませんが、将来的には見つかる可能性があります。 攻撃を実行する可能性は、これまでのところ Intel SGX エンクレーブに対してのみ確認されています。他のシナリオは理論上、または合成条件で再現可能です (コードに特定のガジェットを追加する必要があります)。

LVI は、CPU の投機的実行メカニズムに対する新しいクラスの攻撃です。

LVI は、CPU の投機的実行メカニズムに対する新しいクラスの攻撃です。

考えられる攻撃ベクトル:

  • カーネル構造からユーザーレベルのプロセスへのデータ漏洩。 Spectre 1 攻撃に対する Linux カーネルの保護と、SMAP (スーパーバイザー モード アクセス防止) 保護メカニズムにより、LVI 攻撃の可能性が大幅に減少します。 将来、より単純な LVI 攻撃方法が特定された場合は、カーネルに追加の保護を追加することが必要になる可能性があります。
  • 異なるプロセス間のデータ漏洩。 この攻撃では、アプリケーション内に特定のコードが存在し、ターゲット プロセスで例外をスローするメソッドが定義されている必要があります。
  • ホスト環境からゲスト システムへのデータ漏洩。 この攻撃は複雑すぎると分類されており、実装が困難なさまざまな手順とシステム内のアクティビティの予測が必要です。
  • 異なるゲスト システムのプロセス間でのデータ漏洩。 この攻撃ベクトルは、異なるプロセス間でのデータ漏洩の組織化に近いものですが、さらに、ゲスト システム間の分離をバイパスするために複雑な操作が必要です。

研究者によって発行された いくつかの プロトタイプ 攻撃を実行する原則を示していますが、実際の攻撃を実行するのにはまだ適していません。 最初の例では、リターン指向プログラミング (ROP、リターン指向プログラミング)。 この例では、被害者は、必要なガジェットを含む特別に準備されたプロセスです (実際のサードパーティのプロセスに攻撃を適用することは困難です)。 XNUMX 番目の例では、Intel SGX エンクレーブ内での AES 暗号化中の計算に干渉し、暗号化に使用されたキーの値を復元する命令の投機的実行中にデータ リークを組織することができます。


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

コメントを追加します