Pengguna biasa dapat membaca / etc / passwd, apakah ini lubang keamanan?

19
ls -l /etc/passwd

memberi

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd

Jadi pengguna biasa dapat membaca file. Apakah ini lubang keamanan?

Ankur Agarwal
sumber

Jawaban:

49

Hash kata sandi yang sebenarnya disimpan /etc/shadow, yang tidak dapat dibaca oleh pengguna biasa. /etc/passwdmenyimpan informasi lain tentang id dan shell pengguna yang harus dapat dibaca oleh semua pengguna agar sistem berfungsi.

Michael
sumber
3
Tidak juga - secara historis kata sandi disimpan di / etc / passwd - tapi ini membuat pencocokan kasar langsung - maka sistem modern menggunakan / etc / shadon dengan pam_unix dan sejenisnya.
symcbean
4
Penggunaan Linux modern /etc/shadow. Penggunaan BSD /etc/master.passwd. Solaris menggunakan /etc/security/passwd. HP-UX menggunakan /.secure/etc/passwddan daftar berjalan ...
Chris S
16

Biasanya, kata sandi hash disimpan di /etc/shadowsebagian besar sistem Linux:

-rw-r----- 1 root shadow 1349 2011-07-03 03:54 /etc/shadow

(Mereka disimpan di /etc/master.passwddalam sistem BSD .)

Program yang perlu melakukan otentikasi masih perlu dijalankan dengan roothak istimewa:

-rwsr-xr-x 1 root root 42792 2011-02-14 14:13 /usr/bin/passwd

Jika Anda tidak menyukai setuid rootprogram dan satu file tunggal yang berisi semua kata sandi hash pada sistem Anda, Anda dapat menggantinya dengan modul PAM Openwall TCB . Ini memberikan setiap pengguna dengan file mereka sendiri untuk menyimpan kata sandi hash mereka - sebagai akibatnya jumlah setuid rootprogram pada sistem dapat dikurangi secara drastis.

sarnold
sumber
13

Kata sandi belum disimpan /etc/passwdselama bertahun-tahun sekarang; namanya warisan, fungsi menjadi basis data pengguna lokal tetap dan harus dibaca oleh semua untuk tujuan itu.

geekosaurus
sumber
2
keterbacaan dunia adalah keputusan desain, bukan keharusan
Ben Voigt
@ Ben: jadi masuk akal kalau tidak ada yang bisa mengidentifikasi file milik orang lain? Ini toko lokal untuk NSS hari ini, bukan untuk PAM meskipun namanya.
geekosaur
1
Sangat mungkin untuk memiliki layanan istimewa melakukan terjemahan nama ->, tanpa mengizinkan pengguna yang tidak memiliki hak untuk menyebutkan seluruh daftar pengguna. Beberapa OS memilih opsi itu.
Ben Voigt
1
@joechip OS Saat Ini tidak dirancang untuk menyembunyikan pengguna dari satu sama lain. Semua pengguna dapat disebutkan dalam banyak cara lebih dari / etc / passwd. ls -la / home di Linux, ls -la / Users di MacOS X, dir C: \ Users di windows 7, ps -afux di sistem Unix. Mengubah pilihan desain yang disinggung Ben Voigt hanya membuat hidup menjadi sulit tanpa mengubah keamanan.
Pesulap
1
@ Magicianeer - Hanya mengatakan contoh Windows tidak tepat. Anda bisa mendapatkan pengguna melalui metode lain, tetapi melihat folder C: \ users hanya akan mencantumkan pengguna yang telah masuk; tidak ada pengguna sistem.
burnt_hand
6

Sampai batas tertentu, seperti Anda dapat mengidentifikasi pengguna. Di masa lalu Anda juga bisa mengambil kata sandi mereka. Namun, satu userid yang benar-benar layak untuk di-crack adalah rootyang terkenal tanpa file password.

Utilitas agar dunia file kata sandi dapat dibaca umumnya jauh lebih besar daripada risikonya. Bahkan jika itu tidak dapat dibaca dunia, getent passwdperintah yang berfungsi akan membuat keuntungan keamanan batal.

Kemampuan bagi pengguna non-root untuk mengidentifikasi file yang dimiliki oleh orang lain akan hilang. Mampu mengidentifikasi yang dimiliki (pengguna dalam file passwd) dan file yang tidak dimiliki (pengguna tidak dalam file passwd) dapat berguna dalam meninjau konten sistem file. Meskipun mungkin untuk menyelesaikan ini dengan setuidprogram yang sesuai , itu akan menambah vektor serangan besar melalui program-program itu.

Pada akhirnya ini adalah masalah keseimbangan, dan dalam hal ini saya akan mengatakan keseimbangan dengan kuat agar dunia kata sandi dapat dibaca.

BillThor
sumber