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

アプリケーションに SUID が設定されている場合、コア ダンプが作成されないのはなぜですか?

setuid プログラムのメモリには、機密データが含まれている可能性があります (その可能性さえあります)。そのため、コア ダンプは root だけが読み取れるようにする必要があります。

コア ダンプがルートによって所有されている場合、カーネルは既存のファイルを上書きしないように注意する必要がありますが、明らかなセキュリティ ホールは見当たりません。

Linux は setxid プログラムのコア ダンプを無効にします。それらを有効にするには、少なくとも次のことを行う必要があります (これで十分かどうかは確認していません):

  • fs.suid_dumpable を設定して、一般的に setuid コア ダンプを有効にします。 sysctl を 2 にします。 echo 2 >/proc/sys/fs/suid_dumpable で . (注:1 ではなく 2 です。1 は「システム全体をデバッグしていて、すべてのセキュリティを削除したい」という意味です。)
  • prctl(PR_SET_DUMPABLE, 1) に電話する プログラムから。

コア ダンプには、障害発生時にメモリにあったすべてのコピーが含まれています。プログラムが suid を実行している場合、それは、ユーザーとしてアクセスできない何かにアクセスする必要があることを意味します。プログラムがその情報を取得してコア ダンプすると、その特権情報を読み取ることができます。

上記の例から、ルートとして実行している場合、または権限昇格を削除した場合、コア ダンプを取得できるようです。

setuid プログラムからコアダンプに簡単にアクセスできると便利かもしれませんが (開発者のみが考えます)、これはセキュリティ ホールであり、そのままにしておく必要があります。


Linux
  1. BashスクリプトをBashにパイプするときにパラメータを設定する方法は?

  2. 各プログラムまたはサービスが/etc/ passwdに独自のアカウントを持っているのはなぜですか?

  3. デフォルトの「読書」プログラムを変更するにはどうすればよいですか?

  1. C/C++ でプログラムによってコア ダンプを発生させる方法

  2. メイン関数が返したものを取得するにはどうすればよいですか?

  3. 別の C++ プログラム内で C++ プログラムを実行する方法は?

  1. Linux で特定のプログラムのプロセス ID を設定する方法

  2. Linux でプロセスを 1 つの CPU コアに制限する方法は?

  3. コア ダンプ ファイルの場所 (および名前) を設定する方法は?