Sıradan kullanıcılar / etc / passwd'yi okuyabilir, bu bir güvenlik boşluğu mu?


19
ls -l /etc/passwd

verir

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

Böylece sıradan bir kullanıcı dosyayı okuyabilir. Bu bir güvenlik açığı mı?

Yanıtlar:


49

Gerçek şifre karmaları, /etc/shadownormal kullanıcılar tarafından okunamayan saklanır . /etc/passwdsistemin çalışması için tüm kullanıcılar tarafından okunması gereken kullanıcı kimlikleri ve kabukları hakkında diğer bilgileri tutar.


3
Gerçekten değil - tarihsel olarak parolalar / etc / passwd içinde tutuldu - ancak bu kaba-kuvvet eşleştirmesini basitleştirdi - dolayısıyla pam_unix ve benzeri ile / etc / shadon kullanan modern sistemler.
symcbean

4
Modern Linux kullanır /etc/shadow. BSD'ler kullanır /etc/master.passwd. Solaris kullanır /etc/security/passwd. HP-UX kullanır /.secure/etc/passwdve liste uzar ...
Chris S

16

Genellikle, karma parolalar /etc/shadowçoğu Linux sisteminde depolanır :

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

(Onlar saklanır /etc/master.passwdüzerinde BSD sistemleri .)

Kimlik doğrulaması gerçekleştirmesi gereken programların yine de rootayrıcalıklarla çalışması gerekir :

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

setuid rootProgramlardan ve sisteminizdeki tüm karma şifreleri içeren tek bir dosyadan hoşlanmıyorsanız , Openwall TCB PAM modülüyle değiştirebilirsiniz . Bu, her bir kullanıcıya karma parolasını depolamak için kendi dosyasını sağlar - sonuç olarak setuid rootsistemdeki programların sayısı büyük ölçüde azaltılabilir.


13

Parolalar yıllardır saklanmadı /etc/passwd; ad eski, yerel kullanıcı veritabanı olma işlevi kalır ve bu amaçla herkes tarafından okunabilir olmalıdır .


2
okunabilirlik bir zorunluluk değil, bir tasarım kararıdır
Ben Voigt

@Ben: Yani kimsenin başkasına ait dosyaları tanımlayamaması mantıklı mı? Bu gün NSS için yerel mağaza , adına rağmen PAM için değil .
geekosaur

1
Ayrıcalıklı kullanıcıların tüm kullanıcı listesini numaralandırmasına izin vermeden, ayrıcalıklı bir hizmetin uid -> ad çevirisi yapması tamamen mümkündür. Bazı işletim sistemleri bu seçeneği belirler.
Ben Voigt

1
@joechip Geçerli işletim sistemleri kullanıcıları birbirinden gizlemek için tasarlanmamıştır. Tüm kullanıcılar / etc / passwd'den çok daha fazla şekilde numaralandırılabilir. Linux'ta ls -la / home, MacOS X'te ls -la / Kullanıcılar, dir C: \ Windows 7'deki kullanıcılar, Unix sistemlerinde ps -afux. Tasarım seçimini değiştiren Ben Voigt, güvenliği değiştirmeden hayatı zorlaştırıyor.
Magicianeer

1
@Magicianeer - Sadece Windows örneğinin doğru olmadığını söylemek. Kullanıcıları diğer yöntemlerle alabilirsiniz, ancak C: \ users klasörüne baktığınızda yalnızca oturum açmış olan kullanıcılar listelenir; herhangi bir sistem kullanıcısı değil.
burnt_hand

6

Kullanıcıları tanımlayabileceğiniz gibi, bir dereceye kadar. Geçmişte şifrelerini de alabilirsiniz. Ancak, çatlamaya değer bir kullanıcı kimliği root, şifre dosyası olmadan iyi bilinen şeydir.

Şifre dosyası dünyasının okunabilir olması genellikle riskten ağır basar. Dünya tarafından okunabilir olmasa bile, çalışan bir getent passwdkomut güvenlik kazancını geçersiz kılar.

Kök olmayan kullanıcıların başkalarına ait dosyaları tanımlama yeteneği ortadan kalkar. Sahip olunan (passwd dosyasındaki kullanıcı) ve sahipsiz dosyaları (passwd dosyasında olmayan kullanıcı) tanımlayabilmek bir dosya sisteminin içeriğini gözden geçirmede yararlı olabilir. Bunu uygun setuidprogramlarla çözmek mümkün olsa da, bu programlar aracılığıyla büyük bir saldırı vektörü ekleyecektir.

Sonunda bu bir denge meselesidir ve bu durumda dengenin kesinlikle parola dünyasının okunabilir olmasını sağladığını söyleyebilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.