Luka umożliwiająca wstawianie sekwencji ucieczki do terminali innych osób

Odkryto lukę w zabezpieczeniach (CVE-2024-28085) w narzędziu wall dostarczanym w pakiecie util-linux. Jego zadaniem jest wysyłanie wiadomości do terminali, co umożliwia przeprowadzenie ataku na terminale innych użytkowników poprzez manipulację sekwencjami wyjścia. Problem wynika z faktu, że narzędzie wall blokuje użycie sekwencji wyjścia w strumieniu wejściowym, ale nie wykonuje tej operacji dla argumentów wiersza poleceń, co umożliwia atakującemu wykonywanie sekwencji wyjścia w terminalach innych użytkowników.

Na przykład wykonując polecenie 'wall $(printf "\033[33mHI")' możesz wydrukować tekst „HI” na żółto. Stosując sekwencje wyjścia, które umożliwiają przesuwanie wskaźnika, czyszczenie i zastępowanie zawartości ekranu, można symulować wyświetlanie monitu o podanie hasła z poziomu narzędzia sudo w terminalu innego użytkownika. Jeśli użytkownik nie zauważy sztuczki i wprowadzi swoje hasło, pojawi się ono w historii wprowadzania danych jako nieistniejące polecenie (w rzeczywistości użytkownik wprowadzi swoje hasło w wierszu poleceń zamiast polecenia). "\033[3A" // przesuń kursor o 3 linie w górę "\033[K" // usuń poprzednie dane wyjściowe "[sudo] hasło dla użytkownika:" // wyświetl fikcyjny monit sudo "\033[?25l" // ustaw kolor tła, aby ukryć dane wejściowe "\033[38;2;48;10;36m"

Gdy zostanie wyświetlone ostrzeżenie, że wprowadzone polecenie nie zostało znalezione, wiele dystrybucji uruchamia procedurę obsługi /usr/lib/command-not-found, która próbuje zidentyfikować pakiet zawierający brakujące polecenie i podać wskazówkę, czy można je zainstalować . Problem polega na tym, że po uruchomieniu procedury obsługi nieodnalezionej komendy przekazywane jest do niej nieistniejące polecenie jako parametr wiersza poleceń, który jest widoczny podczas przeglądania procesów w systemie (na przykład podczas próby uruchomienia odinstalowanego narzędzia „xsnow”, „/usr” będzie widoczne na liście procesów /lib/command-not-found - xsnow”). W związku z tym osoba atakująca może monitorować uruchomione procesy (na przykład analizując występowanie „/proc/$pid/cmdline” dla przewidywanego numeru PID) i ustalić hasło wprowadzone przez ofiarę w wierszu poleceń.

Aby zmusić użytkownika do podania hasła w odpowiedzi na fałszywy monit sudo, zaproponowano sztuczkę, której istotą jest śledzenie rzeczywistego uruchomienia narzędzia sudo na liście procesów, oczekiwanie na jego zakończenie i natychmiastowe przeprowadzenie ataku przez „ścianę”. Manipulując sekwencjami wyjścia, atakujący może zastąpić komunikat po rzeczywistym wykonaniu polecenia sudo fałszywym monitowaniem o ponowne wprowadzenie hasła. Ofiara może pomyśleć, że popełniła błąd podczas wpisywania hasła i wpisać je po raz drugi, ujawniając hasło w argumentach procedury obsługi „command-not-found”.

Skuteczny atak wymaga ustawienia trybu „mesg” na „y”, który domyślnie jest ustawiony na „y”. Ubuntu, Debian и CentOS/RHEL. Możliwość przeprowadzenia ataku została zademonstrowana w Ubuntu 22.04 w domyślnej konfiguracji podczas korzystania z gnome-terminal. W Debian Atak jest trudny, ponieważ dystrybucja nie ma domyślnie włączonej obsługi „polecenia nie znaleziono”, a CentOSAtak /RHEL nie zadziała, ponieważ narzędzie Wall jest zainstalowane bez flagi setgid i nie ma dostępu do innych terminali. Podczas korzystania z terminala Windows atak można zmodyfikować, aby zmodyfikować zawartość schowka.

Luka w zabezpieczeniach pakietu util-linux pojawiła się w 2013 r. po tym, jak w wersji 2.24 dodano możliwość określenia komunikatu w wierszu poleceń wall, ale zapomniano o zastosowaniu czyszczenia sekwencji ucieczki. Wczorajsza wersja util-linux 2.40 zawierała poprawkę na tę lukę. Warto zauważyć, że podczas próby usunięcia luki w zabezpieczeniach wersji util-linux 2.39 odkryto podobną lukę, która umożliwia podmianę znaków sterujących poprzez manipulację ustawieniami regionalnymi.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster