iOS App Extensions

HackTricks'i Destekleyin

Uygulama uzantıları, uygulamaların diğer uygulamalar veya sistemle etkileşimde bulunarak özel özellikler veya içerik sunmasına olanak tanıyarak işlevselliğini artırır. Bu uzantılar şunları içerir:

  • Özel Klavye: Tüm uygulamalarda benzersiz bir klavye sunarak varsayılan iOS klavyesinin yerini alır.

  • Paylaş: Sosyal ağlara veya diğerleriyle doğrudan paylaşım yapmayı sağlar.

  • Bugün (Widget'lar): Bildirim Merkezi'nin Bugün görünümünden hızlı bir şekilde içerik sunar veya görevleri yerine getirir.

Bir kullanıcı, ana uygulamadan metin paylaşmak gibi bu uzantılarla etkileşime girdiğinde, uzantı bu girişi kendi bağlamında işler ve görevini yerine getirmek için paylaşılan bilgileri kullanır; bu, Apple'ın belgelerinde ayrıntılı olarak açıklanmıştır.

Güvenlik Hususları

Ana güvenlik unsurları şunlardır:

  • Uzantılar ve içerdikleri uygulamalar, doğrudan değil, süreçler arası iletişim yoluyla iletişim kurar.

  • Bugün widget'ı, uygulamasını belirli bir yöntemle açmasını isteyebilmesi açısından benzersizdir.

  • Paylaşılan veri erişimi, özel bir konteyner içinde izinlidir, ancak doğrudan erişim kısıtlanmıştır.

  • HealthKit dahil bazı API'ler, uygulama uzantılarına kapalıdır; ayrıca, iMessage uzantıları hariç uzun süreli görevler başlatamaz, kamera veya mikrofon erişimi yoktur.

Statik Analiz

Uygulama Uzantılarını Belirleme

Kaynak kodunda uygulama uzantılarını bulmak için Xcode'da NSExtensionPointIdentifier araması yapın veya uzantıları gösteren .appex dosyalarını içeren uygulama paketini inceleyin. Kaynak kodu olmadan, bu tanımlayıcıları uygulama paketinde bulmak için grep veya SSH kullanın.

Desteklenen Veri Türleri

Desteklenen veri türlerini belirlemek için bir uzantının Info.plist dosyasını kontrol edin ve NSExtensionActivationRule'u inceleyin. Bu yapılandırma, yalnızca uyumlu veri türlerinin ana uygulamalarda uzantıyı tetiklemesini sağlar.

Veri Paylaşımı

Bir uygulama ile uzantısı arasında veri paylaşımı, "Uygulama Grupları" aracılığıyla ayarlanan ve NSUserDefaults üzerinden erişilen paylaşılan bir konteyner gerektirir. Bu paylaşılan alan, uzantılar tarafından başlatılan arka plan transferleri için gereklidir.

Uzantıları Kısıtlama

Uygulamalar, özellikle özel klavyeler gibi belirli uzantı türlerini kısıtlayabilir, böylece hassas veri işleme güvenlik protokolleriyle uyumlu hale gelir.

Dinamik Analiz

Dinamik analiz şunları içerir:

  • Paylaşılan Öğeleri İnceleme: Paylaşılan veri türlerini ve kökenlerini görmek için NSExtensionContext - inputItems'a bağlanın.

  • Uzantıları Belirleme: Verilerinizi işleyen uzantıları keşfetmek için NSXPCConnection gibi iç mekanizmaları gözlemleyin.

frida-trace gibi araçlar, süreçler arası iletişimin teknik detaylarına ilgi duyanlar için temel süreçleri anlamaya yardımcı olabilir.

Referanslar

HackTricks'i Destekleyin

Last updated