Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
100 tys. USD nagrody za błąd w funkcji „Sign in with Apple”
„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.
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
Bardziej wygląda to na furtkę zostawioną sobie przez programistę, niż na buga.
Pewnie jak w grach zrobił se debug mode i pyk do produkcji.
To wygląda raczej na jakieś narzędzie developerskie które wylądowało na produkcji. Nieładnie, wygląda to bardzo nieprofesjonalnie…