rootユーザーにカーネルコードへの読み取り/書き込みアクセス権がありますか?

rootユーザーにカーネルコードへの読み取り/書き込みアクセス権がありますか?

rootユーザーがメモリからカーネルコードの一部を読み書きできるかどうかを知りたいです。できますか?

答え1

はい、通常、rootユーザーはカーネルコードを間接的に変更するのに十分な権限を持っています。ただし、適切なセキュリティ対策が考慮されているという前提で、いくつかのメカニズムを使用してこれを制限することができます。権限を持つ root ユーザーがカーネルコードを変更できる方法のおおよそのリスト:

  • ioperm()syscallはI iopl()/ Oポート権限を設定できます。

  • もちろん、ブートディレクトリ(カーネルを含む)のファイルは変更できます。

  • /dev/mem/dev/kmem文字デバイスは/dev/port直接メモリアクセスを許可します。

  • さまざまなMSRを使用して、低レベルのCPU動作を変更することでセキュリティに違反する可能性があります。

  • このkexec機能を使用して新しいカーネルから起動できます。

  • ACPIテーブルは、カーネルでAMLを実行してルートによって実行時にロードできます。

  • ACPIをcustom_method悪用してメモリに直接書き込むことができます。

  • モジュール署名が無効になっている場合は、ルートとしてカーネルモジュールをロードできます。

  • kprobes などのデバッグ機能はカーネルの動作を変更することができます。

強化されたカーネル(適切に構成されているなど)を使用して軽減を実行できます。サイバーセキュリティ、または以下を使用してカーネルロックパッチする内容今上流。もちろん、rootユーザーがカーネルがあるブートローダーやブートパーティションに書き込むのを防ぐことは依然として必要です。

関連情報