CPU および一部の既存のプロセッサは、マイクロコード アップデートを介して、Asynchronous EXit (AEX) 通知メカニズムと呼ばれる新しい機能をサポートし、Software Guard Extensions (SGX) エンクレーブ セキュリティを支援します。この Intel AEX Notify サポートを対応プロセッサーに実装するための Linux カーネルのパッチは保留中です。

Intel の Asynchronous EXit (AEX) 通知メカニズムにより、SGX エンクレーブは AEX イベントの後にハンドラーを実行できます。これらのハンドラーは、正確なエンクレーブ実行制御のための攻撃フレームワークとして SGX-Step を緩和するなどの目的で使用できます。

保留中の Linux パッチにより、AEX Notify のサポートが今後のプロセッサ (おそらく Sapphire Rapids) と、マイクロコードの更新による一部の既存のプロセッサで検出されることが確認されています。

このパッチ TIP の x86/sgx ブランチでは、AEX Notify とカーネル側の作業を要約しています:

==AEX Notify Background==

“Intel Architecture Instruction Set Extensions and Future Features-Version 45」が出ました。新しい章があります:

Asynchronous Enclave Exit Notify and the EDECCSSA User Leaf Function.

エンクレーブの終了は、同期的かつ合意に基づく (EEXIT など) か、非同期 (割り込みまたは障害時) のいずれかです。非同期のものは、シングル ステップのエンクレーブに悪用される可能性があり、その上に他のいたずらなものを構築できます。

AEX Notify は、マイクロコードの更新により、今後のプロセッサと一部の古いプロセッサの両方で利用できるようになります。

==問題==

ハードウェアが内部で保存/復元を行うため、現在、これらの攻撃はエンクレーブに対して完全に不透明です。 Asynchronous Enclave Exit Notify (AEX Notify) メカニズムは、これらの種類の攻撃にさらされる可能性を検出して軽減する機能をエンクレーブに提供します。

==解決策==

AEX 通知の新しい属性値を定義します。属性がリストの予約済み属性からクリアされていることを確認してください。個々の属性のオープン コード リストに追加する代わりに、特権 (デフォルトで許可されていない) および非特権 (デフォルトで許可されている) 属性の名前付きリストを追加します。 AEX 通知属性を非特権属性として追加します。これにより、カーネルが設定されたエンクレーブを拒否しなくなります。

Intel のドキュメントを参照してください。
現在 TIP の x86/sgx にあるパッチは、セキュア エンクレーブが AEX Notify を使用できるようにするためのサポートを追加します。 個別のパッチまた、Intel から EDECCSSA ユーザー リーフ機能を KVM ゲストに公開します。現在 TIP x86 領域に到達しているため、コードは Linux 6.2 のマージ ウィンドウにマージされることが予想されます。また、このより安全な SGX エンクレーブ機能を取得するのに十分重要であると見なされた場合、セキュリティ関連のコードが Linux 6.1 に着陸することさえ試みられる可能性があることを考えると、エンクレーブ攻撃の防止に役立ちます。

Categories: IT Info