Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!

Przez błąd w obsłudze deep linków można było (w pewnych warunkach) przejąć konto Microsoft

31 marca 2026, 13:26 | W biegu | 0 komentarzy

Badacz bezpieczeństwa Khaled Mohamed odkrył podatność (CVE-2026-26123), która umożliwiała przejęcie konta Microsoft po zeskanowaniu kodu QR przy konfigurowaniu uwierzytelniania dwuetapowego, o ile na urządzeniu użytkownika była zainstalowana złośliwa aplikacja.

TLDR:

  • Podatność wynikała z braku obsługi deep linku ms-msa:// przez aplikację Microsoft Authenticator.
  • Złośliwa aplikacja mogła przejąć jego obsługę i wykraść token uwierzytelniający.
  • Token umożliwiał potwierdzenie logowania bez hasła i w konsekwencji przejęcie konta.
  • Atak wymagał zeskanowania kodu QR aparatem / skanerem kodów i obecności złośliwej aplikacji na urządzeniu.
  • Podatność została załatana. Zalecamy aktualizację Microsoft Authenticator do najnowszej wersji.

Wszystko zaczyna się, gdy użytkownik konfiguruje aplikację Microsoft Authenticator (narzędzie do uwierzytelniania dwuetapowego) na swoim smartfonie. Aby z niej skorzystać, na stronie Microsoft generowany jest kod QR. Jeżeli ofiara zeskanuje taki kod kamerą telefonu lub aplikacją do skanowania kodów (nie Authenticatorem), to jednym kliknięciem może doprowadzić do przejęcia swojego konta.

Całość polega na źle skonfigurowanych deep linkach. Deep linki to odnośniki, które w systemie Android umożliwiają przekierowanie użytkownika do konkretnej aplikacji. Jest to często stosowane przy uwierzytelnianiu (wykonywanym w przeglądarce), po którym użytkownikowi od razu otwiera się dana aplikacja. 

Przykładowo:

  • spotify://track/… – otwiera Spotify,  
  • uber:// – uruchamia aplikację Uber,
  • ms-msa:// – powinien otwierać Microsoft Authenticator.  

Generowany przez Microsoft kod QR do konfiguracji aplikacji Authenticator ma taką postać: 

ms-msa://code=M.C544_BL2.2.U.60e61ddd-1d08-127d-d783-bda9b7v&uaid=88498cfad78b4669aaec4b7a1c8&expires=3964722534

Listing 1 – przykładowy deep link Microsoft Authenticator, źródło: khaledsec.medium.com

Zawarty w linku token (code) stanowi de facto klucz dostępu do konta użytkownika. Standardowo w przypadku uwierzytelniania dwuetapowego przekazywany jest jedynie seed do cyklicznego generowania jednorazowych kodów (użytkownik podaje taki kod dopiero po wpisaniu poprawnego hasła). Microsoft umożliwia jednak logowanie z pominięciem hasła (przez aplikację Authenticator) – stąd przekazywany token umożliwia – przez potwierdzenie próby logowania bez hasła – przejęcie konta.

Badacz odkrył, że generowany deep link wcale nie prowadzi do aplikacji Microsoft. Gdy użytkownik kliknie go w przeglądarce bądź zeskanuje w postaci kodu QR, de facto nie otworzy mu się Authenticator. Oznacza to, że inna aplikacja może przejąć obsługę tego deep linku, deklarując go w swoim manifeście (pliku konfiguracyjnym, który definiuje jej strukturę i sposób interakcji z systemem Android).

Wystarczy, że złośliwa aplikacja zarejestruje intent dla schematu ms-msa, dzięki czemu kliknięty przez użytkownika deep link przekieruje do tejże aplikacji. Jest to możliwe, ponieważ w pliku manifestu dla aplikacji Microsoft Authenticator zabrakło tego intentu.

<intent-filter>    <action android:name=”android.intent.action.VIEW” />    <category android:name=”android.intent.category.DEFAULT” />    <category android:name=”android.intent.category.BROWSABLE” />    <data android:scheme=”ms-msa” /></intent-filter>

Listing 2 – rejestracja deep linku w pliku manifest, źródło: khaledsec.medium.com

Potencjalny atakujący po otwarciu deep linku przez użytkownika uzyskuje token jego konta Microsoft. Oczywiście w tym celu użytkownik musi zainstalować złośliwą aplikację, ale nie wymaga ona żadnych szczególnych uprawnień ani nie musi wykonywać żadnych podejrzanych akcji.

Badacz w ramach proof of concept ograniczył się do wyświetlenia wykradzionego tokenu, ale złośliwa aplikacja mogłaby równie dobrze wysłać go atakującym.

Rys. 1 – PoC dla wykradzionego deep linku, źródło: khaledsec.medium.com

Podobny scenariusz możliwy był również w systemie iOS.

Jak wspomnieliśmy na początku, przekazywany w linku token Microsoft służy nie tylko do generowania jednorazowych kodów (które same w sobie nie umożliwią dostępu do konta), ale też do logowania bez użycia hasła.

Rys. 2 – logowanie bez hasła przez Microsoft Authenticator, źródło: learn.microsoft.com

Atakujący mógłby więc przy użyciu wykradzionego tokenu aktywować u siebie aplikację Authenticator, a następnie – potwierdzając w niej własną próbę zalogowania – uzyskać pełny dostęp do konta użytkownika.

Zgłoszona przez badacza podatność otrzymała numer CVE-2026-26123 oraz została załatana. Podczas naszych testów kod QR faktycznie prowadził do aplikacji Microsoft Authenticator. Użytkownikom polecamy aktualizację aplikacji do najnowszej wersji.

Przy konfiguracji dodatkowych etapów uwierzytelniania odradzamy skanowanie kodu QR aplikacją Aparat / skaner QR. Warto bezpośrednio skanować kod przy użyciu docelowej aplikacji do potwierdzania logowania (np. Microsoft/Google Authenticator czy Aegis). W przypadku tej podatności takie działanie uniemożliwiłoby atakującemu przekierowanie użytkownika do złośliwej aplikacji.

Źródło: khaledsec.medium.com

~Tymoteusz Jóźwiak

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



Komentarze

Odpowiedz