Hindistanlı güvenlik araştırmacısı Bhavuk Jain, Apple’ın üçüncü parti uygulama hesaplarına giriş için kullandığı “Sign in with Apple” sistemi üzerindeki kritik bir açığı tespit ederek “bug bounty” kapsamında 100 bin dolarlık ödül kazandı.
Şu anda kapatılmış olan açık istismar edilerek “Sign in with Apple” özelliği kullanan üçüncü parti uygulamalara ait hesaplar ele geçirilebiliyordu.
Geçen yıl Apple’ın WWDS konferansında duyurulan “Sign in with Apple” özelliği sayesinde kullanıcılar mail adreslerini ayrıca girmeye gerek duymadan Dropbox, Spotify vb. üçüncü parti uygulamalara giriş yapabiliyorlar.
Bhavuk Jain kendi bloğunda, tespit ettiği güvenlik açığının detaylarına yer veriyor. “Sign in with Apple” özelliğini kullanmak için hesap doğrulama sürecinin ilk adımı olarak Apple sunucusuna gidip bir JWT (JSON Web Token) veya Apple sunucusu tarafından üretilen özel bir kod almak gerekiyor.
Doğrulamanın bir sonraki adımında kullanıcı Apple doğrulama sunucusu tarafından üretilen JWT ile giriş yapmak istediği üçüncü parti uygulamaya gidiyor. Daha sonraki aşamada ise Apple sunucusu ile uygulama sunucusu arasında JWT doğrulaması gerçekleştiriliyor ve doğrulama başarılı ise kullanıcıya başarılı cevabı döndürülüp uygulamaya giriş yapılması sağlanıyor.
Bhavuk Jain, doğrulama adımının ikinci aşamasında Apple doğrulama sunucusundan geçerli herhangi bir mail adresi için JWT talebi yapılabildiğini fark etti.
POST /XXXX/XXXX HTTP/1.1
Host: appleid.apple.com
{“email”:”contact@bhavukjain.com”}
https://bhavukjain.com/blog/2020/05/30/zeroday-signin-with-apple/
Yukarıdaki gibi örnek bir “Post Request” içerisindeki mail adresi bölümüne herhangi bir mail adresi girilerek Apple üzerinden geçerli bir JWT alınabiliyordu. Girilen adrese karşılık Apple sunucusunun “Response” olarak döndüğü JWT aşağıdaki gibidir. Bu JWT kullanılarak üçüncü parti uygulamaya gidildiği zaman JWT, Apple sunucu tarafından doğrulanıyor ve uygulamaya giriş yapılabiliyordu.
{
“authorization” : {
“id_token” : “eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ.XXXXX.XXXXX”,
“grant_code” : “XXX.0.nzr.XXXX”,
“scope” : [ “name”, “email” ]
},
“authorizedData” : {
“userId” : “XXX.XXXXX.XXXX”
},
“consentRequired” : false
}
https://bhavukjain.com/blog/2020/05/30/zeroday-signin-with-apple/
Bu JWT kullanılarak üçüncü parti uygulamaya gidildiği zaman JWT, Apple sunucu tarafından doğrulanıyor ve uygulamaya giriş yapılabiliyordu.
Bu açık kullanılarak “Sign in with Apple” özelliğini kullanan Dropbox, Spotify, Airbnb, Giphy gibi uygualamalara ait hesapların tamamen ele geçirilme riski bulunuyordu ve bu sebeple oldukça kritik bir açık olarak sınıflandırıldı. Bhavuk Jain ilgili açığı Apple güvenlik ekibine raporladı ve firma ilgili güvenlik açığını kapattı.
Apple güvenlik ekibi tespit edilen açıkla ilgili olarak sunucu loglarında tespit edilen açıktan etkilenen herhangi bir hesabın bulunmadığını bildirdi.