Linuxカーネルのセキュリティに関するいくつかの基本的な質問[終了]


8

Linuxカーネルについてはあまり知りませんが、いくつか質問があります。

  1. カーネルメモリをユーザー空間メモリから分離する主な目的は何ですか?ユーザーアプリケーションがカーネルに悪影響を及ぼすことがないようにするには、

  2. ユーザーレベルのアプリケーションがカーネルに制御を移す方法はいくつありますか?私が思いつくことができるものには、(1)システムコールの呼び出し、(2)メモリのカーネルへのマッピング(ただし、mmap()もシステムコールだと思う)、および(3)カーネルモジュールのロード(しかしlsmodだと思います)システムコールも呼び出します)。私は正しいですか?他に見逃した方法はありますか?

  3. カーネルを攻撃する方法はいくつありますか?それらについて簡単な詳細を教えてもらえますか?

  4. ルート権限を取得した場合、それは完全にカーネルを制御しているということですか?つまり、私はカーネルとハードウェアで何でも好きなことができますか?または、まだカーネルのパワーが制限されていますか?

誰かがこれらの質問への答えを理解するのを手伝ってくれると本当にありがたいです。


1
ここに良い質問がいくつかありますが、質問ごとに1つの主要なトピックを含む、より具体的な質問に分割できますか?
カレブ2014

回答:


5

質問にはできるだけ簡潔に回答するように努めます。質問は通常、大学のオペレーティングシステム入門コースで扱われますが、そのようなコースを受講していないと思います。

  1. ユーザースペースプロセスのメモリ分離は、悪意のあるユーザースペースプログラムからカーネルを保護するだけでなく、ユーザースペースプログラムを互いに保護するためにも非常に望ましいです。これは通常、仮想メモリと呼ばれます。また、ページングの実装が容易になります。これは、他の理由でも同様に望ましいです(より単純な断片化、より単純なリンカー/ローダーなど)。

  2. 割り込み(すべてがユーザーレベルのアプリケーションを制御しているわけではありません)。プロセッサをあきらめると、プロセスから「制御」が奪われます(たとえば、waitシステムコールでもあるなど)。カーネル自体が、アプリケーションのスケジュールを解除する場合があります。

  3. それは非常に広い質問です。正しく実装されていないシステムコールを含むカーネルは脆弱です。物理メモリに書き込む機能は別の方法です。不適切に実装された命令から生じる可能性のある他の脆弱性があります(たとえば、Intelプロセッサのsysretの脆弱性)。

  4. ルート権限はカーネル権限と同じではありません。rootユーザーとして実行されているアプリケーションは、依然として仮想メモリを使用しており、システムコールを実行する必要があり、ユーザーレベルのアプリケーションが実行する必要がある他のルールに従う必要があります。

いくつかの回答の詳細を提供してほしい場合は、お知らせください。

誰かがいくつかの回答を改善できる場合は、遠慮なく指摘してください。


お返事ありがとうございます。あなたは「割り込み(すべてがユーザーレベルのアプリケーションを制御しているわけではない)」と述べました。つまり、ソフトウェア割り込みだけがユーザーレベルを制御し、ハードウェア割り込みはそうではありません。それが正しいか?
hebothu 2014

ユーザー空間はカーネル空間に何らかの割り込みを処理させるように何らかの方法で要求する必要があると思います。したがって、カーネルは基本的に依然として割り込みを制御しています。特に、カーネルはまだ割り込みを処理しており、ユーザースペースアプリケーションが割り込みを受け取りたい場合は、割り込みをユーザースペースに渡します。Linux UIOを検索します。
mtahmed 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.