iOS App Extensions
Last updated
Last updated
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
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.
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.
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.
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.
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.
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.
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)