1

ARM の CPU 仮想化に関する興味深い情報を見つけたので、それについてもっと理解するのを手伝ってくれないかと思っています。

基本的に、SierraWare と呼ばれる会社の人々は、SierraTEE呼ばれる ARM セキュア モード OS を開発しました。これは、非セキュア モードで実行されている Linux/Android などのゲスト OS を仮想化しセキュリティ拡張機能のみを必要とします。彼らのプレゼンテーション ドキュメントの 1 つからの情報が私の注意を引きました。具体的には、この PDF http://www.sierraware.com/sierraware_tee_hypervisor_overview.pdfの19 ページで、彼らは次のように述べています。

ルートキットとカーネル ハックの整合性チェック:

  • Syscall 割り込みと割り込みハンドラを監視します。これにより、コア syscall が改ざんされないことが保証されます。

Syscall割り込み」によって、 SVC(=古いSWI)命令の実行を理解しています(間違っている場合は修正してください)が、「監視」によって、リアルタイムの監視なる可能性があるため、よくわかりません。 -時間の監視または特定のイベントの監視。私の考えでは、SVC ハンドラーを監視して、次のいずれかで改ざんを防止できます。

  1. SVC ハンドラーを時々検査します (IRQ と FIQ を監視モードにルーティングできるため、タイマー割り込みなど) - PatchGuard のようなアプローチはあまり役に立ちません。
  2. SVC 命令の実行時に SVC ハンドラを検査する(=特定のイベントの監視)
  3. トラップSVC ハンドラメモリ領域の書き込みアクセス (=リアルタイム監視)

アプローチ 2に関して:非セキュア SVC 命令の実行をセキュア モードからトラップすることは可能でしょうか?

アプローチ 3に関して: Security Extensions のみを使用して、非セキュアなメモリ領域の書き込みをフックすることは可能でしょうか?

よろしくお願いします

4

1 に答える 1

0

ここでの「監視」は、セキュリティ拡張機能によって追加された新しいモードである監視モードを指す場合があります。

私はセキュリティ拡張機能にあまり詳しくありませんが、特定のメモリ領域をセキュアとしてマークすることが可能であるべきだと思います。これにより、それらへのアクセスがモニター モード トラップになり、アクセスを処理して非セキュア コードを再開できるようになります。実行。

ただし、ARM ARM (B1.8.7 非同期例外動作の概要) でこの通知を見つけました。

セキュリティ拡張機能を含み、仮想化拡張機能を含まない実装では、次の構成により、非セキュア状態がセキュア状態へのサービスを拒否できます。したがって、ARM は、可能な限り、これらの構成を使用しないことをお勧めします。

  • SCR.IRQ を 1 に設定します。この構成では、非セキュア PL1 ソフトウェアが CPSR.I を 1 に設定し、必要な IRQ の監視モードへのルーティングを拒否できます。

  • SCR.FIQ が 1 に設定されている場合、SCR.FW を 1 に設定します。この構成では、非セキュア PL1 ソフトウェアが CPSR.F を 1 に設定し、必要な FIQ の監視モードへのルーティングを拒否できます。

仮想化拡張機能によって導入された変更により、これらの可能性のあるサービス拒否が取り除かれます。

したがって、Security Extensions だけで完全な仮想化を実現することは不可能に思えます。

于 2014-03-11T11:29:33.320 に答える