Jakie są domyślnie katalogi do zapisu na świecie?


14

Który z tych wspólnych katalogów w standardowym systemie plików Linux domyślnie jest dostępny do zapisu na świecie ?

 /tmp 
 /etc
 /var 
 /proc 
 /bin 
 /boot
 /....
 ....

Dlaczego można je zapisywać na całym świecie? Czy to stanowi zagrożenie dla bezpieczeństwa?

Odpowiedzi:


16

Jedynymi katalogami z upoważnieniem FHS, które są zwykle zapisywane na całym świecie, są /tmpi /var/tmp. W obu przypadkach dzieje się tak, ponieważ są one przeznaczone do przechowywania plików tymczasowych, które mogą być tworzone przez kogokolwiek.

Również /dev/shmjako tmpfs (system plików wspierany przez pamięć RAM) często występuje szybki dostęp do danych średniej wielkości współużytkowanych przez procesy lub po prostu tworzenie plików, które mają zostać zniszczone przy ponownym uruchomieniu.

Mogą istnieć również /var/maillub /var/spool/mail, a czasem inne katalogi buforowania. Służą do tymczasowego przechowywania poczty przed jej przetworzeniem. Nie zawsze można je zapisać na całym świecie, w zależności od używanych narzędzi. Gdy tak, to dlatego, że narzędzia mogą być tam tworzone przez narzędzia użytkownika do przetwarzania przez demony.

Wszystkie te katalogi zwykle mają ustawiony bit lepki ( t), co oznacza, że ​​tylko właściciel pliku lub katalogu może przenosić lub usuwać znajdujące się w nim pliki.

Każdy program działający jak każdy użytkownik może tworzyć pliki w tych katalogach, a program tworzący musi podjąć właściwą decyzję, jeśli chodzi o bezpieczeństwo poszczególnych danych. Nie ma żadnego szczególnego ogólnego problemu z bezpieczeństwem poza tym, że ktoś potencjalnie zapełnia system plików, ale jest duży zakres, w którym program może go pomylić.

Odnotowano pewne kroki w kierunku /tmpkatalogów specyficznych dla usług . Pozwala to uniknąć niektórych potencjalnych błędów, które mogą się pojawić, więc nie jest tak ważne, aby program był wolny od błędów w sposobie korzystania z katalogu.


W swoim systemie możesz znaleźć katalogi do zapisu na świecie dzięki:

find / -maxdepth 3 -type d -perm -777

8

/tmp, /var/tmpi /var/lockdomyślnie są zapisywane na całym świecie. Mogą istnieć dowiązania symboliczne, takie jak /usr/tmp/var/tmp, zapewniające zgodność ze starszymi aplikacjami.

/tmpi /var/tmpdo zapisu na całym świecie, ponieważ są one przeznaczone do wykorzystania przez dowolnego użytkownika do dowolnego tymczasowego przechowywania. /var/lockjest dostępny do zapisu na całym świecie, dzięki czemu każdy proces, działający jak każdy użytkownik, może tworzyć pliki blokady w centralnej lokalizacji.

Czy istnieje zagrożenie bezpieczeństwa? Nie, ale w pewnym sensie tak.

Uprawnienia do wszystkich tych katalogów są 1777, z wiodącym 1jest lepki . Oznacza to, że chociaż każdy może utworzyć plik w tych światowych katalogach, tylko właściciel może usunąć własne pliki (i oczywiście użytkownik root też może).

Możliwe zagrożenie bezpieczeństwa może wynikać z niepewnego utworzenia pliku tymczasowego. Ponieważ te katalogi są bezpłatne dla wszystkich, użytkownicy muszą podjąć środki ostrożności, aby upewnić się, że tworzone przez nich pliki są w rzeczywistości nowymi plikami, zamiast otwierać istniejący plik lub dowiązanie symboliczne, które mogło zostać tam umieszczone przez złośliwego użytkownika. Jeśli pliki są tworzone przy użyciu odpowiednich technik, takich jak open(…, O_EXCL)lub mkstemp(3), wówczas można uniknąć takiego ryzyka.


1
W nowoczesnych systemach jednym z tych dowiązań symbolicznych zgodności jest /var/lock/run/lock
camh

2

/tmp

Jest to ryzykowne, ponieważ musisz dodać dodatkowy kod, aby bezpiecznie z niego korzystać. Oczywiście zostaje to pominięte.

Ostatni przykład podaje Steve Kemp. http://blog.steve.org.uk/sometimes_reading_code_makes_you_scream_.html

./mgmt/tools/SysAPI.cc:  tmp = fopen("/tmp/shadow", "w");
./mgmt/tools/SysAPI.cc:    system("/bin/mv -f /tmp/shadow /etc/shadow");

Jeśli (atakujący) zastąpisz / tmp / shadow przed drugą linią, możesz zastąpić hasło wszystkich. (Wydaje mi się, że atak wymaga utworzenia pliku przed pierwszą linią i uczynienia go plikiem do zapisu na całym świecie).

Systemd na Linuksie pozwala zminimalizować takie podatności poprzez izolację / tmp dla wielu usług systemowych. (Z wyjątkiem tych, które „niewłaściwie wykorzystują / tmp jako lokalizację gniazd IPC i innych podstawowych operacji komunikacyjnych”).

W Fedorze Linux - http://fedoraproject.org/wiki/Features/ServicesPrivateTmp

Wyjaśnienie systemowe - http://0pointer.de/blog/projects/security.html


„Myślę, że atak wymaga utworzenia pliku przed pierwszą linią” - rzeczywiście. Jeśli plik jeszcze nie istnieje, pierwszy wiersz utworzy go jako działający użytkownik (prawdopodobnie root), a inny złośliwy użytkownik nie będzie miał uprawnień do zastąpienia go przed drugim wierszem. Jeśli plik już istnieje, fopenzastępuje go, ale nie resetuje uprawnień, aby złośliwy użytkownik mógł nadal wprowadzać zmiany. Ponadto złośliwy użytkownik mógł zrobić coś takiego, jak ln -s /bin/bash /tmp/shadowprzed pierwszym wierszem, aby nadpisany został niezbędny systemowy plik binarny.
hvd

2

Aby znaleźć katalogi do zapisu na świecie, możesz użyć

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

W przypadku plików zmień typ na f

W przypadku dowiązań symbolicznych wpisz l

Aby ustawić lepki bit:

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print0| xargs -0 chmod +t
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.