web-dev-qa-db-ja.com

悪いプロセスは、ユーザーがsudoとしてコマンドを実行するのを待つことによって、どうやってrootを取得できますか?

これについてのコメント answer の状態:

Linuxデスクトップ全体では、ユーザーとして実行されている不良プロセスに対する保護はほとんどありません。悪いプロセスは、キーボード入力を監視し、ユーザーがSudoとしてコマンドを実行するのを待つだけです。悪いプロセスは現在、ユーザーに知られることなくルートを持っています。

率直に言って、これは私を怖がらせます-私はその印象を受けましたSudo <command>は、そのコマンドを実行するための昇格された権限のみを付与します。この厳格な権限管理の方法により、LinuxはWindowsよりもはるかに安全になりました。 Sudoが「傍受」される可能性があるとは思いませんでした。

「悪いプロセス」は、ルートアクセスを取得するためにキーボードを監視できますか?もしそうなら、それらが別のプロセスに対するものであるとき、プロセスはそれら自身にそれらの許可をどのように与えるでしょうか?考えられる対策とともにこれを行うことができる悪いプロセスの例は本当にありがたいです。

5
Primusa

Sudoは、それを使用して実行するコマンドに昇格された特権のみを付与するのは当然です。

コメンターが言及しているのは、Linuxデスクトップセッションで実行中のプロセスが、知らないうちにそのデスクトップセッションのキーストロークを監視できるということです。したがって、デスクトップでターミナルウィンドウを開いてSudo <some command>と入力し、プロンプトでパスワードを入力すると、悪意のあるプログラムが入力したキーストロークを追跡し、キャプチャしたパスワードを独自のインスタンスに静かに渡す可能性があります。 rootとして好きなコマンドを実行するには、Sudoを使用します。

簡単な(悪意のない)例として、プログラム screenkey は、root権限を必要とせずに、入力したキーを監視できます。また、私はそのグローバルなホットキー(例えば Super キー)ほとんど同じ方法で動作します。

これはかなり怖いですね。考えられる対策については、システムで「不良プロセス」が実行されているかどうかはわかりません。したがって、実際にできることは、次のような予防策だけです。

  • 適切なインターネット衛生を実践します。つまり、インターネットからランダムな信頼できない実行可能ファイルをダウンロードしないでください。
  • 実行ビット(chmod +x)を設定したファイルに注意してください
  • 信頼できない実行ファイルを実行する必要がある場合は、可能な限り低い権限で実行してください。
    (例:Sudo -u nobody <untrusted program><untrusted program>nobodyとして実行します。これはユーザーのX11サーバーにアクセスできないため、キーストロークを監視できません)
4
ArkaneMoose