Saya mengatur lingkungan saya untuk membuat dump inti dari segala sesuatu yang macet, namun ketika saya menjalankan program dengan SUID yang ditetapkan pada pengguna yang berbeda dari pengguna yang menjalankannya tidak membuat dump inti. Adakah alasan mengapa hal ini terjadi? Saya tidak dapat menemukannya di mana pun di web, saya pikir ini semacam fitur keamanan tetapi saya ingin menonaktifkannya ...
Masalah:
$ cd /tmp
$ cat /etc/security/limits.conf | grep core
* - core unlimited
root - core unlimited
$ ls -l ohai
-rwsr-sr-x 1 root root 578988 2011-06-23 23:29 ohai
$ ./ohai
...
Floating point exception
$ sudo -i
# ./ohai
...
Floating point exception (core dumped)
# chmod -s ohai
# exit
$ ./ohai
...
Floating point exception (core dumped)
Sunting: Untuk membuatnya bekerja seaman mungkin, sekarang saya memiliki skrip berikut untuk mengatur lingkungan:
mkdir -p /var/coredumps/
chown root:adm /var/coredumps/
chmod 772 /var/coredumps/
echo "kernel.core_pattern = /var/coredumps/core.%u.%e.%p" >> /etc/sysctrl.conf
echo "fs.suid_dumpable = 2" >> /etc/sysctl.conf
echo -e "*\t-\tcore\tunlimited" >> /etc/security/limits.conf
echo -e "root\t-\tcore\tunlimited" >> /etc/security/limits.conf
Sekarang yang perlu dilakukan adalah menambahkan ACL ke / var / coredumps sehingga pengguna hanya dapat menambahkan file dan tidak memodifikasi atau membacanya lagi. Satu-satunya perampingan adalah bahwa saya masih akan memiliki masalah dengan aplikasi chroot yang membutuhkan bind mount
atau sesuatu seperti itu.
fs.suid_dumpable
itu. Bisakah Anda mencoba pengaturanfs.suid_dumpable
tanpa memanggilpctrl
program? Mungkin saya salah memahami dokumentasi dan Anda mendapatkan inti tetapi dimiliki oleh root dalam kasus ini.Core dump berisi salinan semua yang ada di memori pada saat kesalahan. Jika program ini menjalankan suid, itu berarti ia membutuhkan akses ke sesuatu yang Anda, sebagai pengguna, tidak memiliki akses. Jika program mendapatkan informasi itu kemudian membuang inti, Anda akan dapat membaca informasi istimewa itu.
Dari contoh Anda di atas, tampaknya Anda bisa mendapatkan dump inti saat dijalankan sebagai root atau jika Anda menghapus eskalasi privilege.
Meskipun mungkin berguna (hanya untuk pengembang metode) untuk memiliki akses mudah ke coredump dari program setuid, ini adalah lubang keamanan, dan harus dibiarkan di tempatnya.
sumber
Saya memutuskan bahwa saya juga akan membagikan use case saya, sampai saya melupakannya. Mungkin berguna juga untuk masa depan saya karena saya memecahkan masalah yang sama bulan lalu dan butuh terlalu banyak waktu untuk mengetahuinya sekali lagi. Baik. sebenarnya bukan core-dump, tetapi stack trace yang juga berguna.
Masalah: Tidak tahu apa yang sedang terjadi di sana:
Solusi: Pindahkan bit suid dari
sudo
kevalgrind
berfungsi dengan baik:Jika debuginfo diinstal, backtrace yang bagus akan dihapus.
sumber
valgrind
apa pun yang mereka inginkan.Jangan lakukan ini , ini adalah risiko keamanan yang sangat besar .