Żądny wiedzy? Wbijaj na Mega Sekurak Hacking Party w maju! -30% z kodem: majearly

100 tys. USD nagrody za błąd w funkcji „Sign in with Apple”

31 maja 2020, 11:18 | Aktualności | komentarze 3

„Sign in with Apple” to funkcja na urządzeniach Apple, która pozwala wykorzystać konto iCloud do uwierzytelnienia w innych aplikacjach. Od strony użytkownika działa na podobnej zasadzie jak – bardziej powszechne – „Zaloguj z kontem Google” czy „Zaloguj z Facebookiem”.

Od strony technicznej, rozwiązanie opiera się o wygenerowanie tokenu JWT przez serwer uwierzytelniający Apple, który to następnie jest wysyłany do aplikacji firmy trzeciej, gdy użytkownik zażyczy sobie uwierzytelnienia z Applem. Tokeny są podpisane kluczem RSA, więc sprawdzenie ich poprawności polega na zweryfikowaniu ich względem klucza publicznego.

Sposób działania "Sign in with Apple", źródło: https://bhavukjain.com/blog/2020/05/30/zeroday-signin-with-apple/

Sposób działania „Sign in with Apple”, źródło: https://bhavukjain.com/blog/2020/05/30/zeroday-signin-with-apple/

O bezpieczeństwie JWT piszemy też w sekurakowej książce, wydaliśmy też e-booka na ten temat i mówiliśmy na ostatnim remote Sekurak Hacking Party

Bhavuk Jain zlokalizował ostatnio błąd w implementacji tejże funkcjonalności polegający najpewniej na tym, że odkrył pewien ukryty endpoint, który pozwolił wygenerować token JWT dla dowolnego użytkownika, znając tylko jego maila!

Wystarczyło wysłać zapytanie do serwera:

POST /XXXX/XXXX HTTP/1.1
Host: appleid.apple.com

{"email":"contact@bhavukjain.com"}

by otrzymać token:

{
  "authorization" : {
    "id_token" : "eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ.XXXXX.XXXXX",
    "grant_code" : "XXX.0.nzr.XXXX",
    "scope" : [ "name", "email" ]
  },
  "authorizedData" : {
    "userId" : "XXX.XXXXX.XXXX"
  },
  "consentRequired" : false
}

Apple zdecydowało wypłacić bug bounty w wysokości stu tysięcy dolarów. Pozostaje się jedynie zastanawiać, jak to się stało, że taki błąd dostał się na produkcję…

— Michał Bentkowski

 

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



Komentarze

  1. Pawel

    Bardziej wygląda to na furtkę zostawioną sobie przez programistę, niż na buga.

    Odpowiedz
    • Dawid

      Pewnie jak w grach zrobił se debug mode i pyk do produkcji.

      Odpowiedz
  2. Nn

    To wygląda raczej na jakieś narzędzie developerskie które wylądowało na produkcji. Nieładnie, wygląda to bardzo nieprofesjonalnie…

    Odpowiedz

Odpowiedz