Introducción a la Seguridad en el Desarrollo Móvil

Contenido

La seguridad de las aplicaciones móviles no comienza cuando se lanza un nuevo aplicativo para dispositivos móviles. Más bien, la seguridad de las aplicaciones móviles debe formar parte del desarrollo de las aplicaciones móviles desde el inicio del proyecto.

“Necesitamos enseñar a los desarrolladores a pensar en la seguridad de las aplicaciones móviles desde el principio, y no como una ocurrencia tardía”.

Zubin Irani – Fundador y director ejecutivo de cPrime (Consultora de Transformación Ágil)

Este articulo es una introducción a la sección de seguridad de las aplicaciones móviles con Xamarin Forms. En un inicio este articulo esta dividido en dos partes:

  • Introducción a la Seguridad en el Desarrollo Móvil (Este articulo)
  • Mejores practicas de seguridad con Xamarin Forms (Muy pronto)

Déjame saber en las redes de que te gustaría que hable. Este es un tema que se habla poco pero aquí en lo personal me gusta bastante.

¿Qué es la seguridad de las aplicaciones móviles?

Cuando hablamos de la seguridad de las aplicaciones móviles nos centramos en la postura de seguridad del software y del proceso de desarrollo de las aplicaciones móviles en varias plataformas como Android, iOS y Windows. Esto cubre aplicaciones que se ejecutan tanto en teléfonos móviles como en tabletas o iPads.

La seguridad implica evaluar las aplicaciones en busca de problemas de seguridad en:

  • Contextos de las plataformas en las que están diseñadas para ejecutarse.
  • Frameworks con los que se desarrollan .
  • Grupo de usuarios o testers.

Las aplicaciones móviles son una parte fundamental de la presencia en línea de una empresa y muchas empresas dependen completamente de las aplicaciones móviles para conectarse con usuarios de todo el mundo.

Todas las plataformas móviles proporcionan controles de seguridad diseñados para ayudar a los desarrolladores a crear aplicaciones seguras. Sin embargo, a menudo se deja al desarrollador elegir entre una gran variedad de opciones de seguridad.

⚠ Ten en cuenta: En muchos casos los desarrolladores no tienen conocimiento sobre como proteger sus aplicaciones. La falta de investigación puede llevar a la implementación de funciones de seguridad que los atacantes pueden eludir fácilmente.

Top 10 principales riesgos en aplicaciones móviles

Segun Owasp Foundation (Open Web Application Security Project) y su ultima encuesta enfocada en aplicaciones móviles te presento los 10 principales riesgos en las aplicaciones móviles.

1: Uso Inadecuado de la Plataforma

En este apartado podemos ver el uso indebido de una función de la plataforma o la falta de uso de los controles de seguridad de la plataforma. Puede incluir intenciones de Android, permisos de plataforma, uso indebido de TouchID, o algún otro control de seguridad que sea parte del sistema operativo móvil.

💡Tip:

Para prevenir estos riesgos se deben utilizar prácticas seguras de desarrollo y configuración en el lado del servidor de la aplicación móvil. Refuerza la autenticación de tu aplicación y ten en cuenta como manejas tus archivos locales y remotos.

2: Almacenamiento de Datos Inseguro

Las vulnerabilidades de almacenamiento de datos inseguros ocurren cuando los equipos de desarrollo asumen que los usuarios o el malware no tendrán acceso al sistema de archivos de un dispositivo móvil y a la información confidencial subsiguiente en los almacenes de datos del dispositivo.

Es bueno mencionar que los sistemas de archivos son de fácil acceso y mas aun en los dispositivos móviles.

⚠ Ten en cuenta: Las empresas, organizaciones o equipos de desarrollo no deben esperar que un usuario malintencionado o malware inspeccione los almacenes de datos confidenciales.

💡Tip:

Debe evitarse el uso de bibliotecas de cifrado deficientes. Rootear o hacer jailbreak a un dispositivo móvil elude cualquier protección de cifrado.

Cuando los datos no están protegidos adecuadamente, todo lo que se necesita son herramientas especializadas para ver los datos de la aplicación.

3: Comunicación Insegura

Las aplicaciones móviles con frecuencia no protegen el tráfico de la red. Pueden usar SSL / TLS durante la autenticación, pero no en cada llamada.

Esta incoherencia conlleva el riesgo de exponer los datos y los ID de sesión a la interceptación. El uso de seguridad en el transporte no significa que la aplicación lo haya implementado correctamente.

⚠ Ten en cuenta: Para detectar fallas básicas, observe el tráfico de la red del teléfono. Los defectos más sutiles requieren inspeccionar el diseño de la aplicación y la configuración de las aplicaciones.

4: Autenticación Insegura

Los esquemas de autenticación deficientes o inexistentes permiten a un adversario ejecutar de forma anónima la funcionalidad dentro de la aplicación móvil o el servidor backend utilizado la aplicación móvil.

Una autenticación débil para aplicaciones móviles es bastante frecuente debido a que se quiere una barrera de entrada de usuarios débil. Este factor fomenta en gran medida las contraseñas cortas que a menudo se basan exclusivamente en PIN de 4 dígitos.

Los requisitos de autenticación para aplicaciones móviles pueden ser bastante diferentes de los esquemas de autenticación web tradicionales debido a los requisitos de disponibilidad.

En las aplicaciones móviles, no se espera que los usuarios estén en línea en todo momento durante su sesión. Las conexiones a Internet móviles son mucho menos fiables o predecibles que las conexiones web tradicionales.

💡Tip:

Las aplicaciones móviles pueden tener requisitos de tiempo de actividad que requieran autenticación fuera de línea.

Este requisito fuera de línea puede tener profundas ramificaciones en aspectos que los desarrolladores deben tener en cuenta al implementar la autenticación móvil.

5: Criptografía Insuficiente

El uso inseguro de la criptografía es común en la mayoría de las aplicaciones móviles que aprovechan el cifrado.

De forma predeterminada, las aplicaciones de iOS están protegidas (en teoría) de la ingeniería inversa a través del cifrado de código. El modelo de seguridad de iOS requiere que las aplicaciones estén encriptadas y firmadas por fuentes confiables para poder ejecutarse en entornos sin jailbreak.

🚨Note: De igual manera las aplicaciones iOS, con las herramientas correctas, pueden ser desencriptadas.

💡Tip:

Asume siempre que un adversario podrá eludir cualquier cifrado de código integrado ofrecido por el sistema operativo móvil.

6: Autorización Insegura

Es importante reconocer la diferencia entre autenticación y autorización. La autenticación es el acto de identificar a un usuario. La autorización es el acto de comprobar que la persona identificada tiene los permisos necesarios para realizar una acción. Los dos están estrechamente relacionados, ya que las verificaciones de autorización siempre deben seguir inmediatamente a la autenticación de una solicitud entrante desde un dispositivo móvil.

Si una organización no puede autenticar a un usuario antes de hacer una llamada al API desde un dispositivo móvil, entonces el código también sufre automáticamente de una autorización insegura. Es esencialmente imposible que se realicen verificaciones de autorización en una solicitud entrante cuando no se establece la identidad de la persona que llama.

7: Mala Calidad del Código

Los problemas de calidad en el código son bastante frecuentes. La buena noticia es que la mayoría de los problemas de calidad del código son bastante benignos y dan como resultado una mala práctica de programación.

Por lo general, es difícil detectar este tipo de problemas mediante la revisión manual del código. En su lugar, los atacantes utilizarán herramientas de terceros para identificar pérdidas de memoria, desbordamientos de cache y otros problemas menos graves que resultan en una mala práctica de programación.

8: Manipulación de Código

Modificar las formas de las aplicaciones son sorprendentemente más comunes de lo que crees. Existe toda una industria de seguridad construida alrededor de la detección y eliminación de versiones no autorizadas de aplicaciones móviles dentro de las tiendas de aplicaciones.

Dependiendo del enfoque adoptado para resolver el problema de detección de modificaciones de código, las organizaciones o empresas pueden tener formas limitadas a altamente exitosas de detectar versiones no autorizadas de código de sus aplicaciones.

Una vez que la aplicación se entrega al dispositivo móvil, el código y los recursos de datos residen allí. Un atacante puede modificar directamente el código, cambiar el contenido de la memoria de forma dinámica, cambiar o reemplazar las API del sistema que utiliza la aplicación o modificar los datos y recursos de la aplicación. Esto puede proporcionar al atacante un método directo de subvertir el uso previsto del software para beneficio personal o monetario.

⚠Warning: Aunque el código móvil es inherentemente vulnerable, es importante preguntarse si vale la pena detectarlo y tratar de evitar la modificación no autorizada del código.

Las aplicaciones escritas para ciertas verticales comerciales (juegos, por ejemplo) son mucho más vulnerables a los impactos de la modificación del código que otras (hospitalidad, por ejemplo). Como tal, es fundamental considerar el impacto comercial antes de decidir si abordar o no este riesgo.

9: Ingeniería Inversa

Generalmente, todo el código móvil es susceptible de ingeniería inversa. Algunas aplicaciones son más susceptibles que otras. El código escrito en lenguajes / marcos que permiten la introspección dinámica en tiempo de ejecución (Java, .NET, Objective C, Swift) están particularmente en riesgo de ingeniería inversa.

💡Tip:

Detectar la susceptibilidad a la ingeniería inversa es bastante sencillo. Primero, descifre la versión de la tienda de aplicaciones de la aplicación (si se aplica el cifrado binario). Luego, con las herramientas adecuadas podrás analizar el binario.

El código será susceptible si es bastante fácil de entender la ruta del flujo de control de la aplicación, la tabla de cadenas y cualquier pseudocódigo / código fuente generado por estas herramientas.

10: Funcionalidad Extraña

Un atacante descargará y examinará tu aplicación móvil dentro de su propio entorno de desarrollo. Examinarán los archivos de registro, los archivos de configuración y quizás el binario en sí para descubrir cualquier conmutador oculto o código de prueba que los desarrolladores dejaron atrás. Explotarán estos conmutadores y la funcionalidad oculta en el backend para realizar un ataque.

Conclusión

Acabaste de ver solo algunos de los apartados mas comunes cuando se habla de seguridad en el desarrollo móvil. Obviamente no todos los casos aplican para todas las aplicaciones, todo va a depender de la necesidad planteada.

En la segunda parte de esta sección, llevaremos estos conceptos al area de desarrollo con Xamarin donde veremos como podemos protegernos de manera segura.

Espero que este articulo les sea de mucha utilidad, y cualquier comentario me lo dejan en la caja de abajo. Si quieres que escriba sobre un contenido especifico déjamelo saber en las redes y si tu solicitud gusta mucho es muy probable que lo veamos por aquí.

Nada, recordarles que estoy compartiendo muchísimo contenido en Twitter y LinkedIn para los que quieran darse una vueltica por allá.

Sin nada mas que agregar, ¡Nos vemos en la próxima!

¿Qué opinas de este contenido?
 
Luis Matos

Luis Matos

I help professionals and companies to create value solutions. I am a Systems Engineer, blockchain executive, and international mobile application speaker. Founder of the Malla Consulting Agency and several international technology communities.
Suscribirte
Notificar de
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x

Buscar en el sitio