Jak przydatne jest montowanie / tmp noexec?

39

Wiele osób (w tym Podręcznik bezpieczeństwa Debiana ) zaleca montaż /tmpz noexec,nodev,nosuidzestawem 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 noexecsą bezużyteczne, z kilku potencjalnych powodów:

  1. Użytkownik może uruchomić /lib/ld-linux.so <binary>, próbując uzyskać ten sam efekt.
  2. 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. debconfWykonywalny katalog tymczasowy) i potencjalna utrata wygody, czy jest to opłacalne zabezpieczenie? Jakie inne dziury znasz, które umożliwiają obejście?

Phil Miller
źródło
1
@neoice: Słyszałem, że aplikacje czasami się psują, jeśli / tmp nie jest wykonywalny. Jednak jeszcze go nie widziałem. Spójrz na TuxGuitar-1.2 ... to się zdarza. Nie uruchomi się, jeśli / tmp nie zostanie zamontowane bez opcji noexec, ponieważ rozpakowuje tam biblioteki, a następnie próbuje je załadować.
Site Recovery Manager VMware uruchamia skrypty z „/ tmp”: Dostosowanie IP kończy się niepowodzeniem podczas przełączania awaryjnego lub testowania przełączania awaryjnego planu odzyskiwania w vCenter Site Recovery Manager (2021083): kb.vmware.com/selfservice/microsites/…
1
Wiem, że narzędzie do kompresji o nazwie snappy upuszcza plik .so w / tmp i nie może działać, jeśli jest zamontowane noexec. (jest domyślnie używany w Cassandrze i Kafce) IMHO jest to powód, aby nie używać zgryźliwych, a nie powód, aby nie montować / tmp noexec
jorfus

Odpowiedzi:

31

Oto argumenty za użytecznością, które do tej pory wymyśliłem:

Nowoczesne jądra naprawiają /lib/ld-linux.sodziurę, dzięki czemu nie będą w stanie mapować stron wykonywalnych z noexecsystemu 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, co noexeczmniejsza prawdopodobieństwo popadnięcia w atak skryptowy (powiedzmy w oknie między ujawnieniem podatności a instalacją łaty).

W związku /tmpz tym montaż jest nadal korzystny z punktu widzenia bezpieczeństwa noexec.

Jak opisano w Debianie bug tracker , wyznaczając APT::ExtractTemplates::TempDirw apt.confdo katalogu, który nie jest noexeci będzie dostępny do korzenia likwidować debconf obawy.

Phil Miller
źródło
Jednak ja nie słyszałem, że aplikacje będą sporadycznie pęknąć / tmp nie jest wykonywalny. Jednak jeszcze go nie widziałem.
neoice
Jak zauważono w podręczniku podanym w pytaniu, robi bałagan ze wstępną konfiguracją pakietu Debconf bez ustawiania alternatywy.
Phil Miller
2
Tak, noexec to bardzo dobra dodatkowa warstwa bezpieczeństwa i nie widziałem, by powodowało to spustoszenie. Instalacja pakietu jest jedyną rzeczą, a nawet to można obejść zgodnie z odpowiedziami tutaj. Jako moje rozwiązanie mam taki alias: alias update = "mount -o exec, remount / tmp && apt-get update && apt-get upgrade && mount -o noexec, remount / tmp"
Janne Pikkarainen
1
Wydaje mi się, że jest to rzadkie, ale istnieją pakiety napisane w celu wykonania czegoś z / tmp poza kontekstem instalacji pakietu (np. Aktualna wersja oprogramowania pośredniego do używania belgijskich elektronicznych kart tożsamości).
Equaeghe
equaeghe: Co to za pakiet? Prawdopodobnie należy to zgłosić jako błąd. Jestem skłonny założyć się, że w sposobie jej używania można znaleźć lukę w zabezpieczeniach.
Phil Miller
7

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 ...

thomasrutter
źródło
6

dodaj następujące elementy do /etc/apt.conf lub, /etc/apt/apt.conf.d/50remount

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};
karmawhore
źródło
6
Zastąpiłem mountprzez /bin/mountna wypadek, gdyby PATH został zmodyfikowany. Nigdy się nie dowiesz.
Lekensteyn,
4

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.

tylerl
źródło
2

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.

  • Może to również zostać zatrzymane przez ograniczenia użytkowników iptables.
  • Może być również zatrzymany przez SELinux.
  • Może również nie zostać zatrzymany z powodu łatwo dostępnego innego exploita.

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:

„Dowiedzieliśmy się, że wrogowie mogą atakować bez uprzedzenia. Mogą też użyć setek szpiegów, aby zatruć żywność. Przestaliśmy więc rozdawać broń naszym żołnierzom”.

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.

Florian Heigl
źródło
1

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.

LSD
źródło
Analiza exploita pod kątem podatności na Sambę, który zostałby zatrzymany przez noexec / tmp: bobao.360.cn/learning/detail/4168.html (zalecane tłumaczenie Google Chrome. Zerwałoby to pierwszy exploit, a także duża część ładunku ...) (W ten sposób możesz złamać wiele popularnych automatycznych exploitów ...). mount -o remount,exec /tmpdziała, gdy trzeba zainstalować rzeczy ... (Tak, obejście jest trywialne, ale wielu atakujących nie przeszkadza ...)
Gert van den Berg