viernes, junio 24, 2016

Los 10 errores mas comunes de seguridad de aplicaciones móviles

Para el 2016 se preven 14.1 millones de usuarios de smartphones en Argentina. El intercambio y manejo de información personal (generalmente sensible) desde los smartphones afecta una gran cantidad de personas que en la gran mayoría de los casos ignoran qué está sucediendo con esa información. Que ocurre con la seguridad y cuáles son las principales 10 vulnerabilidades de seguridad relacionadas a los dispositivos móviles, según Pablo Manera Benítez, un especialista en el tema.
Los 10 errores mas comunes de seguridad de aplicaciones móviles
Estado de los dispositivos móviles en el mercado local
 Al inicio del 2015 (en Argentina) existían 10,8 millones de usuarios de smartphones que representaban un 36% de la población total según un estudio de “emarketer” (http://www.emarketer.com/Article/2-Billion-Consumers-Worldwide-Smartphones-by-2016/1011694).

 
En ese mismo estudio se preveía para el 2016 unos14.1 millones de usuarios.

Estado de conciencia en la seguridad de las aplicaciones móviles
Cada dispositivo actual posee una gran cantidad de aplicaciones que alojan, envían y reciben información sensible (como coordenadas de ubicación, saldos, búsquedas, fotos, videos, etc.).
El intercambio y manejo de información personal (generalmente sensible) desde los smartphones afecta una gran cantidad de personas que en la gran mayoría de los casos ignoran qué está sucediendo con esa información, donde está alojada, para que se utiliza, o incluso que esa información existe en sus dispositivos.
Es por eso que desde los Web Services y en la aplicación local (y cualquier otro componente que intervenga en el manejo de los datos de usuarios) debe protegerse la integridad y confidencialidad de los mismos como política de seguridad.
Algunas veces, las aplicaciones se publican (comercializan, propagan, etc.) con todo su esfuerzo aplicado a las funcionalidades de la misma y la seguridad queda en un segundo plano, o incluso es nula.

 

Riesgos generales en la tecnología móvil  actual:
Las vulnerabilidades en la tecnología móvil pueden enmarcarse en diferentes categorías. Estas pueden encontrarse explicadas más ampliamente en organizaciones dedicadas como OWASP.
A continuación se explica de manera resumida y genérica las principales 10 vulnerabilidades de seguridad relacionadas a los dispositivos móviles:

“Controles débiles del lado del servidor”
Este tipo de vulnerabilidades afecta directamente al servidor y la seguridad debe depender exclusivamente del mismo.
Las vulnerabilidades que afectan a esta categoría están asociadas a falta de controles y defensas por parte del servidor que espera que los clientes consuman sus servicios a través de parámetros de entrada (inputs de los servicios), que sin las protecciones necesarias puede generar eventos indeseados.
No es necesario que los ataques se efectúen desde un equipo móvil, en algunos casos se puede realizar un ataque desde un navegador Web o scripts sencillos desde una PC común.

“Alojamiento inseguro de Información”
Esta vulnerabilidad ocurre cuando información sensible es alojada en el dispositivo móvil con ninguna o pocas protecciones.
Es común ver que las aplicaciones utilizan archivos, bases de datos livianas, etc. para guardar datos.
Esta información podría ser accedida por malware o usuarios que no deberían tener acceso físico (tener en cuenta que los equipos pueden ser robados).
Es por eso que es necesario proteger dicha información no guardando datos a menos que sea absolutamente necesario y con datos que no sean sensibles. Como medida extra se puede recurrir al almacenamiento cifrado.
Tampoco hay que confiar en la separación de privilegios del S.O., ya que los equipos pueden ser rooteados o jailbreakeados.

Protección insuficiente en la capa de transporte
Aquí se presenta el histórico problema en el que las comunicaciones viajan en texto plano y quedan expuestas a cualquiera que pueda observar que ocurre en la red. Ya sea a través de analizadores de protocolos o cualquier aplicación que pueda ponerse en el medio de la comunicación entre el dispositivo cliente y los servidores a los que se conecta.
La mitigación de esta vulnerabilidad es la que desde la seguridad ofensiva venimos alertando hace años: “Forzar el uso de TLS para las comunicaciones que transaccionan información sensible a través de certificados de confianza”, credenciales, información confidencial, etc.

Fuga de datos involuntaria
La “Fuga de datos involuntaria” ocurre cuando la aplicación guarda datos sensibles en ubicaciones del dispositivo que pueden ser accedidos por cualquier persona o aplicación.
Esto ocurre generalmente sin el consentimiento o sin el conocimiento de los desarrolladores.
Es muy común dejar funciones activas como “debug=on” en las aplicaciones desarrolladas y que luego estas en producción comiencen a dejar información sensible en logs accesibles del sistema operativo del smartphone, tablet, etc.
La mitigación en este caso pasa por comprender las funciones y particularidades del sistema operativo y los frameworks de desarrollo con los que se trabaja, para evitar funciones por defecto (que desconozcan los desarrolladores) y guarde información en lugares desconocidos.

Autenticación y autorización débiles
Esta debilidad radica en los mecanismos de autenticación y autorización poco efectivos que permiten a un usuario anónimo ejecutar acciones en nombre de un usuario válido o incluso a un usuario válido ejecutar acciones privilegiadas a nombre de otro.
Las vulnerabilidades asociadas a la autenticación y autorización débiles consisten en saltar las protecciones de login o funciones de aprobación para realizar determinadas acciones.
La manera de mitigar esta vulnerabilidad es asumiendo que los procesos de autorización y autenticación desde el lado del dispositivo cliente son fácilmente “bypasseables” y que se deben reforzar estas medidas desde el lado del servidor.

“Criptografía rota/quebrada
Cuando un atacante o proceso malicioso puede revertir el proceso de cifrado con el fin de llegar a los datos originales estamos frente a la vulnerabilidad de “Criptografía quebrada”.
Este problema suele aparecer por el uso de algoritmos de cifrado débiles como RC2 o algoritmos de hashing con problemas de seguridad como MD4, MD5, etc.
El uso llaves débiles (generadas sin políticas de contraseñas robustas) también concluye en la posibilidad de romper la criptografía.
Algo poco visto pero que debe de tenerse en cuenta es evitar el uso de algoritmos de cifrados propios, asumiendo que el desconocimiento del proceso de transformación bit a bit fortalece un cifrado. Es bien conocido que la seguridad por oscuridad no es seguridad realmente.
Por último, recordar que Base64 NO es un cifrado, es un algoritmo de encoding reversible.

“Inyección del lado del cliente
Si bien este tipo de vulnerabilidades está dirigido al cliente (dispositivo móvil), los vectores de ataques son varios.
El atacante va a intentar realizar acciones maliciosas contra el cliente y no contra el servidor.
Las formas de atacar el cliente pueden ir desde levantar un servidor Web y esperar a que los clientes se conecten con un navegador Web para intentar hacer descargar y ejecutar una aplicación binaria o generar la ejecución de scripts en JavaScript para que el usuario realice acciones indeseadas.
La respuesta sencilla para mitigar esto es “validar todos los inputs” de la aplicación del dispositivo. Es una buena práctica desactivar los plugins de JavaScript y proteger las cookies.
Hay aplicaciones que toman variables de servicios (web, etc.) y en base a eso realizan consultas a su propia base de datos. Esto puede aprovecharse para realizar ataques de inyección SQL, así que es importante también validar en la aplicación cliente los datos ingresados (validar inputs).

Decisiones de seguridad a través de entradas no confiables
Esta vulnerabilidad se presenta cuando la aplicación utiliza datos (que suelen estar ocultos) en la misma para permitir funcionalidades especiales (como niveles de accesos, aprobaciones, etc.)
Un atacante malicioso podría cambiar un valor dentro de la aplicación, comunicación (Web Services) o incluso interferir un proceso (IPC hooking) y alterar el funcionamiento de la aplicación para que la misma realice acciones especiales o le de acceso a estas acciones.
La mitigación de esta vulnerabilidad es controlar los procesos y también tener una lista blanca de aplicaciones conocidas.

Mal manejo de sesiones
El “Mal manejo de sesiones” ocurre cuando una token de sesión (sobre protocolos como HTTP ó SOAP) se mantiene en el servidor por un periodo de validez muy largo, cuando la generación de la token carece de complejidad (como por ejemplo que la token esté compuesta por el nombre de usuario y la fecha de login) o la longitud es muy corta.
Utilizar las mismas tokens (cookies) previas a la autenticación también está considerado como “Mal manejo de sesiones”.
Para mitigar esta vulnerabilidad es necesario mantener la premisa de seguridad en las sesiones desde el desarrollo, mantenimiento y eliminación de tokens de sesión.

Ausencia de protecciones de binarios
En un resumen rápido, esta vulnerabilidad radica en la posibilidad de analizar y modificar la aplicación en el dispositivo móvil. Esto normalmente está ligado a la realización de ingeniería inversa.
Es muy difícil implementar un “único” mecanismo de control final que mitigue por completo esta vulnerabilidad.
Sin embargo es posible minimizar el riesgo a través de varias capas de seguridad como por ejemplo:
  • Controles de “certificate pinning”.
  • Controles de “checksum”.
  • Detecciones de debuggers.
  • Uso de técnicas de ofuscación de código.
  • Detección de jailbreaking o rooting del dispositivo.

Conclusiones
La mayoría de las aplicaciones para los dispositivos móviles poseen vulnerabilidades de seguridad. Es altamente recomendable el desarrollo de las aplicaciones móviles en un entorno seguro en las distintas fases del ciclo de vida del desarrollo de la Aplicación.
Protegiendo nuestra aplicación contra estas 10 vulnerabilidades presentadas lograremos un elevado nivel de seguridad y confianza en nuestra App.

Pablo Manera Benitez, Consultor Experto De Cybsec.
Especializado en Ethical Hacking. Posee las certificaciones internacionales: CEH, ECSA y RSA-CSE; amplio conocimiento en pentesting de aplicaciones web, mobile y pruebas de intrusión sobre infraestructura. También cuenta con valiosa experiencia en researching y desarrollo de aplicaciones. Actualmente se encuentra investigando seguridad en sistemas SCADA.

No hay comentarios.: