Jedynymi katalogami z upoważnieniem FHS, które są zwykle zapisywane na całym świecie, są /tmp
i /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/shm
jako 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/mail
lub /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 /tmp
katalogó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
/var/lock
→/run/lock
/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
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
źródło
fopen
zastę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, jakln -s /bin/bash /tmp/shadow
przed pierwszym wierszem, aby nadpisany został niezbędny systemowy plik binarny.Aby znaleźć katalogi do zapisu na świecie, możesz użyć
W przypadku plików zmień typ na
f
W przypadku dowiązań symbolicznych wpisz
l
Aby ustawić lepki bit:
źródło