iOS App Extensions

Support HackTricks

Rozszerzenia aplikacji zwiększają funkcjonalność aplikacji, umożliwiając im interakcję z innymi aplikacjami lub systemem, oferując niestandardowe funkcje lub treści. Te rozszerzenia obejmują:

  • Niestandardowa klawiatura: Oferuje unikalną klawiaturę we wszystkich aplikacjach, zastępując domyślną klawiaturę iOS.

  • Udostępnij: Umożliwia udostępnianie w sieciach społecznościowych lub innym użytkownikom bezpośrednio.

  • Dziś (Widgety): Dostarcza treści lub wykonuje zadania szybko z widoku Dziś w Centrum powiadomień.

Gdy użytkownik korzysta z tych rozszerzeń, takich jak udostępnianie tekstu z aplikacji głównej, rozszerzenie przetwarza ten input w swoim kontekście, wykorzystując udostępnione informacje do wykonania swojego zadania, jak opisano w dokumentacji Apple.

Rozważania dotyczące bezpieczeństwa

Kluczowe aspekty bezpieczeństwa obejmują:

  • Rozszerzenia i ich aplikacje komunikują się za pomocą komunikacji międzyprocesowej, a nie bezpośrednio.

  • Widget Dziś jest wyjątkowy, ponieważ może zażądać, aby jego aplikacja otworzyła się za pomocą określonej metody.

  • Dostęp do udostępnionych danych jest dozwolony w ramach prywatnego kontenera, ale bezpośredni dostęp jest ograniczony.

  • Niektóre API, w tym HealthKit, są niedostępne dla rozszerzeń aplikacji, które również nie mogą uruchamiać długoterminowych zadań, uzyskiwać dostępu do kamery ani mikrofonu, z wyjątkiem rozszerzeń iMessage.

Analiza statyczna

Identyfikacja rozszerzeń aplikacji

Aby znaleźć rozszerzenia aplikacji w kodzie źródłowym, wyszukaj NSExtensionPointIdentifier w Xcode lub sprawdź pakiet aplikacji pod kątem plików .appex, które wskazują na rozszerzenia. Bez kodu źródłowego użyj grep lub SSH, aby zlokalizować te identyfikatory w pakiecie aplikacji.

Obsługiwane typy danych

Sprawdź plik Info.plist rozszerzenia pod kątem NSExtensionActivationRule, aby zidentyfikować obsługiwane typy danych. Ta konfiguracja zapewnia, że tylko kompatybilne typy danych uruchamiają rozszerzenie w aplikacjach głównych.

Udostępnianie danych

Udostępnianie danych między aplikacją a jej rozszerzeniem wymaga wspólnego kontenera, skonfigurowanego za pomocą "Grup aplikacji" i uzyskiwanego przez NSUserDefaults. Ta wspólna przestrzeń jest niezbędna do transferów w tle inicjowanych przez rozszerzenia.

Ograniczanie rozszerzeń

Aplikacje mogą ograniczać niektóre typy rozszerzeń, szczególnie niestandardowe klawiatury, zapewniając, że obsługa wrażliwych danych jest zgodna z protokołami bezpieczeństwa.

Analiza dynamiczna

Analiza dynamiczna obejmuje:

  • Inspekcję udostępnionych elementów: Podłącz się do NSExtensionContext - inputItems, aby zobaczyć typy i źródła udostępnianych danych.

  • Identyfikację rozszerzeń: Odkryj, które rozszerzenia przetwarzają twoje dane, obserwując wewnętrzne mechanizmy, takie jak NSXPCConnection.

Narzędzia takie jak frida-trace mogą pomóc w zrozumieniu podstawowych procesów, szczególnie dla tych, którzy są zainteresowani technicznymi szczegółami komunikacji międzyprocesowej.

Referencje

Support HackTricks

Last updated