¿Qué es iOS App Sandboxing?

iOS app sandboxing es una arquitectura de seguridad básica que restringe cada aplicación a su propio contenedor dedicado, impidiéndole acceder a archivos de sistema, otros datos de aplicaciones o recursos de hardware sin consentimiento explícito de usuario. Cuando se instala una aplicación, el sistema operativo crea un directorio único de sandbox para esa aplicación, y todo su código, datos, preferencias y caches viven dentro de ese directorio. La aplicación no puede escapar de su contenedor para leer o escribir archivos pertenecientes a otra aplicación o al propio sistema.

El modelo de sandbox se aplica a nivel del núcleo, lo que significa que se aplica a todas las aplicaciones, incluidas las distribuidas a través de App Store, implementaciones empresariales e incluso aplicaciones de sistema en gran medida. El sistema operativo media cada operación del sistema de archivos, conexión de red y llamada de hardware, permitiendo sólo aquellas acciones que entran dentro de los derechos otorgados por la aplicación. Esto hace que iOS sea uno de los sistemas operativos móviles más seguros disponibles, ya que se encua a la parte de otras protecciones de seguridad como código de firma.

La arquitectura técnica detrás de la sandboxing

A nivel del núcleo, iOS utiliza controles obligatorios de acceso (MAC) aplicados por el marco de caja de arena Seatbelt. Seatbelt define un conjunto de reglas para cada proceso de aplicación, especificando qué archivos, directorios, puntos finales de red y servicios de sistema puede acceder el proceso. Estas reglas se compilan en un perfil de caja de arena que se carga cuando la aplicación lanza. El perfil es único para cada aplicación y no puede ser superado por la propia aplicación.

Cada aplicación obtiene su propio directorio de contenedores, normalmente ubicado en . Dentro de este contenedor, el sistema divide aún más el almacenamiento en subdirectorios como , , y . La aplicación puede leer y escribir libremente dentro de su propio contenedor, pero cualquier intento de acceder a caminos fuera de este contenedor desencadena una negación del kernel.

Los perfiles de Sandbox también restringen la comunicación entre procesos (IPC).Las aplicaciones no pueden llamar servicios arbitrarios del sistema ni iniciar procesos de fondo sin derechos específicos. Esto significa que incluso si una aplicación logra ejecutar código arbitrario, no puede, por ejemplo, iniciar un daemon que se ejecuta persistentemente en el fondo o enviar mensajes al proceso de otra aplicación. La combinación de aislamiento del sistema de archivos y restricciones IPC forma la columna vertebral de seguridad iOS.

Medidas de seguridad básicas en iOS

Sandboxing no funciona en forma aislada. Forma parte de un modelo de seguridad con capas que incluye varias medidas complementarias diseñadas para proteger los datos de los usuarios y la integridad del sistema en todos los niveles.

Permisos de aplicación y control de usuario

iOS requiere aplicaciones para solicitar permiso antes de acceder a datos o hardware sensibles. Esto incluye la cámara, micrófono, servicios de ubicación, biblioteca de fotos, contactos, calendario, Bluetooth y sensores de movimiento. Las permisos se conceden a través de un aviso de tiempo de ejecución que aparece la primera vez que la aplicación intenta acceder al recurso. Los usuarios pueden revisar y revocar permisos en cualquier momento a través de la aplicación Ajustes.

Apple tiene controles de permisos ajustados constantemente con cada lanzamiento de iOS. Por ejemplo, iOS 14 agregó un intercambio de ubicación aproximada y la capacidad de otorgar acceso a la foto en una base por imagen. iOS 15 presentó App Privacy Report, que registra los recursos que cada aplicación ha accedido. iOS 16 y 17 notificaciones de acceso a portapapeles más refinadas, avisos de permiso de ataúd y modo de cierre para usuarios de alto riesgo.

Código de firma y validación de aplicaciones

Cada aplicación que se ejecuta en iOS debe ser firmada digitalmente por Apple usando un certificado emitido al desarrollador. Este proceso, conocido como firma de códigos, garantiza que el código no se ha manipulado desde que fue firmado. Cuando el sistema carga una aplicación, verifica la firma contra la infraestructura de clave pública de Apple. Si la firma es inválida, falta o vencida, la aplicación no se lanzará.

La firma de códigos se extiende más allá de la instalación de aplicaciones. El sistema también verifica las firmas de códigos en tiempo de ejecución para bibliotecas y marcos cargados dinámicamente. Esto evita que una aplicación cargue código no firmado después del lanzamiento, que es una técnica común utilizada por el malware para evitar los cheques iniciales. El servicio de notarización de Apple para macOS sirve un propósito similar, pero en iOS la aplicación es obligatoria para todas las aplicaciones, no sólo las distribuidas a través de App Store.

Encriptación de datos en el descanso y en el tránsito

Los dispositivos iOS utilizan cifrado respaldado por hardware para proteger los datos almacenados en el almacenamiento flash. Cada dispositivo tiene un motor AES dedicado integrado en el sistema-en-chip, que encripta y descifra datos usando una clave específica para dispositivos. El sistema aplica diferentes clases de cifrado a diferentes tipos de datos:

  • Class A (Protección completa): Los datos se cifran con una clave derivada del código de acceso del usuario y sólo son accesibles cuando el dispositivo está desbloqueado.
  • Class B (Protegido hasta el primer desbloqueo): Los datos se vuelven accesibles después del primer desbloqueo y siguen siendo accesibles hasta que el dispositivo se reinicia.
  • Class C (Protegido A menos que Abierto): Los datos son accesibles siempre y cuando el archivo esté abierto, incluso si el dispositivo está bloqueado.
  • Clase D (No Protección): Los datos están cifrados pero la clave siempre está disponible después de la bota.

Además de encriptación en reposo, iOS impone seguridad de la capa de transporte (TLS) para todas las conexiones de red hechas por los servicios del sistema y muchas aplicaciones. Apple requiere aplicaciones para utilizar HTTPS por defecto y ha deprecatado excepciones de seguridad de la aplicación (ATS) con el tiempo. Esto asegura que los datos transmitidos entre el dispositivo y los servidores se cifran en tránsito, lo que hace difícil para los atacantes interceptar o modificar el tráfico.

Cadena de botas seguras y cuñas de hardware de confianza

Cuando un dispositivo iOS se alimenta, ejecuta código de un solo Boot ROM que se quema en el chip durante la fabricación. Este Boot ROM es inmutable y es la raíz de hardware de la confianza. verifica la firma del siguiente cargador de arranque de fase (iBoot) utilizando la llave pública de Apple. iBoot entonces verifica el núcleo, y el kernel verifica el sistema operativo y todas las extensiones del sistema.

Si cualquier componente falla la verificación de firma, el proceso de arranque se detiene y el dispositivo entra en modo de recuperación. Esta cadena de confianza asegura que sólo el software autorizado por Apple puede funcionar en el dispositivo, desde la primera instrucción. Impide que el malware persista en reiniciamientos y hace que el corte de la cárcel sea cada vez más difícil con cada generación de hardware.

Cómo la sandboxing evita los vectores de ataque comunes

Comprender el impacto práctico de sandboxing ayuda a aclarar por qué iOS es considerada una plataforma segura. Sandboxing bloquea activamente varias técnicas de ataque comunes:

  • ]Exfiltración de datos entre aplicaciones: Sin sandboxing, una aplicación comprometida podría leer los archivos de cada otra aplicación en el dispositivo. Sandboxing evita esto asegurando que cada aplicación tenga su propio sistema de archivos aislado.
  • Modificación del archivo de sistema: El código malicioso no puede sobreescribir los binarios del sistema, las bibliotecas o los archivos de configuración porque esos archivos residen fuera del contenedor de aplicaciones.
  • Acceso a la llave de clave: iOS proporciona una cadena de llaves segura para almacenar tokens y contraseñas sensibles. Cada aplicación sólo puede acceder a sus propios elementos de llavero, y el sistema lo impone a nivel del núcleo.
  • Abuso de procesos de fondo: Las aplicaciones no pueden despachar los demonios de fondo o los agentes sin derechos explícitos, que rara vez se conceden. Esto evita que el malware establezca la persistencia o ejecute procesos ocultos.
  • Secuestramiento de recursos de hardware: Incluso si una aplicación obtiene acceso a la cámara o micrófono mediante avisos de permiso, el sandboxing impide que acceda a otros hardware como el controlador NFC o el Enclave Seguro sin derechos separados.

Estas protecciones significan que incluso las explotaciones de cero clic -que no requieren ninguna interacción de usuario - son severamente limitadas en lo que pueden lograr. Un atacante que explota con éxito una vulnerabilidad en una aplicación de sandboxed todavía enfrenta el desafío de escapar de la caja de arena para lograr una persistencia significativa o acceso a datos.

Implications for Developers

Para los desarrolladores de iOS, sandboxing impone restricciones que dan forma a cómo se diseñan y prueban las aplicaciones. Cada aplicación debe declarar los derechos y capacidades que necesita, y Apple revisa estas declaraciones durante el proceso de aprobación de App Store. Los desarrolladores deben solicitar sólo los permisos mínimos requeridos para que su aplicación funcione, una práctica conocida como el principio de menos privilegio.

Entre las principales consecuencias para el desarrollo cabe citar:

  • Acceso al sistema de archivos: Los desarrolladores no pueden asumir que pueden escribir a directorios arbitrarios. Todo el contenido generado por el usuario debe almacenarse en el directorio de la aplicación, y los archivos temporales deben entrar en .
  • Comunicación de la aplicación: Compartir datos entre aplicaciones requiere mecanismos explícitos como UIActivityViewController, UIPasteboard o grupos de acceso compartidos de Keychain, todos los cuales requieren configuración e interacción de los usuarios.
  • Ejecución de fondo: Las aplicaciones sólo pueden funcionar en el fondo para casos de uso específico, como reproducción de audio, actualizaciones de ubicación o embrague de fondo. Intentar realizar trabajos de fondo arbitrarios resultará en la aplicación que se suspende.
  • ] Gestión de la titulación: Las capacidades como las notificaciones de empuje, Apple Pay y almacenamiento iCloud requieren derechos de presentación de perfiles. Los desarrolladores deben configurarlas en el portal de Apple Developer y asegurarse de que coincidan con el perfil de la caja de arena.
  • ]Testing considerations: Los desarrolladores deben probar sus aplicaciones en dispositivos físicos para verificar el cumplimiento de la caja de arena, ya que el simulador ha relajado reglas de sandbox que no reflejan el comportamiento real del dispositivo.

Apple proporciona documentación y herramientas extensas para ayudar a los desarrolladores a trabajar dentro de las restricciones de la caja de arena. Xcode incluye características de depuración de la caja de arena que las violaciones del acceso al registro, y la guía App Sandbox describe las mejores prácticas para diseñar aplicaciones seguras y compatibles con la caja de arena.

Implicaciones para los usuarios

Para los usuarios cotidianos, sandboxing funciona silenciosamente en el fondo, pero entender que puede ayudar a tomar decisiones informadas sobre los permisos de aplicación y el comportamiento de los dispositivos. Cuando una aplicación solicita acceso a la cámara, micrófono o ubicación, los usuarios deben considerar si la solicitud tiene sentido para la funcionalidad de la aplicación. Una aplicación de linterna que solicita acceso al micrófono, por ejemplo, es probable que viole las expectativas de privacidad.

Los usuarios también deben estar conscientes de que el despilfarro elimina las protecciones de la caja de arena desactivando la aplicación del núcleo. Un dispositivo descompuesto por la cárcel ya no aísla las aplicaciones entre sí o del sistema, lo que hace vulnerable al malware que podría robar datos, instalar spyware o causar inestabilidad del sistema persistente. Apple desalenta fuertemente el despilfarro y la empresa ha hecho cada vez más difícil con cada versión iOS endureciendo la cadena de seguridad del núcleo.

Las mejores prácticas para los usuarios incluyen:

  • Revisar los permisos de aplicación regularmente en Ajustes > Privacidad y Seguridad.
  • Solo conceda permisos que sean necesarios para la función primaria de la aplicación.
  • Mantenga iOS actualizado para recibir los últimos parches de seguridad y mejoras de sandbox.
  • Evite la carga de aplicaciones de fuentes no confiadas, ya que pueden evitar la firma de códigos de Apple y la revisión de seguridad.
  • Permitir ID facial o ID táctil para proteger las claves de cifrado que salvaguardan datos de caja de arena.

La evolución de la seguridad iOS

Apple ha reforzado continuamente las medidas de sandboxing y seguridad desde que iOS introdujo el modelo con iPhone OS 2.0. Los perfiles de sandbox tempranos eran relativamente simples y permitían más flexibilidad, pero a medida que iOS maduraba, los perfiles se volvieron más restrictivos y granulares. La introducción del sistema Entitlements dio a los desarrolladores una manera de solicitar capacidades específicas al mismo tiempo que mantiene la caja de arena predeterminada.

Entre los hitos importantes figuran los siguientes:

  • iOS 6:] Introdujo una VPN por aplicación y mejores clases de protección de datos.
  • iOS 9:] Enabled App Transport Security por defecto, obligando a las aplicaciones a utilizar HTTPS.
  • iOS 12:] Se agregó una caja de arena más estricta para el Contenido Web de Safari e introdujo el modo restringido USB.
  • iOS 14:] Se requiere de todas las aplicaciones para solicitar permiso para rastrear usuarios a través de aplicaciones y sitios web (App Tracking Transparency).
  • iOS 16:] Introdujo el modo de bloqueo para los usuarios que enfrentan amenazas sofisticadas, limitando severamente la superficie de ataque.
  • iOS 17:] Modo de bloqueo ampliado y añadido características de seguridad de la protección y comunicación mejoradas de seguimiento de enlaces.

Cada iteración cierra los vectores de ataque descubiertos por investigadores de seguridad o explotados en el salvaje. Apple también mantiene un programa de recompensa de fallos que recompensa a los investigadores por encontrar vulnerabilidades, incluyendo escapes de caja de arena. Este bucle de retroalimentación ayuda a Apple a identificar debilidades y parchearlos antes de que puedan ser ampliamente explotados.

Conclusión

iOS app sandboxing es un mecanismo de seguridad fundamental que aísla cada aplicación en su propio contenedor, evitando el acceso no autorizado a los recursos del sistema y otros datos de aplicaciones. Al combinarse con la firma de códigos, cifrado de datos, la cadena de botas seguras y permisos de usuario granulares, crea una defensa capa que hace que iOS sea una de las plataformas móviles más seguras disponibles.

Para obtener más información sobre la arquitectura de seguridad de iOS, consulte la Guía de seguridad de Apple y la Guía de codificación de seguridad].