Plundervolt は、SGX テクノロジーに影響を与える Intel プロセッサに対する新しい攻撃手法です

インテル 解放された 修正するマイクロコードのアップデート 脆弱性 (CVE-2019-14607) 許可する CPU の動的な電圧および周波数制御メカニズムの操作を通じて、分離された Intel SGX エンクレーブ内の計算に使用される領域を含む、データ セルの内容に損傷を与えます。 この攻撃は Plundervolt と呼ばれ、ローカル ユーザーがシステム上で権限を昇格させ、サービス妨害を引き起こし、機密データにアクセスできるようになる可能性があります。

この攻撃を実行するにはシステム内の root 権限が必要であるため、この攻撃は SGX エンクレーブでの計算を伴う操作のコンテキストでのみ危険です。 最も単純なケースでは、攻撃者はエンクレーブで処理される情報を歪めることができますが、より複雑なシナリオでは、RSA-CRT および AES-NI アルゴリズムを使用した暗号化に使用されるエンクレーブに保存されている秘密キーを再作成する可能性はありません。除外されます。 この技術は、メモリを操作するとき、たとえば、割り当てられたバッファの境界外の領域へのアクセスを組織するときに、最初は正しいアルゴリズムでエラーを生成して脆弱性を引き起こすためにも使用できます。
攻撃を実行するためのプロトタイプコード 公開済み GitHubで

この方法の本質は、SGX での計算中に予期しないデータ破損が発生する状況を作り出すことですが、エンクレーブでの暗号化とメモリ認証の使用では、このようなデータ破損からは保護できません。 歪みを発生させるには、周波数と電圧を制御するための標準ソフトウェア インターフェイスを使用できることが判明しました。これらのインターフェイスは通常、システムのアイドル時間中の消費電力を削減し、集中的な作業中に最大のパフォーマンスを発揮するために使用されます。 周波数と電圧の特性は、隔離されたエンクレーブでのコンピューティングの影響を含め、チップ全体に及びます。

電圧を変更することで、CPU 内部のメモリセルを再生するのに十分な電荷が得られず、その値が変化する状況を作り出すことができます。 攻撃との主な違い ロウハンマー RowHammer を使用すると、隣接するセルから周期的にデータを読み取ることで DRAM メモリ内の個々のビットの内容を変更できますが、Plundervolt を使用すると、計算のためにデータがメモリから既にロードされているときに CPU 内のビットを変更できます。 この機能を使用すると、メモリ内の値は正しいままですが、結果がメモリに書き込まれる前に操作中に歪む可能性があるため、メモリ内のデータに対して SGX で使用される整合性制御および暗号化メカニズムをバイパスできます。

この変更された値が暗号化プロセスの乗算プロセスで使用されると、出力は不正な暗号文で拒否されます。 SGX のハンドラーにアクセスしてデータを暗号化できるため、攻撃者は失敗を引き起こして、出力暗号文の変更に関する統計を蓄積し、数分でエンクレーブに保存されているキーの値を復元できます。 元の入力テキストと正しい出力暗号文はわかっており、キーは変化せず、誤った暗号文の出力は、一部のビットが逆の値に歪められていることを示します。

差分障害分析 (DFA、DFA、 差動故障解析) できる 予測する AES 対称暗号化に使用される可能性のあるキーを抽出し、異なるセット内のキーの共通部分を分析することで、目的のキーを決定します。

6 個の Intel Core CPU を含む、Intel プロセッサのさまざまなモデルがこの問題の影響を受けます。
第 10 世代、および Xeon E3 の第 XNUMX 世代と第 XNUMX 世代、Intel Xeon Scalable の第 XNUMX 世代と第 XNUMX 世代、Xeon D、
Xeon W と Xeon E。

SGX テクノロジー (ソフトウェアガード拡張機能) 第 XNUMX 世代インテル Core プロセッサー (Skylake) で登場し、 提供 ユーザーレベルのアプリケーションが閉じたメモリ領域 (エンクレーブ) を割り当てることを可能にする一連の命令。その内容は、リング 0、SMM、および VMM モードで実行されているカーネルやコードによっても読み取ったり変更したりすることはできません。 従来のジャンプ関数やレジスタやスタックの操作を使用してエンクレーブ内のコードに制御を移すことは不可能であり、制御をエンクレーブに移すには、権限チェックを実行する特別に作成された新しい命令が使用されます。 この場合、エンクレーブに配置されたコードは、従来の呼び出しメソッドを使用してエンクレーブ内の関数にアクセスし、特別な命令を使用して外部関数を呼び出すことができます。 エンクレーブ メモリ暗号化は、DRAM モジュールへの接続などのハードウェア攻撃から保護するために使用されます。

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

コメントを追加します