iOS App Extensions

Supporta HackTricks

Le estensioni delle app migliorano la funzionalità delle app consentendo loro di interagire con altre app o con il sistema, fornendo funzionalità o contenuti personalizzati. Queste estensioni includono:

  • Tastiera personalizzata: Offre una tastiera unica in tutte le app, sostituendo la tastiera predefinita di iOS.

  • Condividi: Consente la condivisione su reti sociali o con altri direttamente.

  • Oggi (Widget): Fornisce contenuti o esegue rapidamente attività dalla vista Oggi del Centro Notifiche.

Quando un utente interagisce con queste estensioni, come la condivisione di testo da un'app host, l'estensione elabora questo input nel proprio contesto, sfruttando le informazioni condivise per eseguire il proprio compito, come dettagliato nella documentazione di Apple.

Considerazioni sulla Sicurezza

I principali aspetti di sicurezza includono:

  • Le estensioni e le loro app contenitrici comunicano tramite comunicazione inter-processo, non direttamente.

  • Il widget Oggi è unico in quanto può richiedere alla sua app di aprirsi tramite un metodo specifico.

  • L'accesso ai dati condivisi è consentito all'interno di un contenitore privato, ma l'accesso diretto è limitato.

  • Alcune API, inclusa HealthKit, sono vietate alle estensioni delle app, che non possono avviare attività di lunga durata, accedere alla fotocamera o al microfono, tranne che per le estensioni di iMessage.

Analisi Statica

Identificazione delle Estensioni delle App

Per trovare le estensioni delle app nel codice sorgente, cerca NSExtensionPointIdentifier in Xcode o ispeziona il pacchetto dell'app per file .appex che indicano estensioni. Senza codice sorgente, usa grep o SSH per localizzare questi identificatori all'interno del pacchetto dell'app.

Tipi di Dati Supportati

Controlla il file Info.plist di un'estensione per NSExtensionActivationRule per identificare i tipi di dati supportati. Questa configurazione garantisce che solo i tipi di dati compatibili attivino l'estensione nelle app host.

Condivisione dei Dati

La condivisione dei dati tra un'app e la sua estensione richiede un contenitore condiviso, impostato tramite "App Groups" e accessibile tramite NSUserDefaults. Questo spazio condiviso è necessario per i trasferimenti in background avviati dalle estensioni.

Restrizione delle Estensioni

Le app possono limitare determinati tipi di estensioni, in particolare le tastiere personalizzate, garantendo che la gestione dei dati sensibili sia conforme ai protocolli di sicurezza.

Analisi Dinamica

L'analisi dinamica comporta:

  • Ispezione degli Elementi Condivisi: Collega NSExtensionContext - inputItems per vedere i tipi di dati e le origini condivisi.

  • Identificazione delle Estensioni: Scopri quali estensioni elaborano i tuoi dati osservando i meccanismi interni, come NSXPCConnection.

Strumenti come frida-trace possono aiutare a comprendere i processi sottostanti, specialmente per coloro che sono interessati ai dettagli tecnici della comunicazione inter-processo.

Riferimenti

Supporta HackTricks

Last updated