Wiele osób (w tym Podręcznik bezpieczeństwa Debiana ) zaleca montaż /tmp
z noexec,nodev,nosuid
zestawem opcji. Jest to ogólnie przedstawiane jako jeden z elementów strategii „dogłębnej obrony”, zapobiegając eskalacji ataku, który pozwala komuś napisać plik, lub ataku użytkownika z legalnym kontem, ale bez innej dostępnej przestrzeni.
Z biegiem czasu natknąłem się jednak na argumenty (najwyraźniej autorstwa dewelopera Debiana / Ubuntu Colina Watsona), które noexec
są bezużyteczne, z kilku potencjalnych powodów:
- Użytkownik może uruchomić
/lib/ld-linux.so <binary>
, próbując uzyskać ten sam efekt. - Użytkownik może nadal uruchamiać dostarczone przez system interpretery skryptów, których nie można uruchomić bezpośrednio
Biorąc pod uwagę te argumenty, potencjalna potrzeba większej konfiguracji (np. debconf
Wykonywalny katalog tymczasowy) i potencjalna utrata wygody, czy jest to opłacalne zabezpieczenie? Jakie inne dziury znasz, które umożliwiają obejście?
Odpowiedzi:
Oto argumenty za użytecznością, które do tej pory wymyśliłem:
Nowoczesne jądra naprawiają
/lib/ld-linux.so
dziurę, dzięki czemu nie będą w stanie mapować stron wykonywalnych znoexec
systemu plików.Punkt dotyczący tłumaczy z pewnością nadal stanowi problem, choć myślę, że mniej niż ludzie, jak mogą się wydawać. Mogę wymyślić, że istnieje wiele luk w zabezpieczeniach związanych z eskalacją uprawnień, które polegały na wykonywaniu określonych zniekształconych wywołań systemowych. Gdyby atakujący nie dostarczył pliku binarnego, znacznie trudniej byłoby dokonać złych wywołań systemowych. Ponadto, interpretery skryptów powinny być nieuprzywilejowane (wiem, że historycznie czasami tak nie było, na przykład w przypadku suid-perla), a więc potrzebowałyby własnej podatności, aby były przydatne w ataku. Najwyraźniej można używać Pythona przynajmniej do uruchamiania niektórych exploitów.
Wiele „typowych” exploitów może próbować pisać i uruchamiać pliki wykonywalne
/tmp
, conoexec
zmniejsza prawdopodobieństwo popadnięcia w atak skryptowy (powiedzmy w oknie między ujawnieniem podatności a instalacją łaty).W związku
/tmp
z tym montaż jest nadal korzystny z punktu widzenia bezpieczeństwanoexec
.Jak opisano w Debianie bug tracker , wyznaczając
APT::ExtractTemplates::TempDir
wapt.conf
do katalogu, który nie jestnoexec
i będzie dostępny do korzenia likwidować debconf obawy.źródło
Wiele pakietów Debiana wymaga, aby / tmp był wykonywalny, aby pakiet mógł zostać zainstalowany. Są one często oznaczone jako błędy (o „normalnym” / „istotnym znaczeniu”):
https://www.google.com/#q=site:bugs.debian.org+noexec+/tmp
Właśnie ten błąd pojawił się podczas instalowania zaktualizowanego jądra w stabilnej gałęzi już dziś.
Wygląda więc na to, że Debian (i pochodne?) Nie jest gotowy na zamontowanie / tmp noexec ...
źródło
dodaj następujące elementy do /etc/apt.conf lub, /etc/apt/apt.conf.d/50remount
źródło
mount
przez/bin/mount
na wypadek, gdyby PATH został zmodyfikowany. Nigdy się nie dowiesz.Mimo że istnieją obejścia dla większości dodatkowych środków bezpieczeństwa, które możesz wdrożyć, nawet najłatwiejsze do obejścia środki bezpieczeństwa (takie jak montowanie / tmp noexec lub uruchamianie SSH na alternatywnym porcie) udaremnią automatyczne lub skryptowe ataki, które polegają na ustawieniach domyślnych w kolejności funkcjonować. Nie ochroni cię przed zdecydowanym i znającym się na atakowaniu napastnikiem, ale przez ponad 99% czasu nie będziesz w stanie stawić czoła zdecydowanemu lub znającemu się na atakowaniu. Zamiast tego będziesz bronił się przed skryptem automatycznego ataku.
źródło
Po pierwsze: obejmuje wiele różnych przypadków ataku Wyłączanie go, ponieważ istniało kilka znanych sposobów (niektóre z nich nawet naprawione) jest dziwne. Często atakują osoby pobierające kod do / dev / shm lub / tmp.
Głęboka obrona polega na zabezpieczaniu najczęściej spotykanych punktów, każdy, który je zatrzymuje, sprawia, że Twój system jest bardziej przeżywalny. Nie jest bezpieczne. Ale będzie też miał szansę . Jeśli nie mogą pobrać dodatkowego ładunku, jest to całkiem spora szansa.
Chodzi o to, aby go tak mocno, jak łatwo może i wyciąć 99% ataków.
Po drugie: zatrzymuje złe praktyki (uruchamianie rzeczy z temp, wykonywanie dużych instalacji aplikacji przez / tmp zamiast tmpdir użytkownika), pozostawiając dane w / tmp. Niestandardowi instalatorzy zwykle rozumieją TMPDIR Ponadto: nawet jeśli nie: czas instalacji, jako działanie na czas, nie jest ważnym powodem trwałego wyłączenia problemu bezpieczeństwa .
Po trzecie: Biorąc pod uwagę anonimowe przestrzenie nazw w / tmp („funkcja”), naprawdę chcesz ograniczyć to, co tam jest, i uruchomić z tego miejsca.
Po czwarte: Wygoda nie jest tu istotnym czynnikiem. Zakładając, że zarządzamy serwerami dla pieniędzy i w określonym celu: jesteśmy odpowiedzialni za te rzeczy. „Och, nie zablokowałem / tmp, ponieważ potrzebuję jeszcze kilku minut, kiedy będę aktualizować oprogramowanie w przyszłym roku”. Na pewno nie będzie to tylko jedna rzecz, która stoi między szantażowaniem a po prostu byciem w porządku. Świetny powód? Nie wydaje mi się
Co powiesz na ten:
Czekaj, co?
Istnieją inne środki, które wymagają dużo więcej wysiłku, doświadczenia i szczęścia, aby zabezpieczyć system, i wiedząc, że ludzie mają ograniczone pieniądze, długości życia, a także chcieliby spędzać czas z rodziną: Nie pomiń łatwych rzeczy.
źródło
Istnieją aplikacje, które wymagają zainstalowania / tmp. W poprzednim zadaniu, zanim tam dotarłem, administratorzy skonfigurowali / tmp noexec, ale odkryłem, że pakiet db2 nie chce się zainstalować. Nawet jeśli rozpakowujesz pakiet db2 gdzie indziej, procedura instalacji kopiuje niektóre pliki do / tmp i oczekuje, że będzie w stanie go wykonać, co oczywiście nie powiodło się z odmową zgody. Jeśli nie wiesz, że system plików jest zamontowany noexec, może to być nieco mylące. Mogłem kontynuować instalację dopiero po ponownym zamontowaniu / tmp bez noexec.
W każdym razie chodzi o to, że przynajmniej jeden produkt komercyjny wymaga, aby / tmp nie był montowany noexec, i mogą istnieć inne. Nie znalazłem naprawdę ważnego powodu. Jeśli chcesz lepszego bezpieczeństwa, zamiast tego wybrałbym selinux.
źródło
mount -o remount,exec /tmp
działa, gdy trzeba zainstalować rzeczy ... (Tak, obejście jest trywialne, ale wielu atakujących nie przeszkadza ...)