Niezabezpieczony token Microsoft Teams

Natalia Zębacka
7 min

Vectra AI wydała ostrzeżenie dotyczące nowego ryzyka dla Microsoft Teams. Okazuje się, tokeny uwierzytelniania przechowywane są w niezabezpieczonej formie i mogą łatwo być wykorzystane przez hakerów. Wszystkie wersje desktopowe Teams dla Windows, Mac i Linuksa przechowują tokeny uwierzytelniania jako zwykły tekst, a to może być wykorzystane do kradzieży tożsamości. Choć to wyraźnie niepokojące, reakcja Microsoftu zaskakuje – mimo zgłoszenia uznał, że problem nie spełnia wymagań dotyczących natychmiastowej obsługi.

Nowy sposób obejścia zabezpieczeń Microsoft Teams poprzez przejmowanie tokenów

W sierpniu 2022 r. zespół Vectra Protect zidentyfikował lukę dającą podmiotom które przedarły się do systemu i w rezultacie posiadającym wystarczający lokalny lub zdalny poziom dostępu do systemu plików możliwość kradzieży prawidłowych poświadczeń użytkownika z Microsoft Teams ze względu na ich przechowywanie na dysku w formie zwykłego tekstu. Zarządzanie poświadczeniami w postaci zwykłego tekstu dotyczy wszystkich klientów komercyjnych i GCC Desktop Teams dla systemów Windows, Mac i Linux.

Chociaż kradzież poświadczeń z pamięci masowej jest częstym działaniem po zapewnieniu sobie dostępu do systemu, to obniżenie poprzeczki do zwykłego uprawnienia odczytu plików w celu przejęcia danych dostępowych bardzo rozszerza możliwości przeciwnika, upraszcza jego zadania i jest szczególnie interesujące, gdyż skradzione dane dają możliwość zachowania dostępu z pominięciem utrudnienia w postaci niewygodnego uwierzytelniania wieloczynnikowego (MFA).

REKLAMA

Electron – Zaprzeczenie bezpieczeństwa

Microsoft Teams to aplikacja oparta na Electronie. Zasada działania Electrona polega na tym, że utworzona aplikacja internetowa działa wewnątrz dostosowanej przeglądarki. Jest to bardzo wygodne i sprawia, że ​​programowanie jest szybkie i łatwe. Jednak uruchomienie przeglądarki internetowej w kontekście aplikacji wymaga tradycyjnych danych przeglądarki, takich jak pliki cookie, dane sesji i logi.

Tu właśnie leży źródło problemu, ponieważ Electron nie obsługuje standardowych kontrolek przeglądarki, takich jak szyfrowanie, a lokalizacje plików chronione przez system nie są standardowo obsługiwane przez Electron, muszą zostać efektywnie obsłużone, aby zachować bezpieczeństwo. Zasada działania Electron domyślnie zachęca do tworzenia nadmiernie przejrzystych aplikacji. Ponieważ Electron zaciemnia problem złożoności tworzenia aplikacji, można spokojnie założyć, że niektórzy programiści mogą być nieświadomi konsekwencji swoich decyzji projektowych i często słyszy się, jak analitycy bezpieczeństwa aplikacji narzekają na użycie tego frameworka z powodu krytycznych przeoczeń bezpieczeństwa.

Analiza problemu

Vectra AI zaczęła szukać sposobów na usunięcie wszelkich odniesień do zalogowanych kont. Celem było usunięcie starych kont i zmuszenie aplikacji Teams do działania tak, jakby te konta nie istniały. Wielokrotne próby modyfikacji pliku konfiguracyjnego i plików pierwszego uruchomienia nic nie dały, dopiero przeszukując po UPN użytkownika, eksperci w odpowiedzi otrzymali dwa krytyczne pliki.

Pierwszym z nich był plik ldb z tokenami dostępu w postaci zwykłego tekstu. Po sprawdzeniu ustalono, że były to aktywne tokeny dostępu, a nie przypadkowe zrzuty ostatniego błędu. Tokeny dały dostęp do API programu Outlook i Skype. Ważne jest, aby wiedzieć, że architektura Microsoft Teams jest konglomeratem szerokiej gamy usług M365, które działają w oparciu o Skype, SharePoint i Outlook — to wyjaśnia obecność tych tokenów.

Kolejny plik to baza plików cookies przeglądarki, podobnie jak „Cookies”, na które wyrażamy zgodę na każdej stronie internetowej (dzięki, RODO). Pliki cookie przechowują dane, takie jak informacje o sesji, tagi marketingowe, informacje o koncie, a w niektórych przypadkach tokeny dostępu – aplikacja Teams Desktop w tym miejscu przechowuje również tokeny.

Najlepszym sposobem na odczytanie bazy danych Cookie jest użycie klienta bazy danych sqlite3. Dzięki temu możemy wyodrębnić tylko te wartości, których potrzebujemy. Poniższe zapytanie zwraca nazwę i wartość tokena (nie ma kwerendy).

Specjaliści ds. bezpieczeństwa w Vectra AI sprawdzili każdy token poprzez usługę walidacyjną jwt firmy Microsoft, https://jwt.ms. Każdy znaleziony token był aktywny i działał bez konieczności dodatkowego uwierzytelniania. To uświadomiło im, że początkowy problem związany z koniecznością ponownej instalacji Teams był znacznie mniejszy niż potencjalna możiiwość kradzieży tożsamości wyłaniająca się w Microsoft Teams.

Niebezpieczne konsekwencje

Microsoft przechowuje poświadczenia, aby zapewnić bezproblemową obsługę pojedynczego logowania w aplikacji. Jednak sposób w jaki ta funkcja została zaimplementowana drastycznie obniża poziom bezpieczeństwa.

Każdy, kto zainstaluje i używa klienta Microsoft Teams w tej implementacji, przechowuje niezabezpieczone poświadczenia potrzebne do wykonania dowolnej akcji możliwej za pośrednictwem interfejsu Teams, dostępne nawet gdy aplikacja Teams jest wyłączona. Gdy te tokeny zostaną przejęte przez nieupoważnioną osobę, może ona modyfikować pliki przechowywane na platformie SharePoint, pocztę i kalendarze w Outlook oraz pliki czatu Teams. Atakujący mogą manipulować komunikacją w organizacji poprzez selektywne niszczenie, przechwytywanie wrażliwych danych lub ukierunkowane ataki phishingowe.

Tym, co jest naprawdę przerażające, jest fakt rozprzestrzenionych po całym środowisku tokenów po walidacji MFA – umożliwia to kolejne ataki, które nie wymagają dodatkowych specjalnych uprawnień lub zaawansowanego złośliwego oprogramowania, aby dokonać znacznych szkód wewnętrznych pozostając niewykrytym. Przy wystarczającej liczbie zinfiltrowanych maszyn atakujący mogą w pełni manipulować komunikacją w organizacji.

Jak podkreśla Christian Putz, Country Manager w Vectra AI, w związku z wykrytym zagrożeniem administratorzy powinni traktować Teams jako aplikację o krytycznym znaczeniu i podlegającą podstawowym procedurom bezpieczeństwa i kontroluj listy ACL.

– Modyfikacja w celu rozszerzenia dostępu do odczytu plików poza upoważnionym użytkownikiem, skutecznie narazi jego dane uwierzytelniające na złośliwe działania opisane powyżej. Nawet gdy już Microsoft zaktualizuje aplikację, nadal bardzo ważne jest zapewnienie modelu wysokiej kontroli, aby zapobiec instalacji nieautoryzowanej wersji aplikacji Teams, botów, wtyczek itp. mówi. 

Jeśli szybkie wprowadzanie bazowych procedur bezpieczeństwa i monitorowania jest niepraktyczne, można też rozważyć użycie internetowego klienta Teams w Microsoft Edge, który wykorzystuje wiele zabezpieczeń na poziomie systemu operacyjnego w celu ochrony przed wyciekiem tokenów. Na szczęście aplikacja internetowa Teams jest rozbudowana i obsługuje większość funkcji dostępnych za pośrednictwem klienta stacjonarnego, minimalizując wpływ na produktywność organizacji. Dla użytkowników Linuksa jest to jedyne praktyczne rozwiązanie, ponieważ Microsoft ogłosił koniec życia Teams dla Linuksa do grudnia 2022 roku.

Z kolei deweloperzy, jeśli muszą używać Electron w swojej aplikacji, powinni upewnić się, że bezpiecznie przechowują tokeny OAuth. Jedną z takich metod przechowywania tajnych wpisów jest użycie pakietu KeyTar, który wykorzystuje mechanizmy bezpieczeństwa lokalnego systemu operacyjnego do ich zarządzania.

Przedstawiciele Vectra AI apelują także do Microsoft.

– Jeśli Microsoft musi przechowywać tokeny, powinien je zaszyfrować i podnieś poprzeczkę z prostego dostępu do odczytu w systemie plików do stałego dostępu do pamięci. Ważne też, by można było usunąć wyłączone konta z aplikacji Teams bez konieczności pełnego odinstalowania/ponownej instalacji  podkreśla Putz.