GNU/Linux >> Belajar Linux >  >> Linux

Kenapa tidak ada dump inti yang dibuat ketika aplikasi memiliki SUID yang disetel?

Memori program setuid mungkin (kemungkinan besar, bahkan) berisi data rahasia. Jadi core dump harus dapat dibaca oleh root saja.

Jika core dump dimiliki oleh root, saya tidak melihat lubang keamanan yang jelas, meskipun kernel harus berhati-hati agar tidak menimpa file yang ada.

Linux menonaktifkan dump inti untuk program setxid. Untuk mengaktifkannya, Anda perlu melakukan setidaknya hal berikut (saya belum memeriksa apakah ini cukup):

  • Aktifkan setuid core dumps secara umum dengan menyetel fs.suid_dumpable sysctl ke 2, mis. dengan echo 2 >/proc/sys/fs/suid_dumpable . (Catatan:2, bukan 1; 1 berarti “Saya sedang men-debug sistem secara keseluruhan dan ingin menghapus semua keamanan”.)
  • Hubungi prctl(PR_SET_DUMPABLE, 1) dari program.

Dump inti berisi salinan semua yang ada di memori pada saat terjadi kesalahan. Jika program berjalan suid, itu berarti program memerlukan akses ke sesuatu yang Anda, sebagai pengguna, tidak dapat mengaksesnya. Jika program mendapatkan informasi tersebut kemudian membuang inti, Anda akan dapat membaca informasi istimewa tersebut.

Dari contoh Anda di atas, tampaknya Anda bisa mendapatkan core dump saat menjalankan sebagai root atau jika Anda menghapus eskalasi hak istimewa.

Meskipun mungkin berguna (untuk pengembang hanya methinks) untuk memiliki akses mudah ke coredump dari program setuid, ini adalah lubang keamanan, dan harus dibiarkan.


Linux
  1. Linux – Suid Tidak Berpengaruh Pada Direktori Dengan Linux?

  2. Bagaimana Cara Mengatur Parameter Saat Pipa Bash Script Ke Bash?

  3. Kenapa Setiap Program Atau Layanan Memiliki Akun Sendiri Di /etc/passwd?

  1. Bagaimana Mengubah Program "membaca" Default?

  2. Cara Membuat File Proc Linux di Program C menggunakan LKM

  3. Cara secara terprogram menyebabkan core dump di C/C++

  1. Bagaimana cara menganalisis file dump inti program dengan GDB ketika memiliki parameter baris perintah?

  2. Bagaimana cara menjalankan program C++ di dalam program C++ lain?

  3. Cara mengatur ID proses di Linux untuk program tertentu