Intel SGX を攻撃して機密データを抽出したり、エンクレーブ内でコードを実行したりする

人民解放軍国防科学技術大学、シンガポール国立大学、チューリッヒ工科大学の研究者らは、孤立した飛び地 Intel SGX (Software Guard eXtensions) を攻撃する新しい方法を開発しました。 この攻撃は SmashEx と呼ばれ、Intel SGX のランタイム コンポーネントの動作中に例外状況を処理する際の再入の問題によって引き起こされます。 提案された攻撃方法では、オペレーティング システムを制御できる場合、エンクレーブにある機密データを特定したり、エンクレーブのメモリへのコードのコピーとその実行を組織したりすることが可能になります。

エクスプロイト プロトタイプは、Intel SGX SDK (CVE-2021-0186) および Microsoft Open Enclave (CVE-2021-33767) に基づいたランタイムを備えたエンクレーブ用に準備されています。 最初のケースでは、HTTPS の Web サーバーで使用される RSA キーを抽出する機能が実証され、2.13 番目のケースでは、エンクレーブ内で実行されている cURL ユーティリティによって取得されたコンテンツを特定することができました。 この脆弱性は、Intel SGX SDK 0.17.1 および Open Enclave XNUMX のリリースでプログラム的にすでに解決されています。 この脆弱性は、Intel SGX SDK と Microsoft Open Enclave に加えて、Google Asylo SDK、EdgelessRT、Apache Teaclave、Rust SGX SDK、SGX-LKL、CoSMIX、および Veracruz にも発生します。

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

Intel SGX を攻撃して機密データを抽出したり、エンクレーブ内でコードを実行したりする

問題は、SGX テクノロジにより、オペレーティング システムがハードウェア例外をスローしてエンクレーブを中止できること、およびエンクレーブがそのような例外をアトミックに処理するためのプリミティブを適切に実装していないことです。 オペレーティング システムのカーネルや通常のアプリケーションとは異なり、エンクレーブ内のコードは、非同期にスローされた例外を処理するときにアトミック アクションを編成するためのプリミティブにアクセスできません。 指定されたアトミック プリミティブがない場合、エンクレーブがいつでも中断され、エンクレーブがクリティカル セクションを実行中で安全でない状態 (たとえば、CPU レジスタが保存/復元されていないとき) にある場合でも、実行に戻ることができます。

Intel SGX を攻撃して機密データを抽出したり、エンクレーブ内でコードを実行したりする

通常の動作では、SGX テクノロジにより、構成可能なハードウェア例外によってエンクレーブの実行が中断されることが許可されます。 この機能により、エンクレーブ ランタイム環境でエンクレーブ内の例外処理または信号処理を実装できるようになりますが、リエントラント エラーが発生する可能性もあります。 SmashEx 攻撃は、例外ハンドラーを再呼び出しする状況が適切に処理されないことによる SDK の欠陥を悪用することに基づいています。 この脆弱性を悪用するには、攻撃者がエンクレーブの実行を中断できなければならないことが重要です。 システム環境の動作を制御する必要があります。

例外をスローした後、攻撃者は短い時間枠を受け取り、その間に入力パラメータの操作によって実行スレッドを傍受できます。 特に、システム (エンクレーブの外部の環境) にアクセスできる場合は、エンクレーブエントリ命令 (EENTER) の実行直後に新しい例外を作成できます。これにより、エンクレーブのスタックがセットアップされた段階で制御がシステムに戻ります。エンクレーブはまだ完成しておらず、CPU レジスタの状態も保存されます。

その後、システムは制御をエンクレーブに戻すことができますが、割り込み時にエンクレーブのスタックが構成されていなかったため、エンクレーブはシステム メモリ内に常駐するスタックを使用して実行され、リターン指向プログラミング (ROP) を使用するために使用できます。 ) 悪用テクニック、指向プログラミング)。 ROP 手法を使用する場合、攻撃者は自分のコードをメモリに配置しようとせず、ロードされたライブラリですでに利用可能な機械命令の一部を操作し、コントロールリターン命令で終わります (通常、これらはライブラリ関数の終わりです)。 。 このエクスプロイトの作業は、結局のところ、同様のブロック (「ガジェット」) への一連の呼び出しを構築して、目的の機能を取得することになります。

Intel SGX を攻撃して機密データを抽出したり、エンクレーブ内でコードを実行したりする
Intel SGX を攻撃して機密データを抽出したり、エンクレーブ内でコードを実行したりする


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

コメントを追加します