iOS App Extensions

Support HackTricks

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

Support HackTricks

Last updated