GNU/Linux >> Linux の 問題 >  >> Linux

sudo と .profile/.bashrc は簡単な権限昇格を有効にしますか?

侵害されたアカウントでできることは何でも、攻撃者もできます。

基本的に、これは Linux プロバイダーがユーザー間で分離されているためであり、そうではありません。 同じユーザーとして実行されている個々のプロセス間。特定のユーザーとして実行されているプロセスは、そのユーザーの下で実行されている他のプロセスと同等の機能を持っていると見なされます。

<ブロック引用>

システムの sudo 実行可能ファイルがこの方法で回避できるというのは本当ですか?

はい、他の方法でも同様です。侵害された特権のないアカウントで特権をルートに昇格させると、ルートが侵害されます。 su を使用して root から権限を削除した場合 特権のないアカウントにアクセスすると、root も危険にさらされます!信頼されていないアカウントの権限を安全に昇格させることはできません。 PATH を使用してシステムを悪用することは可能ですが、 、bash プロセス自体をハイジャックしてキー入力を盗聴することも可能です。 noexec で実行を無効にする インタープリター (bash、python、perl など) がまだ実行されるため、さらに役に立ちません。 noexec オプションはセキュリティ機能として設計されたものではありませんし、設計されたこともありません.

攻撃者が sudo の使用をハイジャックする方法の不完全なリスト または su :

  • LD_PRELOAD の使用 親プロセスの変数 (例:bash ).

  • ptrace() で親プロセスをフックする または process_vm_writev() .

  • X11 プロトコルを使用して端末エミュレーターにキーストロークを盗聴または挿入する。

  • 実際の sudo をラップするエイリアスまたは関数の作成

これらについては、別の質問への回答で詳しく説明しました。

<ブロック引用>

デスクトップ Linux システムがデフォルトで、なぜこのように簡単に悪用できるように設定されているのでしょうか?

信頼されていないアカウントの権限を昇格させることは、想定 ではありません する。言うまでもなく、デスクトップ Linux は、一般的な *nix アーキテクチャの壮大な計画に後付けされたものです。これは、同じ悪いアドバイスを絶え間なく繰り返すセキュリティ シアターの失敗であり、Linux 自体のセキュリティ アーキテクチャの失敗ではありません。人々は繰り返し sudo を使うように言います 多くの新しいユーザーが代わりに すべて を実行するため、root の場合 ルートとして、ブラウザでさえ!この場合、sudo を使用することをお勧めします。 .ユーザーがすでにすべてに root を使用しないほど賢い場合、これは有害です。

sudo に注意してください 高度な設定が可能で、特定のコマンドのみを許可するように設計できます。これは本当に輝いているところです。 sudo を設定できます apt-get update の実行のみを許可する root として (パスワードの有無にかかわらず)、それ以外はすべて拒否します。さらに、攻撃者がソフトウェアの更新以外のことを行うことを制限します。

特定のコマンドをルートとしてのみ実行できるように構成したとしても、信頼できないユーザーを介してルートとして実行するように設計されていないプログラムをホワイトリストに登録すると、自分自身を撃つことができることを覚えておくことが重要です。私は誰かがこの方法で VeraCrypt を実行しようとしている実際の例を見て、なぜそれが安全でないのかを説明しました. VeraCrypt は root として安全に実行できるので、sudo を使用しても安全だという考えでした。 信頼されていない特権のないユーザーとしてルートに昇格させます。このアイデアには欠陥があり、些細な権限昇格を許してしまうことが判明しました!

<ブロック引用>

sudo を呼び出すデフォルトの方法は、それが実際にシステムによって提供される実行可能ファイルであることを確認するべきではありませんか (誰も毎回 /usr/bin/sudo と入力することはありません)?

フルパスを入力しても保護されません!先頭に / を含む関数を簡単に作成できます 、実際の実行可能ファイルをオーバーライドします。実行可能ファイルが本物であることを確認し、スニッフィングを無効にしようとしたとしても、悪意のあるプロセスが bash をハイジャックする可能性があります。 sudo とは独立してキーストロークを処理して嗅ぎます であり、その視点からは検出できません。

$ function /usr/bin/sudo { echo 'hijacked!'; }
$ /usr/bin/sudo id
hijacked!
<ブロック引用>

このような環境では、sudo の使用は根本的に安全ではないように思われます。root としてのログインを有効にし、別の TTY でログインする方がよいでしょう。

これは常に ケース。別の TTY にログインしても完全に安全ではないことに注意してください。 SAK (セキュア アテンション キーの組み合わせ) を使用して、正規のログイン セッション (agetty) とやり取りしていることを確認する必要があります。 または logind 、 例えば)。 SAK は、カーネルがリッスンするキーの組み合わせです (したがって、ユーザー空間によって抑圧することはできません)。それを検出すると、現在の TTY のすべてのプロセスを強制終了し、ログイン プロンプトを表示させます。純正で妥協のない TTY に切り替えた場合、プロンプトが消えて再び表示されるだけです。ハイジャックされた TTY を使用している場合、悪意のあるプロセスが強制終了され、正規のログイン プロンプトが表示されます。


Linux
  1. passwd ファイルを使用した権限昇格

  2. sudo で find を安全に使用する

  3. /bin と /usr/bin の違い

  1. Linux:/dev/console 、 /dev/tty 、 /dev/tty0 の違い

  2. 一部の Linux システムでは、mtab でルート ファイルシステムが /dev/<実デバイス ノード> ではなく /dev/root として表示されるのはなぜですか?

  3. 推奨される使用方法に従って、Web サイトは /var/ または /usr/ に配置する必要がありますか?

  1. Linux:/ dev / console、/ dev / tty、/ dev / tty0の違いは?

  2. バイナリを /bin、/sbin、/usr/bin、および /usr/sbin にインストールし、 --prefix および DESTDIR と対話します

  3. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?