Czy bezpieczne jest pozostawienie powłoki root działającej w odłączonej sesji ekranowej?

20

Jestem ciekawy bezpieczeństwa pozostawiania powłoki root działającej w odłączonej sesji ekranowej. Zazwyczaj nigdy tego nie robię.

Poza potencjalnym zagrożeniem dla mojego konta użytkownika innego niż root (narażone na hasło, złamanie klucza ssh itp.), Czy istnieją inne wektory wejścia do oddzielnej, chronionej hasłem sesji ekranowej, o którą powinienem się martwić, lub może odłączony ekran sesję można uznać za obojętną?

Michael
źródło
To nie jest odpowiedź, ponieważ nie wiem, ale nie sądzę, żeby miało to jakiekolwiek znaczenie między robieniem tego, co powiedziałeś, a pozostawieniem pracy sudo.
phunehehe,
7
@phunehehe Istnieje różnica, ponieważ po zakończeniu zadania sudodezaktywuje się, podczas gdy prawdziwa powłoka root pozostaje otwarta.
Michael

Odpowiedzi:

5

Myślę, że to kwestia bezpieczeństwa, ponieważ „Oprócz możliwości naruszenia bezpieczeństwa konta użytkownika innego niż root” może być dość duża.

Ale są jeszcze inne zwiększone zagrożenia. Na przykład, otworzyłeś się teraz na teoretyczny exploit, który pozwala zmienić uprawnienia w katalogu gniazda ekranu ( /var/run/screenw moim systemie, ale czasami /tmpjest używany). Exploit ten ma teraz ścieżkę do rootowania, czego inaczej by nie zrobił.

sudoma inne zalety, jeśli możesz nauczyć się używać go do każdego polecenia, a nie do robienia sudo su -. Rejestruje działania (które, chyba że logujesz się zdalnie, nie zwiększają znacząco bezpieczeństwa, ale dają ci ślad po tym , co zrobiłeś). Pomaga także zapobiegać wypadkom, wymagając celowej eskalacji dla każdego polecenia, zamiast przełączania się na sesję całkowicie uprzywilejowaną.

mattdm
źródło
1
Chociaż obecnie nie jest znany taki exploit, będę nadal nie pozostawiał otwartych powłok root'a na ekranie. Ryzyko dla konta użytkownika jest wystarczające. Dzięki.
Michael
-1 Jeśli mam exploita, który może zmieniać uprawnienia do plików, nie muszę zhakować działającego ekranu. Z systemem mogę zrobić, co chcę.
Let_Me_Be
@Let_Me_Be - zależy to od tego, jakie uprawnienia do pliku umożliwia zmiana w twoim exploicie . Być może możesz zrobić tylko kilka konkretnych rzeczy w określonych hierarchiach. To nie jest tak daleko idące.
mattdm,
Sam ekran ma dużą powierzchnię ataku. Nie mam pełnego ataku do pokazania , ale są wyraźne słabości.
Gilles „SO- przestań być zły”
popraw mnie, jeśli się mylę, ale aplikacja ekranowa jest połączona z sesją powłoki (bezpośrednio w konsoli systemowej lub poprzez sesję ssh). o ile wiem, nie jest to protokół sieciowy jako taki. dlatego jest tak bezpieczny, jak sesja ssh lub sesja terminalowa. jeśli niektórzy mają dostęp do sesji ssh lub twojej fizycznej maszyny, wszystkie zakłady są wyłączone. jeśli mają wystarczający dostęp, aby uzyskać dostęp do dowolnego wiersza polecenia na dowolnym koncie użytkownika, równie dobrze możesz odrzucić bezpieczeństwo swojego komputera.
niezsynchronizowany
10

Jeśli masz sesję root w sesji ekranowej (odłączona lub nie, chroniona hasłem lub nie), a Twój screenplik wykonywalny nie jest ustawiony na setxid, osoba atakująca, która uzyska twoje uprawnienia, może wykonywać polecenia w tej powłoce. Jeśli nic więcej, mogą to zrobić, śledząc proces ekranu.

Jeśli screen jest ustawiony jako setuid lub setgid, a sesja jest odłączona i chroniona hasłem, to w zasadzie hasło ekranowe wykonuje polecenia w tej powłoce. Jeśli ta zasada obowiązuje, ktoś, kto naruszył twoje konto, musiałby zainstalować trojana i czekać na wpisanie hasła. Jednak powierzchnia ataku (tj. Liczba miejsc, w których może się nie udać z powodu błędu lub błędnej konfiguracji) jest niewygodnie duża. Oprócz podstawowych funkcji bezpieczeństwa systemu ufasz:

  • ekran, aby poprawnie sprawdzić hasło.
  • ekran, aby uniemożliwić dostęp do sesji w inny sposób.
  • ekran, aby poprawnie korzystać z mechanizmów kontroli dostępu do systemu operacyjnego (np. uprawnienia do potoków).
  • jądro do prawidłowego wykonania kontroli bezpieczeństwa ptrace (jest to częste źródło luk w zabezpieczeniach).
  • działająca powłoka nie robi nic głupiego.
  • jakaś inna funkcja, żeby cię nie ugryźć.

„Jakaś inna cecha, żeby cię nie ugryźć”: tak, to jest niejasne. Ale zawsze jest to kwestia bezpieczeństwa. Możesz mieć ochotę odrzucić to jako zwykłe pobożne życzenie, ale czy naprawdę myślałeś o wszystkim? Na przykład…

Tak długo, jak możesz pisać na urządzeniu końcowym, możesz wstrzykiwać dane do danych wejściowych tej powłoki. W obszarze domyślnej konfiguracji ekranu na moim komputerze:

printf '\ekfoo\017bar\e\\' >/dev/pts/33
printf '\e[21t' >/dev/pts/33

To wstawia ␛]lfoobar␛ldo strumienia wejściowego powłoki. \ekto sekwencja kontrolna, która pozwala aplikacji (lub cokolwiek, co może zapisać na urządzeniu końcowym) ustawienie tytułu okna (patrz sekcja „Nazewnictwo okien” w podręczniku ekranowym ) i \e[21tsprawia, że ​​terminal zgłasza swój tytuł na standardowym wejściu aplikacji ( ekran nie dokumentuje tę sekwencję, ale nie wdrożyć go, można go znaleźć pod CSI Ps ; Ps ; Ps ; tw liście sekwencji sterujących xterm w rzeczywistości, przynajmniej pod ekranie 4.0.3, wszystkie znaki sterujące są usuwane z omawianym tytule, więc powłoka czyta. lfoobar(zakładając, że ␛]nie jest związany z poleceniem edycji) i nie ma nowego wiersza. Atakujący nie może faktycznie wykonać polecenia w ten sposób, ale może wypchnąć polecenie takie jakchmod u+s /bin/sh po którym następuje dużo spacji i prawdopodobnie wyglądający monit.

Screen implementuje kilka innych podobnych ryzykownych sekwencji kontrolnych, nie wiem jaka jest ich potencjalna podatność na luki. Ale mam nadzieję, że do tej pory widać, że ochrona oferowana przez hasła sesji ekranu nie jest tak świetna. Dedykowane narzędzie bezpieczeństwa, takie jak sudo, znacznie rzadziej zawiera luki w zabezpieczeniach.

Gilles „SO- przestań być zły”
źródło
+1 Doskonała odpowiedź. Dziękujemy za poświęcenie czasu na wyjaśnienie tego wszystkiego.
Michael
1

Rury utworzone przez ekran są dostępne tylko dla właściciela, dlatego nie powinno to stanowić problemu z bezpieczeństwem.

Zostaw mnie w spokoju
źródło
5
Użyłeś „są” w pierwszej części zdania, gdzie prawdopodobnie miałeś na myśli „powinien być”. Nie przyzwyczajajmy się do robienia założeń.
Shadur
1
Co? Rury utworzone przez screen SĄ dostępne tylko dla właściciela (jeśli nie ręcznie je chmod).
Let_Me_Be