Lenovoファームウェアのため ThinkPwn バグ特権と呼び出し音を理解しようとしています。
カーネルがリング0で、SMM(システム管理モード)がリング-2の場合、リング-1の間に何があるのでしょうか。
最近よく目にする「リング」の命名法(0〜3)は、x86保護モードの設計の一部として、セグメントセレクターの要求された特権レベルフィールドから始まります。
昔は、セグメントと呼ばれるメモリ空間の排他的なセクションを作成することが可能でした。 「リアルモード」では、20ビットのアドレス可能なメモリしかなかったため、これが必要でした。プロテクトモードが登場しても、セグメンテーションだけでなく特権レベルも提供されていました。レベル0〜2は「スーパーバイザー」レベルであり、ほとんどのことを実行できます。リング1-2は特権命令を実行できませんが、これが唯一の実際の制限です。それ以外の場合は、リング0と同じ特権が与えられます。
一方、リング3は「ユーザーモード」です。セグメントセレクターがこのリングを指すように設定している場合、特権CPUまたはメモリアクセスを必要とする操作を実行するには、システムコールインターフェイスを介してカーネルの助けが必要です。
最近では、64ビットx86ではセグメンテーションを使用しないことがほとんど必要です。ただし、セグメントセレクタは引き続き存在します。すべてのセグメントが重複し、アドレス空間全体をカバーします。
したがって、ring 0-3の本来の目的は、ユーザーモードコードとカーネルの間の特権を分離し、ユーザーモードコードがシステム制御構造全体を歩くのを停止することでした。
その後、仮想化はx86上のものとなり、Intel/AMDは仮想化のためにハードウェアサポートを追加することを決定しました。これには、仮想マシンを定義するいくつかの制御構造(VMCSと呼ばれる)をセットアップしてvmenter
を呼び出し、vmexit
を処理するためのスーパーバイザ(ハイパーバイザ)コードが必要です。つまり、仮想マシンが支援を必要とする条件ハイパーバイザーから。
このコードは「リング-1」と呼ばれます。そのような実際の特権レベルはありませんが、システムへのリング0アクセスがあると信じている複数のカーネルをホストできるため、理にかなっています。
システム管理モードは、特別な指示がある別の獣です。ファームウェア(BIOS)は、システム管理割り込みを処理するSMMハンドラーをセットアップします-ファームウェアに通知したい内容に応じて構成できます。これらのイベントがトリガーされると、OS(またはハイパーバイザー)が一時停止され、特別なアドレス空間に入ります。この領域は、同じプロセッサ上で実行されている間、OS自体からは見えないはずです。したがって、「リング-2」。これは、ハイパーバイザーよりも特権が多いためです。
また、Intel MEまたはAMDのPSPに関連して、ここで言及されている「リング-3」も聞こえます。これは、プライマリシステムに対して何でも実行できる別のファームウェア(IntelはARC SoCプロセッサを使用していると考えています)を実行する2番目のプロセッサです。表面的には、これはハードウェアタイプの機能のIPMI /リモート管理を提供することです。メインシステムの電源がオンになっているかどうかに関係なく、ハードウェアに電力が供給されているときはいつでも実行できます。その目的は、メインシステムの電源をオンにすることです。
セキュリティの観点から見ると、自分が入り込めるリングが低いほど、自分自身を検出できなくなる可能性があります。ブルーピルの研究は、OSが本当にVMで実行されているという事実をOSから隠すことに関するものでした。その後、SMMの永続性に関する研究が行われました。たとえば、SMMの永続性により、ハードディスクを完全にワイプして再インストールする場合でも、マルウェアを再インストールできる可能性があります。 Intel MEは、常時オンの永続的なネットワークチップを開いて、メインターゲットにマルウェアをインストールする可能性があります。
ここではIntelチップを使用していますが、他のプラットフォームでは動作が異なることに注意してください。たとえば、ARMチップには、特に「スーパーバイザ」モードと「ユーザー」モードがあります。
リング-1はハイパーバイザーであり、Intel VT-x( "Vanderpool") [Wikipedia] またはAMD-V( "Pacifica") [Wikipedia] として実装されています。