“iPhone’unuzda olan iPhone’unuzda kalır” mı?

For the English version of this post: https://erkanyildiz.me/blog/what-happens-on-your-iphone-stays-on-your-iphone-really/

Apple, her ne kadar ara sıra veri sızıntılarına neden olan açıklarla gündeme gelse de, ürünlerinde genel olarak gizlilik politikalarına oldukça önem veren bir firma.
Özellikle iOS 13 ile duyurduğu Sign in with Apple özelliği de bunun en son örneklerinden biri.
Fakat, yine de veri güvenliği ve gizlilik söz konusu olunca her şey Apple'ın istediği gibi olmayabiliyor.
Kötü niyetli geliştiricilerin ya da uygulamalara masumca eklenen çeşitli SDK'lerin kullanıcıdan izin almadan neler yapabileceklerine ya da aldıkları çeşitli izinleri nasıl suistimal edebileceklerine değinelim:

What happens on your iPhone, stays on your iPhone.
Fotoğraf: Chris Velazco

Paste Board

Paste Board, iOS'te kopyala-yapıştır işlemlerinin yönetildiği birimdir.
Tüm uygulamalar, kopyalanan metin ya da görselleri herhangi bir izne tâbi olmadan buradan okuyabilirler.
Uygulamanın aktif olarak ekranda ya da arkaplanda oluşu farketmez, sadece çalışıyor olması yeterlidir.
"Yapıştır" komutu gibi bir kullanıcı aksiyonu da gerekmez.
Bu nedenle, kullanıcıların kopyaladığı metin ya da görseller uygulama geliştiricilerin istismarına açık durumdadır.

Ayrıca, uygulamalar kendi istedikleri metin ve görselleri kullanıcıdan habersiz şekilde Paste Board'a yazabilirler.
Böylece kullanıcıyı zor durumda bırakacak şeyler, kullanıcı kopyalamış gibi Paste Board'a yerleştirilebilir.

Kullanıcı adı, parola, private link gibi sıkça kopyala-yapıştır yapılan verilerin başka uygulamalar tarafından okunma olasılığını en aza indirmek için, yapıştırma işleminden sonra önemsiz metin ya da görseller gibi başka şeyler kopyalamak, ya da Paste Board temizliği yapabilen uygulamalardan birini kullanmak önerilebilir.

Teknik ayrıntılar için Apple'ın dokümantasyon sayfasını ziyaret edebilirsiniz.

Güncelleme: Apple WWDC 2020 etkinliğinde, iOS 14'te herhangi bir uygulamanın Paste Board'dan veri okuması durumunda bir küçük bildirim görüntüleneceğini duyurdu.

Güncelleme: Apple WWDC 2022 etkinliğinde, iOS 16'da herhangi bir uygulamanın Paste Board'dan veri okumaya çalışması durumunda bir izin diyaloğunun görüntüleneceğini duyurdu.

Fotoğraf Erişim İzni

Fotoğraf erişimi için izin verilen uygulamalar, tüm fotoğraflarla birlikte, konum ve zaman gibi fotoğraflara gömülü bazı verilere de erişebilirler.
Böylece konum izninden bağımsız olarak, hem geçmişe dönük, hem de kullanıcı fotoğraf çektikçe anlık olarak konum bilgisini elde edebilirler.

Apple, bu sorunu tamamen çözmese de kısmen işe yarayabilecek bir çözümü iOS 11 ile duyurmuştu.
Fotoğraf seçmeye yarayan UIImagePickerController adlı arayüz bileşeni, tüm fotograflara erişim hakkı yerine sadece o an için seçilen fotoğrafları uygulamaya verecek şekilde çalışıyor.
Fakat Apple bu bileşenin kullanımını zorunlu tutmadığı için, geliştiriciler tarafından pek tercih edilmiyor ve uygulamalar genelde gereksiz yere tam fotoğraf erişimi talebinde bulunuyor.

Teknik ayrıntılar için bu GitHub issue sayfasını ziyaret edebilirsiniz.

Güncelleme: Apple WWDC 2020 etkinliğinde, iOS 14'te Sınırlı Fotoğraf Kütüphanesi Erişimi (PHAuthorizationStatusLimited) adında yeni bir özellik olacağını duyurdu.

Mikrofon Erişim İzni

Mikrofon erişimi için izin verilen uygulamalar ses kaydı esnasında herhangi bir uyarı göstermek zorunda değildirler.
Eğer uygulama sesli arama gerçekleştiriyorsa, ya da arkaplanda iken ses kaydı yapıyorsa, iOS otomatik olarak status bar'ın rengini değiştirerek bunu kullanıcıya görsel olarak bildiriyor.
Fakat uygulama aktif olarak ekrandayken ses kaydı yapıyorsa, bunu anlamak her zaman mümkün olmayabiliyor.
Yani, sesli arama için mikrofon izni verilen WhatsApp gibi uygulamalar, yalnızca sesli arama esnasında değil, yazılı şekilde mesajlaşırken ya da ayarlar ekranındayken bile ses kaydı yapıyor olabilirler.

Güncelleme: Apple, 22 Haziran 2020 tarihinde gerçekleştirdiği WWDC 2020 etkinliğinde, iOS 14'te herhangi bir uygulamanın ses kaydı yapıyor olması durumunda status bar'da uyarı amaçlı bir nokta belireceğini duyurdu.

Kamera Erişim İzni

Kamera ile görüntü kaydının işleyişi mikrofon ile ses kaydına benzer şekildedir.
Kamera iznine sahip uygulamalar, aktif olarak ekrandayken herhangi bir belirti vermeden gizlice görüntü kaydı yapabilirler.

Güncelleme: Apple, 22 Haziran 2020 tarihinde gerçekleştirdiği WWDC 2020 etkinliğinde, iOS 14'te herhangi bir uygulamanın kamera kaydı yapıyor olması durumunda status bar'da uyarı amaçlı bir nokta belireceğini duyurdu.

Bluetooth

iOS 13'e kadar, aktif olarak çalışmakta olan iOS uygulamaları etrafta bulunan Bluetooth beacon'ları herhangi bir izne tâbi olmadan tarayabiliryorlardı.
Böylece, anlaşmalı mağazalar, AVM'ler, istasyonlar ve stadyumlar gibi yoğun insan trafiği yaşanan yerlere yerleştirilen beacon'lar ile kullanıcının hangi gün ve saatte, tam olarak hangi noktada ne kadar vakit harcadığı aytıntılı olarak takip edilebiliyordu.
Apple, iOS 13 ile birlikte bu duruma kısıtlama getirerek Bluetooth kullanımı için kullanıcı iznini şart koşmaya başladı.

Teknik ayrıntılar için Apple'ın dokümantasyon sayfasını ziyaret edebilirsiniz.

WiFi SSID ve Yerel Ağ

Cihazın bağlı olduğu WiFi'ın SSID'si tüm uygulamalar tarafından herhangi bir izne tâbi olmadan okunabilir.
Bu da kullanıcının konumu hakkında ipucu verebilir. Ayrıca, aynı yerel ağda bulunan tüm cihazlar da herhangi bir izne tâbi olmadan taranabilir.

Apple, ilk olarak iOS 12 ile bu duruma kısıtlama getirdi, daha sonra iOS 13 ile birlikte şartları daha da sıkılaştırdı.
iOS 13 itibariyle uygulamalar SSID bilgisine erişebilmek için konum iznine sahip olmak ya da ağ ayarları yapabilme yetkisine sahip olmak zorundalar.

Teknik ayrıntılar için Apple'ın dokümantasyon sayfasını ziyaret edebilirsiniz.

Güncelleme: Apple WWDC 2020 etkinliğinde, iOS 14'te yerel ağ erişimi için yeni bir izin türü olacağını duyurdu.

URL Scheme

URL scheme, basit şekilde ifade edilecek olursa, bir URL'in en başında bulunan ve türünü belirten kısımdır.
En bilinen örnekleri http:// , ftp://, mailto:// gibileridir.

Tüm uygulamalar twitter://, instagram:// youtube://, nflx:// gibi kendi URL scheme'lerini tanımlayabilirler.
iOS'te açılmak istenen bir URL, herhangi bir uygulama tarafından tanımlanmış bir URL scheme ile başlıyorsa, söz konusu ilişkili uygulama ile açılır.
Bu özellik, uygulamalar arası geçişler, deep linking ve 3rd party login işlemleri için oldukça önemlidir.

Fakat tüm uygulamalar istedikleri URL scheme'lerin sistemde tanımlanmış olup olmadığını sorgulayarak, kullanıcının cihazında hangi uygulamaların yüklü olup olmadığını öğrenebilirler.

Böylece, bu kullanıcıda hem Netflix hem de Amazon Prime Video uygulamaları yüklü, fakat herhangi bir sosyal medya uygulaması kullanmıyor gibi sınıflandırmalar ve dolayısıyla hedefli reklamlar mümkün hale gelebilir.

Apple, iOS 9 ile birlikte sorgulanabilecek URL scheme'ler için bazı kısıtlamalar getirdiyse de, bu yöntem teknik olarak hala mümkün.

Bir başka önemli nokta da, iOS'te hangi uygulamanın hangi URL scheme'leri tanımlayabileceğine dair hiçbir kısıtlama olmaması.
Bu nedenle tamamen alâkasız bir uygulama, örneğin youtube:// URL scheme'ini tanımlayıp, youtube:// ile baslayan tüm URL'leri kendisi açmayı başarabilir.
Bu durum, kullanıcın dalgınlığıyla birlikte çeşitli phishing saldırılarına da imkan sağlayabilir.

Teknik ayrıntılar için Apple'ın dokümantasyon sayfasını ziyaret edebilirsiniz.

Güncelleme: Apple WWDC 2021 etkinliğinde, iOS 15'te sorgulanabilecek URL scheme'lerin 50 ile sınırlandırılacağını duyurdu.

Uygulama İçi Tarayıcı

Bazı uygulamalarda tıklanan linkler, Safari uygulamasına geçilmeden uygulama içinde UIWebView ya da WKWebView adlı arayüz bileşenleri ile açılabilir.
Bu şekilde uygulama içinde açılan sayfalardaki linkler takip edilerek başka sayfalara gidildiğinde, tüm bu browsing aktivitesi uygulama tarafından izlenebilir.
Daha önceden yapılan ya da gelecekte yapılacak olan browsing aktiviteleriyle ilişkilendirilebilir.

Apple, iOS 9 ile birlikte bu soruna çözüm olabilecek SFSafariViewController adlı bileşeni tanıtmıştı.
SFSafariViewController ile gerçekleştirilen browsing aktivitesi uygulama tarafından okunamıyor. Fakat Apple bu bileşenin kullanımını zorunlu tutmadığı için, hâlâ WKWebView kullanan uygulamalar mevcut.

Teknik ayrıntılar için Apple'ın dokümantasyon sayfasını ziyaret edebilirsiniz.

Fingerprinting

Sadece iOS cihazlara özgü olmamakla birlikte, cihazdan elde edilmesi mümkün olan anlık ya da kalıcı her türlü verinin toplanması ile kullanıcının tespit ve takip edilmesi söz konusu olabilir.
Bu veriler; seçili dil ve bölge ayarları, saat dilimi, cihaz modeli, depolama kapasitesi, boş depolama yüzdesi, boş bellek yüzdesi, batarya doluluk yüzdesi, şarj kablosunun takılı olup olmaması, operatör bilgisi, cihaz adı, Apple Watch pairing durumu, bağlantı türü, IP adresi, erişim izinleri gibi şeylerdir.

Cihaz Adı

Cihaz adı, cihazın iTunes, AirDrop ve Find My iPhone gibi yerlerde görüntülenen adıdır.
Genelde Ali'nin iPhone'u Ayşe'nin iPad'i gibi kullanıcının adı ve cinsiyeti hakkında ipucu verebilecek şekildedir.
Cihazda çalışmakta olan tüm uygulamalar tarafından herhangi bir izin gerektirmeden okunabilir.
Ayarlar > Genel > Hakkında ekranından ayarlanabilir.

Güncelleme: Apple WWDC 2022 etkinliğinde, iOS 16'dan itibaren User Assigned Device Name (Kullanıcı tarafından belirlenmiş cihaz adı) entitlement'ın zorunlu kılınacağını açıkladı. Böylece, cihaz adına erişim sağlayan uygulamaların bunu neden yaptıklarını Apple'a açıklamaları gerekecek.

Operatör

Cihaza takılı SIM kartın operatör adı ve kodu, tüm uygulamalar tarafından doğrudan okunabilir.
Böylece kullanıcı profili hakkında ipucu elde edilebilir.
Ayrıca başka ülkelere gidildiğinde, hiç internet bağlantısı yapılmasa bile SIM kart değişikliği sonrası yeni operatör bilgisi kullanıcının hangi ülkeye gittiğine dair ipucu verebilir.

Teknik ayrıntılar için Apple'ın dokümantasyon sayfasını ziyaret edebilirsiniz.

Güncelleme: Apple WWDC 2022 etkinliğinde, iOS 16'dan itibaren operatör adı bilgisinin kaldırıldığını ve tüm cihazlarda "--" olarak döndürüleceğini duyurdu.

NSNull

NSNull, null değerleri temsil eden ve [NSNull null] ile erişilen bir singleton'dır.
Fakat NSNull singleton'ı, uygulama özelinde değil sistem genelinde varlığını sürdürür.
Bu nedenle farklı uygulamalardan pointer değeri yazdırılıp incelenirse aynı adres olduğu gözlemlenebilir.
Bu değer yalnızca cihaz yeniden başlatıldığı zaman değişecek, aksi takdirde sürekli aynı kalacaktır.

Elde edilen 0x1ebe1bc30 gibi adres değerlerinin birebir aynı olması, aynı geliştiriciye ait olmayan uygulamalar arasında bile kullanıcı tespit ve takibine olanak sağlayabilir.

Teknik ayrıntılar için Apple'ın dokümantasyon sayfasını ziyaret edebilirsiniz.

IDFA

Identifier for Advertisers (IDFA), kullanıcıları takip etmek ve ilgili reklamlar sunabilmek için Apple'ın uygulama geliştiricilere sunduğu resmî yöntemdir.
Maalesef, iOS 13'te dahi hâlâ doğrudan aktif olarak gelmektedir.
iOS'in Ayarlar > Gizlilik > Reklam ekranı altındaki Reklam Takibini Sınırla seçeneği ile devre dışı bırakılabilir.

IDFA değeri iOS 10'a kadar, devre dışı bırakan kullanıcılarda bile uygulama geliştiricilerin erişimine açıktı.
Apple, herhangi bir teknik kısıtlama koymaksızın, uygulama geliştiricileri yalnızca kullanıcının tercihine saygı duymaya davet ediyordu.
IDFA değeri iOS 10 ile birlikte ayarlardan devre dışı bırakan tüm kullanıcılar için 00000000-0000-0000-0000-000000000000 olacak şekilde güncellendi.

Teknik ayrıntılar için Apple'ın dokümantasyon sayfasını ziyaret edebilirsiniz.

Güncelleme: Apple WWDC 2020 etkinliğinde, iOS 14.5'te kullanıcıları takip etmek ve IDFA değerine erişebilmek için yeni bir izin türü olacağını duyurdu.

Keychain - iCloud - GameCenter

Kullanıcı adı ve parolalar gibi hassas verilerin encryption ile saklandığı Keychain, cloud data servisi iCloud ve oyun servisi Game Center gibi sistemler, uygulamalar silinip yeniden yüklendikten sonra bile kullanıcıyı tanıyabilme imkanı sunarlar.
Bu durum, login gerektiren bazı uygulamalarda kullanıcıya kolaylık sağlayabiliyorken, kullanıcı henüz login olmadan (ya da farklı bir hesap ile login olduğunda), habersiz bir şekilde tespit ve takip amacıyla da kullanılabilir.
Local Keychain'de saklanan veriler ancak cihaza reset atıldığında temizlenirken, iCloud ve Game Center verileri kullanıcı iOS Ayarlar'dan logout olmadıkça erişilebilir durumdadır.

Özet

Bunlar kötü amaçlı uygulama geliştiricilerin ya da uygulamalardaki çeşitli SDK'lerin neler yapabileceğinin bazı örnekleri.
Apple düzenli olarak bazı uygulamaları kuralları ihlal ettiği için App Store'dan kaldırıyor ve hatta bazen Apple Developer Program üyeliklerini sonlandırıyor.
Ancak bu genellikle söz konusu sorun son kullanıcılar tarafından bildirilirse ya da inceleme ekibi tarafından tesadüfen tespit edilirse gerçekleşiyor.
Bu nedenle, her gün kullandığımız sistemleri iyi bilmekte ve tedbiri elden bırakmamakta fayda var.