¿Qué es la seguridad de las aplicaciones móviles y por qué es importante?
El propósito principal de las pruebas de seguridad es identificar y mitigar las vulnerabilidades y debilidades en las aplicaciones de software y en los sistemas para salvaguardarlos contra amenazas y ataques. Pero, ¿qué es la seguridad de las aplicaciones móviles y en qué se diferencia de las medidas de seguridad para aplicaciones de escritorio y web? Es crucial comprender este concepto como parte de la seguridad de sus aplicaciones móviles.
Sabiendo que el 66,8% de los servicios de las empresas se consumen a través de aplicaciones móviles, probar la seguridad de estas aplicaciones y establecer una estrategia de seguridad se vuelve evidente.
Si bien las empresas podrían verse tentadas a cubrir las pruebas de seguridad de sus aplicaciones móviles utilizando herramientas genéricas utilizadas para aplicaciones web o código fuente, el enfoque mostrará rápidamente sus límites debido a la superficie de ataque única de los dispositivos móviles (Intents, URL Schemes, Permissions, Cross App Interaction, Shared Preferences...), clases específicas de vulnerabilidades, las características del sistema operativo y la cantidad de frameworks disponibles utilizados para desarrollar aplicaciones móviles (Native, Flutter, Xamarin, React Native, Cordova, Ionic...). Por lo tanto, para responder realmente a la pregunta "¿Qué es la seguridad de las aplicaciones móviles?", necesitamos tener un conocimiento profundo de estos desafíos y vulnerabilidades específicos de los móviles.
Las pruebas de seguridad de aplicaciones móviles (Mobile App Security Testing - MAST) deben comprender el espacio de las aplicaciones móviles y la seguridad y cubrir por completo su superficie de ataque en los datos almacenados en el dispositivo, los datos transportados al backend y las vulnerabilidades del backend. Debe cubrir las aplicaciones móviles nativas, híbridas y basadas en web, ya que cada framework tiene su propia lógica para acceder e interactuar con el hardware que podría causar un riesgo real si no se entiende correctamente.
¿Qué es la seguridad de las aplicaciones móviles?
Es el proceso de salvaguardar la superficie de ataque de las aplicaciones móviles mediante pruebas exhaustivas que consideran tanto las aplicaciones móviles nativas, híbridas como las basadas en web.
¿Por qué es importante la seguridad de las aplicaciones móviles?
La seguridad de las aplicaciones móviles es crucial porque una brecha de seguridad puede resultar en robo de datos, pérdidas financieras y daño a la confianza del usuario, lo que puede tener graves consecuencias tanto para particulares como para empresas. Ha habido varios hackeos de aplicaciones móviles de alto perfil en los últimos años, lo que ilustra la importancia de la seguridad de las aplicaciones móviles. El ataque de software espía a WhatsApp (WhatsApp Spyware Attack en 2019) permitió a los atacantes instalar software espía en los teléfonos de los usuarios o la aplicación de British Airways (British Airways App en 2018), donde los atacantes accedieron a la información personal y financiera de unos 380.000 usuarios a través de una vulnerabilidad en la aplicación móvil y el sitio web de la aerolínea. Además, la protección de las aplicaciones móviles ayuda a proteger contra el malware, el acceso no autorizado y otras vulnerabilidades, garantizando que se mantenga la integridad, la confidencialidad y la disponibilidad de los datos de los usuarios.
El Task hijacking (secuestro de tareas) es uno de los múltiples ataques que tuvo un alto impacto en las aplicaciones móviles debido a un comportamiento específico de Android que lleva al usuario a filtrar datos confidenciales a una aplicación maliciosa mientras interactúa con una aplicación normal.
El malware bancario (Banking malware) explotó en gran medida el task hijacking en 2019 (un aumento del 45% en 2020), lo que permitió a los atacantes interceptar datos confidenciales del usuario y credenciales durante las sesiones de banca online.
Además, las aplicaciones móviles dependen en gran medida de dependencias de terceros; por lo tanto, el análisis de esas dependencias es obligatorio para evitar debilitar la seguridad de la aplicación debido a una dependencia vulnerable. Por ejemplo, Dio, uno de los paquetes de Dart más utilizados, sufrió múltiples problemas de gravedad alta (High severity), lo que subraya una vez más la importancia de qué es la seguridad de las aplicaciones móviles y por qué debe gestionarse correctamente.
El proceso de pruebas de seguridad de aplicaciones móviles puede ejecutarse manualmente o mediante la utilización de herramientas automatizadas que emplean una amplia gama de técnicas.
- Fuente: datareportal.com
¿Cómo probar la seguridad de las aplicaciones móviles?
Pruebas de penetración (Penetration testing)
Las pruebas de penetración (pentesting) son un proceso de evaluación de seguridad proactivo y metódico realizado por una entidad externa, a menudo hacia las últimas etapas del ciclo de vida de desarrollo de software (SDLC). Los examinadores utilizan herramientas automatizadas y técnicas manuales para identificar las vulnerabilidades, las malas configuraciones y las debilidades de la aplicación de destino.
El pentesting se emplea comúnmente para cumplir con los mandatos regulatorios y, a menudo, se adapta a objetivos específicos dentro de un marco de tiempo restringido.
Si bien es eficaz, es un proceso costoso, que requiere mucho tiempo y solo captura una vista restringida en un momento determinado. La duración de las pruebas de penetración de una aplicación móvil suele ser de una a cuatro semanas, según la complejidad de la aplicación, la profundidad de las pruebas y el alcance del pentest.
Los desarrolladores de aplicaciones tienen como objetivo publicar actualizaciones en la tienda de aplicaciones cada 3 a 6 semanas. La realización de pentests a intervalos poco frecuentes no se alinea con la velocidad de los equipos de desarrollo y se pueden introducir vulnerabilidades entre el período de pentest.
Pruebas de seguridad automatizadas de aplicaciones móviles
Las pruebas de seguridad automatizadas de aplicaciones móviles se basan en varias herramientas para analizar el software e identificar posibles vulnerabilidades.
Las herramientas automatizadas se integran a la perfección en el ciclo de vida de desarrollo de software (SDLC) y encajan en el pipeline de Integración Continua y Entrega Continua (CI/CD).
Estas herramientas ofrecen una solución rentable, que permite al equipo de desarrollo realizar evaluaciones de seguridad periódicas, rápidas y eficaces, y abordar con prontitud cualquier problema detectado. Proporcionan una cobertura completa del código de la aplicación y pueden descubrir una amplia gama de hallazgos de seguridad, garantizando una defensa sólida contra posibles amenazas.
Las pruebas de seguridad automatizadas de aplicaciones móviles son escalables, lo que permite a los equipos de desarrollo con muchas aplicaciones o una alta velocidad de desarrollo probar sus cambios sin afectar a su proceso de desarrollo.
El 96% de las empresas que implementan pruebas de seguridad de aplicaciones móviles automatizadas cumplen a tiempo con sus requisitos de seguridad para la tienda o con la normativa, y el 83% confirmó cumplir con sus objetivos de nivel de servicio (SLO) para solucionar hallazgos de gravedad alta (high) y media (medium).
*Fuente Gartner
Un gran inconveniente de las herramientas de prueba de seguridad de aplicaciones móviles automatizadas es la cantidad de hallazgos de falsos positivos que informan. Por este motivo, es importante comprobar la tasa de falsos positivos y la política para evitar inundar a los desarrolladores con hallazgos inútiles.
Bug Bounty
Las pruebas de seguridad de aplicaciones con colaboración abierta distribuida (programas de bug bounty) presentan una vía adicional para las pruebas de seguridad de aplicaciones móviles.
Los programas de bug bounty pueden abrir las pruebas de seguridad a varios examinadores con diferentes niveles de experiencia. Según la popularidad y reputación del programa, la cobertura puede ser exhaustiva y continua, ya que permanece activa durante todo el período del programa, y el examinador puede tener diferentes enfoques para identificar los fallos de seguridad.
Los programas de bug bounty pueden servir como valiosos complementos a los protocolos de seguridad existentes, pero no deben servir como reemplazos directos de un proceso de seguridad interno, ya que probar la seguridad de la aplicación debe comenzar desde la fase de diseño hasta el lanzamiento; de lo contrario, el proceso de corrección será ineficaz y los atacantes podrán beneficiarse de la falta de pruebas de seguridad y explotar esas vulnerabilidades.
Un desafío importante es la posibilidad de que haya una afluencia de informes incorrectos o de baja calidad por parte de los participantes. Esto puede dar lugar a un gran intercambio de comunicaciones entre la organización y los investigadores, consumiendo tiempo y recursos. Clasificar numerosos falsos positivos o informes vagos puede resultar frustrante y puede retrasar la resolución de problemas de seguridad legítimos.
Técnicas de prueba de seguridad de aplicaciones móviles
Las pruebas de seguridad de aplicaciones móviles se basan en diversas técnicas, a menudo categorizadas como análisis estático, análisis dinámico, análisis interactivo/de comportamiento y pruebas de API/Backend, en el entendimiento de que estas técnicas no son mutuamente excluyentes y pueden superponerse.
Análisis estático
El análisis estático constituye una metodología de prueba que analiza el código fuente o binario de la aplicación y recursos adicionales para identificar problemas de seguridad particulares.
Esto se logra a través de diversas técnicas de análisis capaces de un examen automatizado sin ejecutar el código de la aplicación:
- Configuration Checks (Comprobaciones de configuración): Comprobaciones de configuración de parámetros no seguros. Estos parámetros incluyen los parámetros de la plataforma como
AndroidManifest.xml,Info.plist settings, los parámetros delCordova Framework, la configuración de la red, etc. - 3rd Party Dependencies (Dependencias de terceros): Se toman huellas digitales (fingerprint) de las dependencias de la aplicación para identificar las que tienen vulnerabilidades conocidas. Las dependencias pueden declararse directamente como un complemento o compilarse dentro de la aplicación. La dependencia
OpenSSLes un caso de uso común en las aplicaciones móviles, donde podría enviarse con una versión vulnerable. - Hardcoded Secrets (Secretos codificados en duro): Extraiga toda la información confidencial, como contraseñas, claves de API (API keys) o claves criptográficas, que están directamente incrustadas en el código fuente de una aplicación móvil. Las claves del
Cloud provider(proveedor en la nube) o loscertificados privados SSHson hallazgos críticos comunes en las aplicaciones móviles. - Taint Analysis (Análisis de manchas): se utiliza para identificar y rastrear el flujo de información confidencial (teinte o mancha) dentro del código de una aplicación móvil y sus interacciones con entidades externas como recursos del sistema, entradas de usuario o comunicaciones de red. Este análisis es fundamental para identificar posibles vulnerabilidades de seguridad relacionadas con la fuga de datos, los ataques de inyección o el manejo inadecuado de datos confidenciales.
Análisis dinámico
El análisis dinámico es un enfoque de prueba que supervisa el comportamiento de la aplicación en un dispositivo real o en un emulador/simulador/VM. Este método resulta particularmente valioso para descubrir vulnerabilidades que se manifiestan exclusivamente cuando la aplicación se está ejecutando activamente, como en los casos en que la aplicación interactúa con un servidor. Mientras la aplicación se está ejecutando, el análisis dinámico supervisa todas las interacciones con el sistema de archivos (almacenamiento, base de datos), las comunicaciones entre procesos (IPC), los accesos a la memoria y la red para identificar fallos de seguridad en relación con datos confidenciales, la gestión de sesiones, la autenticación, el proceso de autorización y el análisis de transmisión de datos. Según las estadísticas de Google, el 20% de las aplicaciones móviles todavía se comunican utilizando tráfico en texto claro (clear text traffic) y el 41% tiene una configuración TLS incorrecta o no segura.
Análisis interactivo/de comportamiento
Además del análisis dinámico, las pruebas de comportamiento evalúan el comportamiento de la aplicación mientras se ejecutan activamente las pruebas. Utiliza la instrumentación para rastrear y analizar cómo fluyen los datos dentro de las aplicaciones y señala todos los patrones peligrosos que llaman a un módulo vulnerable o utilizan un argumento peligroso.
Existen múltiples técnicas para la instrumentación de aplicaciones móviles y corresponde al examinador de seguridad de aplicaciones móviles elegir la forma correcta de instrumentar la aplicación según su framework (Sistema operativo nativo vs. JavaScript vs. .NET vs. Flutter).
La interacción con el dispositivo puede ser manual o totalmente automatizada, aunque se prefiere la automatización, y las pruebas deben maximizar la cobertura de la aplicación para validar las rutas máximas en el código.
Análisis de API/Backend
El análisis de API/Backend es esencial para las pruebas de seguridad de las aplicaciones móviles. Se centra en el escaneo de las API, los backends y las comunicaciones externas. Este análisis evalúa la seguridad del intercambio de datos y los servidores de backend que se comunican con el dispositivo. El propósito del análisis del backend:
-
Comprobar los fallos de seguridad en los servidores de backend. Múltiples empresas pueden confiar en otras herramientas para evaluar esta parte, ya que el backend suele ser común entre las aplicaciones web y móviles. Sin embargo, es importante validarlo desde la vista del dispositivo, ya que algunas hipótesis podrían ser impuestas por el navegador web pero no dentro de la aplicación móvil. Por ejemplo, en un sitio web al que se accede a través de un navegador web, se aplica la política del mismo origen (
same-origin policy), que restringe el contenido web para interactuar únicamente con los servidores backend del mismo dominio. Esto significa que elJavaScriptque se ejecuta en una página web no puede acceder ni manipular directamente los datos de un dominio diferente. La política proporciona una capa de seguridad para prevenir ataques decross-site scripting (XSS)y violaciones de datos. Sin embargo, en el contexto de las aplicaciones móviles, esta hipótesis no siempre se aplica. Las aplicaciones móviles tienen formas más flexibles de compartir y acceder a los datos. Por ejemplo, pueden utilizarinterfaces nativas de JavaScript,esquemas de URL personalizados(custom URL schemes) o API específicas que les permitan eludir las restricciones de lasame-origin policy. Esta flexibilidad puede ser ventajosa para la funcionalidad de la aplicación, pero también introduce riesgos de seguridad potenciales. -
Comprobar la privacidad de los datos enviados desde la aplicación, ya que las aplicaciones dependen en gran medida de terceros para la publicidad, la analítica (analytics), la supervisión (monitoring), etc. Los datos extraídos del dispositivo del usuario pueden ser demasiado intrusivos y podrían ser ilegales. Un caso de uso común son las bibliotecas de analytics que recopilan las
ID de los dispositivos(device IDs),las ubicaciones de los dispositivosy lasIP, que se consideran Información de identificación personal (PII) y múltiples legislaciones de privacidad protegen contra esas prácticas.
Tipos de herramientas para pruebas de seguridad automatizadas de aplicaciones móviles
Herramientas de prueba de código abierto (Open source)
Las herramientas de código abierto ofrecen un punto de partida valioso para iniciar las pruebas de seguridad de las aplicaciones móviles. Su rentabilidad, transparencia y desarrollo colaborativo permiten a las organizaciones respaldar sus defensas digitales de forma eficaz. Estas herramientas, nutridas por una comunidad global de perfiles de ciberseguridad, ofrecen versatilidad y personalización, cubriendo un amplio espectro de necesidades de pruebas de seguridad.
Si bien las herramientas de prueba de seguridad de código abierto ofrecen numerosas ventajas, es esencial reconocer los posibles inconvenientes. Estos pueden incluir:
- Soporte limitado: Las herramientas de código abierto pueden no proporcionar el mismo nivel de atención al cliente que las contrapartes comerciales. Los usuarios suelen confiar en los foros de la comunidad y la documentación para obtener asistencia.
- Curva de aprendizaje pronunciada: Algunas herramientas de código abierto pueden ser complejas de configurar y usar, lo que requiere una curva de aprendizaje significativa para los usuarios.
- Falta de características empresariales: Las herramientas comerciales pueden ofrecer funciones avanzadas y opciones de integración adaptadas a los entornos empresariales, que las herramientas de código abierto pueden no proporcionar.
- Calidad variable: La calidad de las herramientas de código abierto puede variar ampliamente, y no todas pueden ser adecuadas para evaluaciones de seguridad críticas.
- Desafíos de mantenimiento: Las organizaciones deben garantizar que las herramientas de código abierto se actualicen y parcheen con regularidad para abordar las vulnerabilidades de seguridad.
- Trabajo manual: Las herramientas de código abierto para pruebas de seguridad de aplicaciones móviles tienden a requerir mucho trabajo manual para preparar el entorno de prueba y el dispositivo y para ejecutar las pruebas.
- Problemas legales y de licencias: Los usuarios deben conocer los términos de las licencias y las posibles consideraciones legales al utilizar herramientas de código abierto.
Herramientas de análisis de código fuente
Varias empresas confían en el análisis del código fuente (SAST) para cubrir las pruebas de seguridad de sus aplicaciones móviles. La herramienta de análisis de código fuente proporciona un examen profundo y exhaustivo del código fuente de la aplicación, lo que permite la detección temprana de posibles vulnerabilidades y debilidades de seguridad. Pueden identificar problemas como almacenamiento de datos inseguro (insecure data storage), validación de entrada incorrecta (improper input validation) y mecanismos de autenticación débiles, lo que ayuda a los desarrolladores a abordar estos problemas antes de implementar la aplicación. Además, las herramientas de análisis de código fuente a menudo se integran con los entornos de desarrollo, lo que resulta conveniente para que los desarrolladores incorporen controles de seguridad en su flujo de trabajo. Sin embargo, es posible que estas herramientas no detecten todas las vulnerabilidades, especialmente las relacionadas con los comportamientos en tiempo de ejecución (runtime behaviors) o las dependencias de terceros. Para maximizar los beneficios de las herramientas de análisis de código fuente, las organizaciones deben combinarlas con otras técnicas de prueba, como el análisis dinámico y las pruebas de análisis de API, para realizar pruebas de seguridad de aplicaciones móviles integrales.
Herramientas de prueba de seguridad específicas de aplicaciones móviles
Para cubrir la superficie de ataque única de las aplicaciones móviles y garantizar la compatibilidad de las características del sistema operativo y del framework. Se recomienda optar por un escáner de seguridad de aplicaciones móviles especializado que ejecute los tres tipos principales de análisis de la aplicación durante su ciclo de vida de desarrollo y lanzamiento. Los escáneres de seguridad de aplicaciones móviles ofrecen una interfaz fácil de usar accesible tanto para expertos en seguridad como para desarrolladores. Pueden escanear rápidamente aplicaciones móviles en busca de varias vulnerabilidades conocidas, ayudando a las organizaciones a identificar y remediar los problemas de manera eficiente. Ofrecen una integración perfecta con los pipelines CI/CD para reducir la fricción de uso. Además, normalmente proporcionan actualizaciones periódicas para hacer frente a las amenazas emergentes, manteniendo a las aplicaciones protegidas contra los riesgos de seguridad en evolución. Sin embargo, los escáneres pueden no descubrir vulnerabilidades únicas o personalizadas específicas de una aplicación, y pueden producir falsos negativos y omitir ciertos problemas de seguridad. El coste de estas herramientas también puede ser un inconveniente, en particular para organizaciones más pequeñas.
¿Cómo puede ayudarle Ostorlab a implementar una metodología eficiente de pruebas de seguridad de aplicaciones móviles?
Ostorlab puede desempeñar un papel fundamental en la implementación de una metodología eficiente de Mobile Application Security Testing al ofrecer un conjunto completo de características y servicios adaptados a las necesidades únicas de la seguridad de las aplicaciones móviles.
-
Especialización en seguridad de aplicaciones móviles: Ostorlab se especializa en la seguridad de las aplicaciones móviles, centrándose en los desafíos de las plataformas móviles. Esta especialización garantiza que las funciones y los servicios estén perfectamente ajustados para abordar las amenazas centradas en los dispositivos móviles.
-
Pruebas de seguridad automatizadas: Ostorlab proporciona capacidades de pruebas de seguridad automatizadas, lo que permite a las organizaciones integrar las evaluaciones de seguridad en sus canales de desarrollo de forma fluida. Esta automatización garantiza que los controles de seguridad se apliquen de forma coherente durante todo el SDLC.
-
Información rápida y procesable: Las herramientas de Ostorlab ofrecen una evaluación rápida de la seguridad de la aplicación móvil y proporcionan información y recomendaciones procesables. Esta velocidad y claridad permiten a los equipos de desarrollo identificar y abordar con prontitud las vulnerabilidades de seguridad.
-
Integración con el SDLC: Ostorlab facilita la integración directa con el SDLC, garantizando que las pruebas de seguridad se conviertan en una parte integral del proceso de desarrollo. Esta integración minimiza las interrupciones en los flujos de trabajo de los desarrolladores.
-
Monitorización continua: Ostorlab permite la monitorización continua del perfil de seguridad de una aplicación. Esta capacidad permite a los equipos realizar un seguimiento de los cambios en el estado de seguridad entre diferentes compilaciones, y localizar y remediar rápidamente las vulnerabilidades introducidas durante el desarrollo.
-
Cobertura integral: Las soluciones de Ostorlab cubren una amplia gama de técnicas de pruebas de seguridad, garantizando un examen exhaustivo de las aplicaciones móviles en busca de posibles vulnerabilidades.
-
Facilidad de uso: La interfaz y las herramientas fáciles de usar de Ostorlab lo hacen accesible a los expertos y desarrolladores de seguridad, fomentando la colaboración y la eficacia de las pruebas de seguridad.
-
Soporte de alta calidad: El equipo de soporte de Ostorlab está disponible para ayudar, solucionar y asesorar sobre todos los problemas y solicitudes que los usuarios puedan tener durante cualquier fase de desarrollo de aplicaciones móviles.
Al aprovechar la experiencia y las herramientas de Ostorlab, las organizaciones pueden establecer una metodología sólida de Mobile Application Security Testing que proteja sus aplicaciones móviles frente a las amenazas en evolución y, al mismo tiempo, se integre de forma natural en sus procesos de desarrollo.