Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Zdalne wykonanie kodu bez konieczności uwierzytelnienia i CVSS 10.0, czyli podatność w ScreenSecure
Cztery dni temu ConnectWise opublikowało notkę oraz wydało łatki na dwie podatności. Informacji tej został nadany najwyższy priorytet, co nie jest niczym niezwykłym w przypadku luki, która otrzymała najwyższą liczbę punktów w skali CVSS, czyli 10.0. Niecodziennie spotyka się błędy bezpieczeństwa o tak wysokim współczynniku, dlatego warto przyjrzeć się technicznym szczegółom. Jeśli jesteście użytkownikami ScreenSecure i jeszcze tego nie zrobiliście, to niezwłocznie wgrajcie najnowszą wersję tego oprogramowania.
ScreenSecure to rozbudowany software implementujący usługę zdalnego pulpitu, ze wsparciem dla transferu plików czy sesji na wiele monitorów. Już sam fakt, że oprogramowanie to służy do zdalnego zarządzania systemami oznacza, że krytyczne z punktu widzenia użytkownika jest bezpieczeństwo tego typu rozwiązań, ponieważ jakiekolwiek błędy mogą mieć poważne konsekwencje. Podatności, o których mowa otrzymały identyfikatory:
- CVE-2024-1709
- CVE-2024-1708
CVE-2024-1709 to podatność pominięcia uwierzytelniania, która umożliwia atakującemu dostęp do skonfigurowanego uprzednio systemu przez błąd w logice programu pozwalający na ponowne skorzystanie z funkcjonalności provisioningu i konfiguracji. Dzięki temu możliwe jest dodanie swojego użytkownika do systemu przez atakującego.
Badacze z Huntress opublikowali post, w którym opisali jak określili, które komponenty oprogramowania są bezpośrednio związane ze ścieżką eksploitacji. Aby opracować swojego PoC-a, wykorzystali bardzo przydatną technikę, która polega na wyszukiwaniu różnic pomiędzy wydaniami oprogramowania w celu określenia, co dokładnie zostało zmodyfikowane (w domyśle – naprawione).
W poprawionej wersji wprowadzono dodatkowe metody sprawdzenia, czy instancja została już skonfigurowana.
Dodatkowo wprowadzono inny sposób obsługi żądań, aby nie wywoływać ścieżki odpowiedzialnej za konfigurację bez wcześniejszego sprawdzenia, czy ta konfiguracja jest wymagana.
Wywołanie konfiguracji przez endpoint SetupWizzard.aspx było możliwe między innymi dzięki funkcji .Neta, która powoduje, że dopisane po dopasowanej ścieżce elementy adresu URL zostają przekazane dalej do aplikacji.
W następnych etapach konfiguracji możliwe jest dodanie użytkownika. Warto podkreślić, że w takim wypadku dotychczasowa konfiguracja, w tym utworzeni użytkownicy, zostanie zastąpiona nową. Atakujący nie musi przechodzić całej ścieżki, która wymaga np. podania kluczy licencyjnych. Wystarczy tylko dodanie użytkownika. Droga do wykonania RCE jest z tego miejsca już bardzo prosta. Korzystając z możliwości dodawania rozszerzeń i wtyczek w ScreenConnect możliwe jest wgranie złośliwego kodu, który zostanie wykonany na podatnym hoście. Przykładowy PoC został udokumentowany na filmie umieszczonym na kanale Johna Hammonda:
Warto zauważyć, że wykonywany kod będzie działał z uprawnieniami NT/SYSTEM, co pozwala na całkowite przejęcie maszyny.
CVE-2024-1708 to druga podatność, która została dokładniej zbadana przez zespół Huntress. Tym razem jest to path traversal, wykorzystujący znaną technikę ZipSlip. Kod obsługujący wypakowanie archiwów zip nie blokował możliwości przejścia w górę drzewa katalogów. Jest on wywoływany tylko w momencie tworzenia i przesyłania wtyczek, co wymaga uprawnień administratora. Z kolei te mogą zostać zagwarantowane przez wykorzystanie wyżej opisanej podatności. Dodanie złośliwej wtyczki do systemu może również doprowadzić do wykonania kodu, chociaż jest to metoda bardziej restrykcyjna i wymaga spełnienia określonych warunków (nie zostały one opisane przez zespół Huntress).
Trzeba przyznać, że przedstawione podatności nie są trudne do eksploitacji, a ich wpływ na atakowany system jest bardzo poważny. Nie pozostaje nic innego jak zalecić szybką aktualizację. Podatność ma potencjał na bycie wykorzystywaną w kampaniach. Huntress podało IOC dla ataków na ScreenConnect wraz z regułami Yara na ww. blogu.
~fc