Lotes. No propongo dar una lista exhaustiva, solo algunos ejemplos representativos.
¿la aplicación M puede saber con qué direcciones IP se está comunicando la aplicación A?
Sí, incluso con los ojos cerrados y ambas manos atadas detrás de la espalda. /proc/net/tcp
lista todas las conexiones TCP abiertas. Aquí estoy yo En Android, el uid revela la aplicación; la misma información para un proceso dado está disponible para todos en /proc/$pid/net/tcp
.
shell@android:/ $ cat /proc/net/tcp
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 3600030A:AF4C 10CEFCC6:0050 01 00000000:00000000 00:00000000 00000000 10004 0 402734 1 00000000 37 3 8 10 -1
…
¿Puede la aplicación M saber si la aplicación A está utilizando actualmente algún recurso / sensor de acceso exclusivo (por ejemplo, el micrófono, la cámara, etc.)?
Si el recurso es de acceso exclusivo, la aplicación M puede al menos sondear para ver si el recurso está en uso. M puede correlacionar esta información con las estadísticas de actividad de la aplicación A en /proc/$pid/stat*
.
¿Puede la aplicación M inferir algo sobre el texto que se escribe en la aplicación A a través del teclado virtual en pantalla?
Sí. Los teléfonos inteligentes tienen muchos dispositivos de entrada: cámara, micrófono, acelerómetro,… Con el acelerómetro solo ,
En controlado
Configuraciones, nuestro modelo de predicción puede, en promedio, clasificar el PIN ingresado el 43% del tiempo y el patrón el 73% del tiempo en 5 intentos
cuando se selecciona de un conjunto de prueba de 50 PIN y 50 patrones. En configuraciones no controladas, mientras los usuarios caminan, nuestro modelo todavía puede clasificar
20% de los PIN y 40% de los patrones en 5 intentos.
Esa tasa de éxito es solo entre 50 PIN aleatorios y la tasa de éxito al decidir entre 1974
y 1975
probablemente sería menor. Por otro lado, este estudio utilizaba solo el acelerómetro, y la combinación de otros datos, como la cámara y el tiempo, probablemente mejoraría la velocidad.
Las medidas de tiempo pueden filtrar una gran cantidad de datos; vea la respuesta de Tom Leek .
La información que llega a través de /proc
es específica de Android; Otros sistemas operativos pueden o no exponer esta información. Algo como SEAndroid podría evitar que esta información se filtre a otras aplicaciones. Por otro lado, los problemas del canal lateral no se pueden escapar simplemente por un mejor aislamiento del flujo de datos. Requieren la eliminación de funciones útiles, como la capacidad de indicar la hora o el acceso a dispositivos de hardware mientras se ejecuta otra aplicación, lo que podría ser aceptable en algunas configuraciones (por ejemplo, tarjetas inteligentes) pero no en un teléfono inteligente.