Banyak orang (termasuk Manual Pengamanan Debian ) merekomendasikan pemasangan /tmp
dengan noexec,nodev,nosuid
serangkaian opsi. Ini umumnya disajikan sebagai salah satu elemen dari strategi 'pertahanan-mendalam', dengan mencegah eskalasi serangan yang memungkinkan seseorang menulis file, atau serangan oleh pengguna dengan akun yang sah tetapi tidak ada ruang lain yang dapat ditulis.
Namun, seiring berjalannya waktu, saya menemukan argumen (yang paling menonjol oleh Pengembang Debian / Ubuntu Colin Watson) yang noexec
merupakan ukuran yang tidak berguna, karena beberapa alasan:
- Pengguna dapat berjalan
/lib/ld-linux.so <binary>
dalam upaya untuk mendapatkan efek yang sama. - Pengguna masih dapat menjalankan penerjemah yang disediakan sistem pada skrip yang tidak dapat dijalankan secara langsung
Dengan argumen-argumen ini, kebutuhan potensial untuk konfigurasi lebih lanjut (misalnya debconf
menyukai direktori sementara yang dapat dieksekusi), dan kemungkinan hilangnya kenyamanan, apakah ini langkah keamanan yang bermanfaat? Apa lubang lain yang Anda ketahui yang memungkinkan pengelakan?
Jawaban:
Berikut adalah argumen untuk utilitas yang saya buat sejauh ini:
Kernel modern memperbaiki
/lib/ld-linux.so
lubang, sehingga tidak akan dapat memetakan halaman yang dapat dieksekusi darinoexec
sistem file.Poin penafsir tentu masih menjadi perhatian, meskipun saya pikir kurang satu dari yang mungkin diklaim orang. Alasan yang dapat saya kemukakan adalah bahwa ada banyak kerentanan eskalasi hak istimewa yang bergantung pada pembuatan syscall yang salah bentuk. Tanpa penyerang yang menyediakan biner, akan jauh lebih sulit untuk membuat panggilan jahat. Juga, penafsir naskah harus tidak memiliki hak (saya tahu ini secara historis kadang-kadang tidak menjadi masalah, seperti dengan perl suid), dan karena itu perlu kerentanan mereka sendiri untuk berguna dalam serangan. Tampaknya, dimungkinkan untuk menggunakan Python, setidaknya, untuk menjalankan beberapa eksploitasi.
Banyak eksploitasi 'kalengan' dapat mencoba menulis dan menjalankan executable
/tmp
, dan karenanyanoexec
mengurangi kemungkinan jatuh ke serangan skrip (katakan di jendela antara pengungkapan kerentanan dan instalasi patch).Dengan demikian, masih ada manfaat keamanan untuk pemasangan
/tmp
dengannoexec
.Seperti dijelaskan dalam Debian bug tracker , pengaturan
APT::ExtractTemplates::TempDir
dalamapt.conf
ke direktori yang tidaknoexec
dan dapat diakses oleh akar akan meniadakan kekhawatiran debconf.sumber
Banyak paket Debian membutuhkan / tmp untuk dapat dieksekusi agar paket dapat diinstal. Ini sering ditandai sebagai bug (keparahan 'normal' / 'wishlist'):
https://www.google.com/#q=site:bugs.debian.org+noexec+/tmp
Saya hanya menerima kesalahan ini ketika menginstal kernel yang diperbarui ke cabang stabil hanya hari ini.
Jadi sepertinya Debian (& turunan?) Belum siap untuk / tmp untuk dipasang noexec ...
sumber
tambahkan berikut ini ke /etc/apt.conf, atau, /etc/apt/apt.conf.d/50remount
sumber
mount
oleh/bin/mount
dalam kasus PATH akan diubah. Kau tidak akan pernah tahu.Meskipun ada solusi untuk sebagian besar langkah-langkah keamanan tambahan yang mungkin Anda pilih untuk diterapkan, bahkan langkah-langkah keamanan yang paling mudah dielakkan (seperti memasang / tmp noexec atau menjalankan SSH pada port alternatif) akan menggagalkan serangan otomatis atau skrip yang bergantung pada default agar berfungsi. Ini tidak akan melindungi Anda dari penyerang yang gigih dan berpengetahuan, tetapi lebih dari 99% dari waktu, Anda tidak akan melawan penyerang yang memiliki tekad atau berpengetahuan. Sebaliknya, Anda akan membela diri terhadap skrip serangan otomatis.
sumber
Pertama: Ini mencakup banyak, kasus serangan yang berbeda Mematikannya karena ada beberapa cara yang diketahui di sekitarnya (beberapa di antaranya bahkan diperbaiki) aneh. Penyerang mengunduh kode ke / dev / shm atau / tmp adalah hal yang biasa mereka lakukan.
Pertahanan secara mendalam adalah tentang mengamankan titik arah yang paling umum, masing-masing yang menghentikannya membuat sistem Anda lebih bisa bertahan. Tidak aman. Tetapi itu juga akan memiliki kesempatan . Jika mereka tidak dapat mengambil payload sekunder mereka, itu adalah kesempatan yang cukup baik bagi Anda.
Intinya adalah untuk membuatnya sekeras mudah bisa, dan memotong 99% dari serangan.
Kedua: Ini menghentikan praktik buruk (menjalankan hal-hal dari temp, melakukan instalasi aplikasi utama melalui / tmp alih-alih pengguna tmpdir), meninggalkan data di / tmp. Pemasang khusus biasanya mengerti TMPDIR. Juga: meskipun tidak: waktu pemasangan, sebagai tindakan point-in-time, bukan alasan yang sah untuk mematikan masalah keamanan secara permanen .
Ketiga: Mempertimbangkan ruang nama anonim di / tmp ("fitur"), Anda benar-benar ingin membatasi apa yang diletakkan di sana dan lari dari sana.
Keempat: Kenyamanan bukan merupakan faktor yang relevan dalam hal ini. Dengan asumsi kami menjalankan server untuk uang, dan untuk suatu tujuan: kami bertanggung jawab untuk hal ini. "Oh, saya tidak mengunci / tmp karena saya perlu beberapa menit lagi ketika saya memperbarui perangkat lunak saya tahun depan". Tentunya tidak akan hanya satu hal ini yang berdiri di antara diperas dan baik-baik saja. Alasan yang bagus? Saya kira tidak.
Bagaimana dengan yang ini:
Tunggu apa?
Ada langkah-langkah lain yang membutuhkan lebih banyak usaha, pengalaman dan keberuntungan untuk mengamankan sistem, dan mengetahui orang-orang memiliki uang terbatas, rentang hidup dan juga ingin menghabiskan waktu bersama keluarga mereka: Jangan melewatkan hal-hal yang mudah.
sumber
Ada aplikasi yang membutuhkan / tmp agar dapat dieksekusi untuk menginstal. Pada pekerjaan sebelumnya, sebelum saya sampai di sana admin telah mengatur / tmp noexec, tetapi saya menemukan bahwa paket db2 tidak akan diinstal. Bahkan jika Anda menghapus paket db2 di tempat lain, prosedur instalasi akan menyalin beberapa file ke / tmp dan berharap dapat menjalankannya, yang tentu saja gagal dengan izin yang ditolak. Jika Anda tidak menyadari bahwa sistem file sudah di-mount noexec, itu mungkin sedikit menyesatkan. Itu hanya dapat melanjutkan instalasi setelah saya remounted / tmp tanpa noexec.
Pokoknya, intinya adalah bahwa setidaknya satu produk komersial memerlukan / tmp untuk tidak dipasang noexec, dan mungkin ada yang lain. Saya belum menemukan alasan yang sangat menarik untuk itu. Jika Anda menginginkan keamanan yang lebih baik, saya akan memilih selinux.
sumber
mount -o remount,exec /tmp
bekerja ketika Anda perlu menginstal barang-barang ... (Ya, itu sepele untuk dikerjakan, tetapi banyak penyerang tampaknya tidak mengganggu ...)