Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Ciekawy atak RCE w emulatorze terminala iTerm2

04 lipca 2024, 19:13 | W biegu | 0 komentarzy

Nowoczesne emulatory terminali oferują rozbudowane funkcje, znacznie wykraczające poza pierwotną rolę obsługi tekstowych interfejsów. Użytkownicy oczekują kolorowania zwracanych informacji, zmiany stylu czy też dźwiękowych powiadomień (no dobra, pewnie terminal bell jest u większości wyłączony). Obsługa tych funkcji odbywa się przy pomocy tzw. sekwencji ucieczki (ang. escape sequences).

Zaskakujący może być fakt, że terminale mogą obsługiwać generowanie hiperłączy (zob. OSC 8). Dla emulatora kompatybilnego z OSC 8, określona sekwencja będzie wyglądała jak na obrazku. Jak się okazało, może to prowadzić do powstania różnych podatności.

Sekwencje ucieczki pozwalają też na ustawienie, bądź przesyłanie na standardowe wejście, tytułu okna uruchomionego terminala. Z tych dwóch “gadżetów” korzysta exploit pozwalający na wykonanie dowolnego polecenia w kontekście użytkownika korzystającego z terminala. Aby tego dokonać, atakujący musi mieć możliwość preparowania danych, które zostaną następnie wyświetlone w terminalu przez użytkownika. Można tego dokonać, np. wykorzystując logi aplikacji. 

Użytkownik vin01 zauważył, że bardzo popularny emulator terminala na MacOS – iTerm2 oraz jego domyślna integracja z pomocnym narzędziem do obsługi wielu programów w jednym oknie terminala, jakim jest tmux, pozwala na przemycenie znaków nowej linii do stdin. Stąd prosta droga do wykorzystania podatności. Eksploit ustawia nazwę okna w taki sposób, aby zawierała ona komendę, która zostanie wstrzyknięta, a następnie odczytuje i przekierowuje na standardowe wejście tak ustawioną wartość. Zaproponowany proof of concept prezentuje się następująco i uruchamia (a jakże) kalkulator:

\033]2;s&open -aCalculator&\a\033[21t \x1bP1000p%session-changed s
(źródło)

Aby wyzwolić wykonanie złośliwego kodu, wystarczy wykonać, zdawałoby się bezpieczne, polecenie cat <plik zawierający payload>.

Znalezisko składa się z dwóch opisanych wyżej elementów. Pierwszy – CVE-2024-38395 dotyczy błędu, który powoduje, że ustawienie “Terminal may report window title” jest ignorowane i pozwala na odczytanie nazwy okna terminala. Drugi element to wspomniana wyżej integracja z tmuxem, otrzymała identyfikator CVE-2024-38396.

Podatności zostały naprawione w iTerm2 w wersji 3.5.2 – użytkowników zachęcamy do aktualizacji. Pokazana ścieżka wykonania dowolnego kodu wskazuje na to, że należy podejść z dużą ostrożnością do ustawień pozwalających na zwrócenie przez terminal, z pozoru mało istotnego szczegółu, jakim jest nazwa okna. Zwłaszcza, że jedyne co musi zrobić ofiara to wyświetlić złośliwy kod, np. wykorzystując polecenie cat czy tail podczas przeglądania logów. 

~fc

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz