Jeśli masz sesję root w sesji ekranowej (odłączona lub nie, chroniona hasłem lub nie), a Twój screen
plik 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␛l
do strumienia wejściowego powłoki. \ek
to 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[21t
sprawia, ż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 ; t
w 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.
sudo
.