Linux権限UID 0およびリング0

Linux権限UID 0およびリング0

私はコンピュータセキュリティテストを準備していますが、次のサンプル質問を理解するのが困難です。

'x86のリング0で実行することとLinuxでUID 0で実行することの違いを説明してください。 1つは達成できますが、他では達成できない機能の例を見てください。'

私が知っているのは、x86のリング0が最も特権の高いオペレーティングシステムレベルで、カーネルコードがリング0で実行されることです。 UID 0はLinuxスーパーユーザーであり、デフォルトで何でも実行できます。現在、これらの概念を理解しているので、この質問にどのように答えるべきかわかりません。

これは課題の質問や私が採点する内容ではなく、単に学習資料にすぎないことに注意してください。

答え1

あなたの理解は正しいです。 「リング0」は、プロセッサのカーネルモードを表すx86用語である。 「リング 0 で実行」は「カーネルコード」を意味します。

セキュリティに関して、プロセス(UIDの下で)が実行できるすべての操作はカーネルで実行できます。ファイルを開くなどの一部の操作は、カーネルコードで実行するのは非常に不便ですが、可能です。

一方、一般的な状況では、UID 0でコードを実行できる場合は、カーネルモジュールをロードしてカーネルコードを実行できます。したがって、一般的な構成では、UID 0とカーネルレベルの間にセキュリティバリアはありません。ただし、プロセスで実行されるコードには、プロセッサユーザーモードの制限がまだ適用されます。つまり、周辺機器(ディスク、ネットワークなどを含む)へのすべてのアクセスはまだシステムコールを受ける必要があります。コンピュータは、強力ではないUID 0を持つように設定できます。たとえば、次のようになります。

  • カーネルモジュールのロードを無効にします。
  • 使うセキュリティフレームワーク例えばSELinuxプロセスから権限を削除する:UID 0が必ずしも勝つわけではありません。たとえば、ゲストアカウントはUID 0で作成できますが、正しいSELinuxポリシーを使用するとデフォルトでは権限がありません。
  • UID 0インチユーザーネームスペース名前空間作成者の権限のみを持ちます。

関連情報