iOS App Extensions
Las extensiones de aplicaciones mejoran la funcionalidad de las aplicaciones al permitirles interactuar con otras aplicaciones o el sistema, proporcionando características o contenido personalizados. Estas extensiones incluyen:
Teclado Personalizado: Ofrece un teclado único en todas las aplicaciones, reemplazando el teclado predeterminado de iOS.
Compartir: Permite compartir en redes sociales o con otros directamente.
Hoy (Widgets): Proporciona contenido o realiza tareas rápidamente desde la vista Hoy del Centro de Notificaciones.
Cuando un usuario interactúa con estas extensiones, como compartir texto desde una aplicación anfitriona, la extensión procesa esta entrada dentro de su contexto, aprovechando la información compartida para realizar su tarea, como se detalla en la documentación de Apple.
Consideraciones de Seguridad
Los aspectos clave de seguridad incluyen:
Las extensiones y sus aplicaciones contenedoras se comunican a través de comunicación entre procesos, no directamente.
El widget Hoy es único en que puede solicitar a su aplicación que se abra a través de un método específico.
El acceso a datos compartidos está permitido dentro de un contenedor privado, pero el acceso directo está restringido.
Ciertas API, incluyendo HealthKit, están prohibidas para las extensiones de aplicaciones, que tampoco pueden iniciar tareas de larga duración, acceder a la cámara o al micrófono, excepto para extensiones de iMessage.
Análisis Estático
Identificación de Extensiones de Aplicaciones
Para encontrar extensiones de aplicaciones en el código fuente, busca NSExtensionPointIdentifier
en Xcode o inspecciona el paquete de la aplicación en busca de archivos .appex
que indiquen extensiones. Sin código fuente, usa grep o SSH para localizar estos identificadores dentro del paquete de la aplicación.
Tipos de Datos Soportados
Revisa el archivo Info.plist
de una extensión para NSExtensionActivationRule
para identificar los tipos de datos soportados. Esta configuración asegura que solo los tipos de datos compatibles activen la extensión en las aplicaciones anfitrionas.
Compartición de Datos
La compartición de datos entre una aplicación y su extensión requiere un contenedor compartido, configurado a través de "Grupos de Aplicaciones" y accedido a través de NSUserDefaults
. Este espacio compartido es necesario para las transferencias en segundo plano iniciadas por las extensiones.
Restricción de Extensiones
Las aplicaciones pueden restringir ciertos tipos de extensiones, particularmente teclados personalizados, asegurando que el manejo de datos sensibles se alinee con los protocolos de seguridad.
Análisis Dinámico
El análisis dinámico implica:
Inspeccionar Elementos Compartidos: Engancharse a
NSExtensionContext - inputItems
para ver tipos de datos y orígenes compartidos.Identificar Extensiones: Descubrir qué extensiones procesan tus datos observando mecanismos internos, como
NSXPCConnection
.
Herramientas como frida-trace
pueden ayudar a entender los procesos subyacentes, especialmente para aquellos interesados en los detalles técnicos de la comunicación entre procesos.
Referencias
Last updated