ユーザープロセスがカーネルアドレス空間からメモリを読み取れないのはなぜですか?

ユーザープロセスがカーネルアドレス空間からメモリを読み取れないのはなぜですか?

ユーザープロセスがカーネルアドレス空間にデータを書き込んだり変更したりできない理由は、かなり明白です。しかし、なぜ彼らがデータを読み取ることができないのかわかりません。この場合、分割罠があることを知っていますが、その理由は何ですか?

ユーザープロセスがカーネルアドレス空間のデータのみを読み取ることができる場合、どのような問題が発生しますか?

事前にありがとう

答え1

パスワードを「偶然に」見つけるよりも悪いことはいくつかあります。

カーネル空間を読み取ることができれば、他のプロセスのメモリも読み取れる可能性が高いです。シナリオを検討している場合は、次のようにできます。ただカーネル空間を読み込んだ後でもディスクバッファ、I/Oバッファなどを読み取ることができるので、他のプロセスとのすべてのI/Oを見ることができます。

これは、すべての資格情報、パスワード、および秘密を使用できることを意味します。認証(実行sudoなど)を試み、他のプロセスがどのように機能するかを観察するだけです。プロセスメモリに資格情報があるか、または表示できるI / Oで資格情報を再設定できます(すべての計算は決定的であるため、内容を読み取れなくても他のプロセスの作業を模倣することができます)。 )メモリ)。

したがって、カーネル空間を読み取ることができれば、ルート資格情報を取得できます。その後、すべてを行うことができます。

関連情報