Para entender esta vulnerabilidad, es necesario comprender que una de las maneras que tiene Apple de protege a sus usuarios es mediante el control de cómo el software de terceros interactúa con iOS. Una aplicación iOS sólo puede ejecutarse en segundo plano durante un tiempo limitado antes de la que la aplicación sea suspendida por iOS. Generalmente este plazo es de tres minutos. Esta limitación no sólo ayuda a garantizar la capacidad de respuesta predecible en la interacción del usuario, sino que también evita que cualquier aplicación de espionaje se ejecute en el fondo. Por ejemplo, una aplicación de música puede tener razón legítima para pedir permiso para acceder a la ubicación GPS y el micrófono mientras se trabaja en el primer plano, pero pocos usuarios querría que la aplicación se ejecute en segundo plano para monitorear continuamente ubicaciones GPS y grabación de audio. El control por parte de iOS se supone que es para evitar esos abusos de los permisos.
El conmutador de tareas iOS es una interfaz que muestra la lista de aplicaciones recientemente abiertas. Cuando un usuario cierra una aplicación pulsando el botón de inicio, la aplicación pasa a segundo plano, y está sujeta a ciertas limitaciones estrictas impuestas por iOS en aplicaciones de fondo. Además, el usuario puede optar por apagar completamente una aplicación mediante la eliminación desde el conmutador de tareas.
La vulnerabilidad Ins0mnia permitió que una aplicación pueda eludir estas limitaciones. Una aplicación maliciosa podría aprovechar la vulnerabilidad Ins0mnia para ejecutarse en segundo plano y robar información confidencial del usuario por un tiempo ilimitado sin el consentimiento o conocimiento del usuario. Esta información sensible podría entonces continuamente se enviada a un servidor remoto. Este fallo también podría ser aprovechado para reducir drásticamente el rendimiento del dispositivo y la usabilidad del sistema. Incluso podría ser usado para drenar la batería.
El ataque consistía en engañar al iDevice haciéndole creer que se está depurando la aplicación iOS. Esto impidió que el sistema de suspensión de la aplicación se ejecutara cuando la duración de fondo permitida expiró.
Si una aplicación aprovechara esta vulnerabilidad y el usuario retira la aplicación de conmutador de tareas, la aplicación seguirá ejecutándose en segundo plano, mientras que el usuario cree que la apliacción había sido cerrada por completo.
También nos dimos cuenta de que una aplicación no necesitaba el derecho get-task-allow, un malware Ins0mnia no requiere que Apple permita nada. Creemos que tal aplicación tenía una alta probabilidad de pasar el examen de Apple Store, por lo que es una laguna poco común para un atacante para distribuir malware dentro del jardín amurallado de Apple.
Demostración
Este vídeo muestra una aplicación de iOS malicioso que el usuario cree que ha terminado, pero que sigue funcionando sin el conocimiento del usuario y envía actualizaciones de ubicación de la víctima al atacante.