En una reciente conferencia sobre seguridad realizada en la Universidad Europea de Madrid, Alejandro Ramos (@aramosf) impartió una conferencia con demostraciones de fallos de seguridad en apps diseñadas para sistemas iOS. La presentación completa la tenéis en SlideShare, y lleva incluidos los vídeos de todas las demostraciones, con lo que se pueden ver no sólo las explicaciones, sino paso a paso los vídeos.
La presentación primero sitúa las vulnerabilidades siguiendo el OWASP Mobile Top Ten Security Risks , para explicar cada una de las demostraciones. Este proyecto, al igual que el OWASP Top Ten que recoge las vulnerabilidades más explotadas en aplicaciones web, cataloga cuáles son los 10 riesgos de seguridad más importantes en las apps diseñadas para dispositivos móviles, y en esa sesión se aplica a las apps desarrolladas para iOS.
Ejemplo 1: App de CINESA
El primer ejemplo es con la app del grupo CINESA destinada a gestionar los puntos de fidelización. En ella, la vulnerabilidad que tiene lugar es que el envío de credenciales de acceso es totalmente inseguro, al enviarse usuario y contraseña por parámetros GET, sin codificación alguna y sin hacer uso de HTTPs. Esto hace que cualquier conexión en una red compartida deje las URLs con los datos de acceso al alcance de cualquiera.
Figura 2: Vídeo de la demostración sobre la app de CINESA
El segundo ejemplo que se mostró es con la app Runkeeper, destinada a quienes quieren compartir sus logros deportivos con el resto del mundo. Esta app tiene activado el uso del Apple System Log para el envío de la información de debugging, y entre otra información envía el token OAuth que se utiliza para publicar en Twitter, es decir, cualquier otra app del sistema podría robar este valor y usarlo para publicar twitts con él y hacer spam.
Figura 3: Vídeo demostración sobre la app de Runkeeper
Ejemplo 3: Juego Dark Nebula
En este caso el juego solo desbloquea niveles cuando se han superado las anteriores, pero los niveles se almacenan en local, con lo que es posible manipular el nivel en que se encuentra un jugador, y por supuesto su puntuación.
Figura 4: Demostración con la app del juego Dark Nebula
Ejemplo 4: App de Dropbox
Este ejemplo de almacenamiento inseguro ya lo habíamos publicado por aquí, ya que se trata del PIN de Dropbox que bloquea el acceso a la app. Este PIN está guardado en texto plano y cualquiera puede leerlo y acceder a él.
Ejemplo 5: Robo de sesión de la app de Facebook
Este caso se debe a que la app de Facebook para iOS almacena cookies persistentes con información de la sesión de usuario. Esto permitiría a cualquier persona con acceso al terminal o al backup, robar una sesión de Facebook. Esto se explica en detalle en el libro de Hacking iOS: iPhone & iPad, y se ha publicado la aplicación Facebook Recover que permite hacer esto con un simple botón.
Figura 6: Facebook Recover |
Ejemplo 6: App de cifrado MobiSafe
Esta app permite a un usuario cifrar las fotos con un cifrado robusto, pero el PIN que cifra y descifra las fotos es de solo 4 dígitos y se almacena en formato MD5 dentro de una base de datos SQLite, lo que permite a cualquiera con acceso desproteger cualquier fotografía.
Figura 7: Vídeo demostración con la app MobiSafe
La charla fue muy instructiva y una llamada para la atención a los desarrolladores de apps para iOS. En el libro de Desarrollo iOS: iPhone & iPad se tocan muchos de estos temas para evitar este tipo de errores tan habiutales.
No hay comentarios:
Publicar un comentario