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 ハンドラーを監視して、次のいずれかで改ざんを防止できます。
- SVC ハンドラーを時々検査します (IRQ と FIQ を監視モードにルーティングできるため、タイマー割り込みなど) - PatchGuard のようなアプローチはあまり役に立ちません。
- SVC 命令の実行時に SVC ハンドラを検査する(=特定のイベントの監視)
- トラップSVC ハンドラメモリ領域の書き込みアクセス (=リアルタイム監視)
アプローチ 2に関して:非セキュア SVC 命令の実行をセキュア モードからトラップすることは可能でしょうか?
アプローチ 3に関して: Security Extensions のみを使用して、非セキュアなメモリ領域の書き込みをフックすることは可能でしょうか?
よろしくお願いします