Token Forging w Azure AD

Niedawny atak na infrastrukturę e-mail Microsoftu przeprowadzony przez chińskiego aktora o nazwie Storm-0558 ma szerszy zasięg, niż wcześniej sądzono.

Według firmy Wiz, zajmującej się bezpieczeństwem w chmurze, klucz podpisywania nieaktywnego konta Microsoft (MSA) używany do fałszowania tokenów Azure Active Directory (Azure AD) w celu uzyskania nielegalnego dostępu do Outlook Web Access (OWA) i Outlook.com może pozwolić przeciwnikowi również na fałszowanie tokenów dostępu dla różnych typów aplikacji Azure AD.

Obejmuje to każdą aplikację obsługującą uwierzytelnianie konta osobistego M365, taką jak OneDrive, SharePoint i Teams. Do tego aplikacje klienckie obsługujące funkcję „Login with Microsoft” oraz aplikacje obsługujące multi-tenant w określonych warunkach.

„Wszystko w świecie Microsoft wykorzystuje tokeny uwierzytelniania Azure Active Directory w celu uzyskania dostępu” – powiedział w oświadczeniu Ami Luttwak, dyrektor ds. Technologii i współzałożyciel firmy Wiz. „Atakujący z kluczem podpisującym AAD jest najpotężniejszym atakującym, jakiego można sobie wyobrazić, ponieważ może uzyskać dostęp do prawie każdej aplikacji – jak każdy użytkownik”. Czy nie brzmi to trochę jak atak Golden Ticket dedykowany do AD on-premises?

Analiza Wiz skradzionego klucza MSA

11 lipca 2023 r. firma Microsoft ujawniła, że złośliwy aktor uzyskał klucz podpisywania klienta MSA, umożliwiający fałszowanie tokenów dostępu do kont Exchange Online i Outlook.com.

Wiz przeprowadził szersze dochodzenie na ten temat. Sprawdzono, które klucze mogą podpisywać tokeny OpenID dla kont Microsoft i aplikacji Azure Active Directory. Z oficjalnej dokumentacji Microsoft dotyczącej tokenów OpenID wiemy, że wszystkie aplikacje Azure Personal Account v2.0 zależą od listy 8 kluczy publicznych, a wszystkie aplikacje Azure Multi-tenant v2.0 z włączonym kontem Microsoft zależą od listy 7 kluczy publicznych (na dzień 21 lipca).

Korzystając z narzędzia Wayback Machine z Internet Archive, zauważono, że jeden z wymienionych kluczy publicznych, który był obecny co najmniej od 2016 r., został zastąpiony w okresie między 27 czerwca a 5 lipca 2023 r., co odpowiada ramom czasowym, w którym Microsoft wymienił skradziony klucz zgodnie z ich postem na blogu.

Poniżej metadane klucza publicznego Microsoft wymienionego w ostatnim okresie.

metadane klucza publicznego Microsoft
Źródło: wiz.io/blog

Certyfikat starego klucza publicznego ujawnił, że został on wydany 5 kwietnia 2016 r. i wygasł 4 kwietnia 2021 r., a jego odcisk palca pasował do odcisku klucza wymienionego przez Microsoft w ich najnowszym poście.

Certyfikat starego klucza publicznego Microsoft
Źródło: wiz.io/blog

Sugerowało to, że chociaż zhakowany klucz uzyskany przez Storm-0558 był kluczem prywatnym zaprojektowanym dla dzierżawy Microsoft MSA na platformie Azure, był on również w stanie podpisywać tokeny OpenID v2.0 dla wielu typów aplikacji Azure Active Directory.

Platforma tożsamości Azure publikuje wiele list zaufanych kluczy w zakresie różnych typów aplikacji. Służą one do sprawdzania integralności tokenów wystawianych przez usługę Azure Active Directory (AAD). Podczas procesu uwierzytelniania dla aplikacji usługi AAD aplikacja musi potwierdzić autentyczność tokena, weryfikując jego podpis na poprawnej liście zaufanych kluczy publicznych widocznych poniżej. Weryfikacja ta określa, czy tokenowi należy ufać.

lista zaufanych kluczy publicznych
Źródło: wiz.io/blog

Jeśli którykolwiek z kluczy z jednej z tych list zostanie naruszony, istnieje znaczne ryzyko dla aplikacji używających tej listy do sprawdzania poprawności. Taka kompromitacja może umożliwić nieautoryzowanym stronom fałszowanie prawidłowych tokenów dostępu do użycia przez dowolną aplikację zależną od platformy tożsamości Azure pod pewnymi warunkami, które dobrze obrazuje poniższa grafika.

Sposób na fałszowanie prawidłowych tokenów dostępu
Źródło: wiz.io/blog

Innymi słowy, Storm-0558 teoretycznie mógł użyć zdobytego klucza prywatnego do sfałszowania tokenów w celu uwierzytelnienia dowolnego użytkownika w dowolnej aplikacji, której dotyczy problem i która ufa mieszanym certyfikatom odbiorców oraz kont osobistych Microsoft OpenID v2.0.

Podsumowanie

W praktyce oznacza to, że luka mogła umożliwić złośliwym podmiotom fałszowanie tokenów dostępu do użycia przez dowolną aplikację zależną od platformy tożsamości w Azure.

„Klucze podpisywania dostawcy tożsamości są prawdopodobnie najpotężniejszymi tajemnicami we współczesnym świecie” ­­– powiedział Shir Tamari, badacz bezpieczeństwa firmy Wiz. „Dzięki kluczom dostawcy tożsamości można uzyskać natychmiastowy dostęp do wszystkiego, dowolnej skrzynki e-mail, usługi plików lub konta w chmurze”.

Microsoft zdążył już odnieść się do artykułu Wiz i odpisał w następujący sposób:

„Wiele twierdzeń przedstawionych na tym blogu ma charakter spekulacyjny i nie jest oparte na dowodach. Zalecamy klientom przejrzenie naszych blogów, w szczególności Microsoft Threat Intelligence, aby dowiedzieć się więcej o tym incydencie i zbadać własne środowiska przy użyciu opublikowanych przez nas wskaźników naruszenia bezpieczeństwa (IOC). Niedawno rozszerzyliśmy również dostępność rejestrowania zabezpieczeń, domyślnie udostępniając je bezpłatnie większej liczbie klientów, aby pomóc przedsiębiorstwom zarządzać coraz bardziej złożonym krajobrazem zagrożeń”.

Podziel się z innymi tym artykułem!