MASVS: Estándar de verificación de aplicaciones móviles

Verification Levels

Estructura del Documento

La primera parte del MASVS contiene una descripción del modelo de seguridad y de los niveles de verificación disponibles, seguido de recomendaciones sobre cómo utilizar el estándar en la práctica. En la segunda parte se detallan los requisitos de seguridad, junto con un mapeo a los distintos niveles de verificación. Los requerimientos se han agrupado en ocho categorías (V1 a V8) basadas en el objetivo/alcance técnico. La siguiente nomenclatura se utiliza a lo largo del MASVS y la MSTG:

  • Categoría de los requerimientos: MASVS-Vx, p. ej. MASVS-V2: Requerimientos de Almacenamiento de datos y Privacidad.
  • Requerimiento: MASVS-Vx.y, p. ej. MASVS-V2.2: “No se debe almacenar información sensible fuera del contenedor de la aplicación o del almacenamiento de credenciales del sistema.”.

MASVS-L1: Seguridad Estándar

Una aplicación móvil que logra el nivel MASVS-L1 se adhiere a las mejores prácticas de seguridad en aplicaciones móviles. Cumple con los requerimientos básicos en términos de calidad de código, manejo de los datos sensibles e interacción con el entorno móvil. Debe existir un proceso de pruebas para verificar los controles de seguridad. Este nivel es apropiado para todas las aplicaciones móviles.

MASVS-L2: Defensa en Profundidad

MASVS-L2 introduce controles de seguridad avanzados que van más allá de los requisitos estándar. Para cumplir con el MASVS-L2, debe existir un modelo de amenazas y la seguridad debe ser una parte fundamental de la arquitectura y el diseño de la aplicación. Tomando ese modelo de amenazas como base, deben de seleccionarse e implementarse los controles del MASVS-L2 que correspondan. Este nivel es apropiado para aplicaciones que manejan datos altamente sensibles, como las aplicaciones de banca móvil.

MASVS-R: Resistencia contra la Ingeniería Inversa y la Manipulación

La aplicación cuenta con el nivel de seguridad específico para la aplicación y también es resistente a ataques específicos y claramente definidos en el lado del cliente, como alteración, modificación o ingeniería inversa para extraer código o datos sensibles. Esta aplicación aprovecha las características de seguridad del hardware o bien técnicas de protección de software suficientemente fuertes y verificables. MASVS-R es adecuado para las aplicaciones que manejan datos altamente confidenciales y puede servir como medio para proteger la propiedad intelectual o dificultar la manipulación de una aplicación.

V1: Requisitos de Arquitectura, Diseño y Modelado de Amenazas

Lista los requerimientos pertinentes a la arquitectura y al diseño de la aplicación. 

Requerimientos de Verificación de Seguridad

#MSTG-IDDescripciónL1L2
1.1MSTG-ARCH-1Todos los componentes se encuentran identificados y asegurar que son necesarios.
1.2MSTG-ARCH-2Los controles de seguridad nunca se aplican sólo en el cliente, sino que también en los respectivos servidores.
1.3MSTG-ARCH-3Se definió una arquitectura de alto nivel para la aplicación y los servicios y se incluyeron controles de seguridad en la misma.
1.4MSTG-ARCH-4Se identificó claramente la información considerada sensible en el contexto de la aplicación móvil.
1.5MSTG-ARCH-5Todos los componentes de la aplicación están definidos en términos de la lógica de negocio o las funciones de seguridad que proveen.
1.6MSTG-ARCH-6Se realizó un modelado de amenazas para la aplicación móvil y los servicios en el que se definieron las mismas y sus contramedidas.
1.7MSTG-ARCH-7Todos los controles de seguridad poseen una implementados centralizada.
1.8MSTG-ARCH-8Existe una política explícita sobre el uso de claves criptográficas (si se usan) a través de todo su ciclo de vida. Idealmente siguiendo un estándar de gestión de claves como el NIST SP 800-57.
1.9MSTG-ARCH-9Existe un mecanismo para forzar las actualizaciones de la aplicación móvil.
1.10MSTG-ARCH-10La implementación de medidas de seguridad es una parte esencial durante todo el ciclo de vida del desarrollo de software de la aplicación.
1.11MSTG-ARCH-11Existe una política de divualgación responsable y es llevada a cabo adecuadamente.
1.12MSTG-ARCH-12La aplicación debería de cumplir con las leyes y regulaciones de privacidad.

V2: Requerimientos de Almacenamiento de datos y Privacidad

Objetivo de Control

Implementar protecciones adicionales para dificultar la recuperación de los datos sensibles tales como credenciales del usuario y la información privada que eviten que los datos confidenciales puedan:

– Exponerse a otras aplicaciones que se ejecutan en el mismo dispositivo si se utilizan de forma inadecuada mecanismos de comunicación entre procesos del sistema operativo. 

– Filtrarse involuntariamente en el almacenamiento en la nube, las copias de seguridad o la caché del teclado. 

– Perderse o robarse más fácilmente que otros tipos de dispositivos, teniendo por ejemplo acceso físico. 

Requerimientos de Verificación de Seguridad

#MSTG-IDDescripciónL1L2
2.1MSTG-STORAGE-1Las funcionalidades de almacenamiento de credenciales del sistema deben de ser utilizadas para almacenar información sensible, tal como información personal, credenciales de usuario o claves criptográficas.
2.2MSTG-STORAGE-2No se debe almacenar información sensible fuera del contenedor de la aplicación o del almacenamiento de credenciales del sistema.
2.3MSTG-STORAGE-3No se escribe información sensible en los registros (logs) de la aplicación.
2.4MSTG-STORAGE-4No se comparte información sensible con servicios externos salvo que sea una necesidad de la arquitectura.
2.5MSTG-STORAGE-5Se desactiva la caché del teclado en los campos de texto que contienen información sensible.
2.6MSTG-STORAGE-6No se expone información sensible mediante mecanismos de comunicación entre procesos (IPC).
2.7MSTG-STORAGE-7No se expone información sensible como contraseñas y números de tarjetas de crédito a través de la interfaz o capturas de pantalla.
2.8MSTG-STORAGE-8No se incluye información sensible en las copias de seguridad generadas por el sistema operativo.
2.9MSTG-STORAGE-9La aplicación elimina toda información sensible de la vista cuando la aplicación pasa a un segundo plano.
2.10MSTG-STORAGE-10La aplicación no conserva ninguna información sensible en memoria más de lo necesario y la memoria se limpia trás su uso.
2.11MSTG-STORAGE-11La aplicación obliga a que exista una política mínima de seguridad en el dispositivo, como que el usuario deba configurar un código de acceso.
2.12MSTG-STORAGE-12La aplicación educa al usuario acerca de los tipos de información personal que procesa y de las mejores prácticas en seguridad que el usuario debería seguir al utilizar la aplicación.
2.13MSTG-STORAGE-13No se guarda ningún tipo de información sensible de forma local en el dispositivo móvil. En su lugar, esa información debería ser obtenida desde un sistema remoto sólo cuando es necesario y únicamente residir en memoria.
2.14MSTG-STORAGE-14En caso de ser necesario guardar información sensible de forma local, ésta debe de ser cifrada usando una clave derivada del hardware de almacenamiento seguro, el cual debe requerir autenticación previa.
2.15MSTG-STORAGE-15El almacenamiento local de la aplicación debe de ser borrado trás un número excesivo de intentos fallidos de autenticación.

V3: Requerimientos de Criptografía

Objetivo de Control

Asegurar que la aplicación utiliza criptografía siguiendo las mejores prácticas de la industria, incluyendo:

  • Uso de librerías criptográficas reconocidas y probadas;
  • Configuración y elección apropiada de primitivas criptográficas;
  • Uso de generadores de números aleatorios suficientemente seguros.

Requerimientos de Verificación de Seguridad

#MSTG-IDDescripciónL1L2
3.1MSTG-CRYPTO-1La aplicación no depende únicamente de criptografía simétrica cuyas claves se encuentran directamente en el código fuente de la misma.
3.2MSTG-CRYPTO-2La aplicación utiliza implementaciones de criptografía probadas.
3.3MSTG-CRYPTO-3La aplicación utiliza primitivas de seguridad que son apropiadas para el caso particular y su configuración y parámetros siguen las mejores prácticas de la industria.
3.4MSTG-CRYPTO-4La aplicación no utiliza protocolos o algoritmos criptográficos ampliamente considerados obsoletos para su uso en seguridad.
3.5MSTG-CRYPTO-5La aplicación no reutiliza una misma clave criptográfica para varios propósitos.
3.6MSTG-CRYPTO-6Los valores aleatorios son generados utilizando un generador de números aleatorios suficientemente seguro.

V4: Requerimientos de Autenticación y Manejo de Sesiones

Objetivo de Control

Requerimientos básicos sobre como manejar las cuentas y sesiones del usuario.

Requerimientos de Verificación de Seguridad

#MSTG-IDDescripciónL1L2
4.1MSTG-AUTH-1Si la aplicación provee acceso a un servicio remoto, un mecanismo aceptable de autenticación como usuario y contraseña es realizado en el servidor remoto.
4.2MSTG-AUTH-2Si se utiliza la gestión de sesión por estado, el servidor remoto usa tokens de acceso aleatorios para autenticar los pedidos del cliente sin requerir el envío de las credenciales del usuario en cada uno.
4.3MSTG-AUTH-3Si se utiliza la autenticación basada en tokens sin estado, el servidor proporciona un token que se ha firmado utilizando un algoritmo seguro.
4.4MSTG-AUTH-4Cuando el usuario cierra sesión se termina la sesión también en el servidor.
4.5MSTG-AUTH-5Existe una política de contraseñas y es aplicada en el servidor.
4.6MSTG-AUTH-6El servidor implementa mecanismos, cuando credenciales de autenticación son ingresadas una cantidad excesiva de veces.
4.7MSTG-AUTH-7Las sesiones y los tokens de acceso expiran luego de un tiempo predefinido de inactividad.
4.8MSTG-AUTH-8La autenticación biométrica, si la hay, no está asociada a eventos (p. ej. usando una API que simplemente retorna “true” o “false”), sino basada en el desbloqueo del keychain/keystore (almacenamiento seguro).
4.9MSTG-AUTH-9El sistema remoto implementa un mecanismo de segundo factor de autenticación (2FA) y lo impone consistentemente.
4.10MSTG-AUTH-10Para realizar transacciones críticas se requiere una autenticación adicional (step-up).
4.11MSTG-AUTH-11La aplicación informa al usuario acerca de todas las actividades sensibles en su cuenta. El usuario es capaz de ver una lista de los dispositivos conectados, información contextual (dirección IP, localización, etc.), y es capaz de bloquear ciertos dispositivos.
4.12MSTG-AUTH-12Los modelos de autorización deberían de ser definidos e impuestos por el sistema remoto.

V5: Requerimientos de Comunicación a través de la red

Objetivo de Control

El objetivo es asegurar la confidencialidad e integridad de la información intercambiada entre la aplicación móvil y los servicios del servidor utilizando canales seguros y cifrados.

Requerimientos de Verificación de Seguridad

#MSTG-IDDescripciónL1L2
5.1MSTG-NETWORK-1La información es enviada cifrada utilizando TLS. El canal seguro es usado consistentemente en la aplicación.
5.2MSTG-NETWORK-2Las configuraciones del protocolo TLS siguen las mejores prácticas de la industria, o lo hacen lo mejor posible en caso de que el sistema operativo del dispositivo no soporte los estándares recomendados.
5.3MSTG-NETWORK-3La aplicación verifica el certificado X.509 del sistema remoto al establecer el canal seguro y sólo se aceptan certificados firmados por una CA de confianza.
5.4MSTG-NETWORK-4La aplicación utiliza su propio almacén de certificados o realiza pinning del certificado o la clave pública del servidor. Bajo ningún concepto establecerá conexiones con servidores que ofrecen otros certificados o claves, incluso si están firmados por una CA de confianza.
5.5MSTG-NETWORK-5La aplicación no depende de un único canal de comunicaciones inseguro (email o SMS) para operaciones críticas como registro de usuarios o recuperación de cuentas.
5.6MSTG-NETWORK-6La aplicación sólo depende de bibliotecas de conectividad y seguridad actualizadas.

V6: Requerimientos de Interacción con la Plataforma

Objetivo de Control

Utilizar las APIs de la plataforma y componentes estándar de una manera segura además de la comunicación entre aplicaciones (IPC).

Requerimientos de Verificación de Seguridad

#MSTG-IDDescripciónL1L2
6.1MSTG-PLATFORM-1La aplicación requiere la cantidad de permisos mínimamente necesaria.
6.2MSTG-PLATFORM-2Todo dato ingresado por el usuario o cualquier fuente externa debe ser validado y, si es necesario, saneado. Esto incluye información recibida por la UI o mecanismos IPC como los Intents, URLs y datos provenientes de la red.
6.3MSTG-PLATFORM-3La aplicación no expone ninguna funcionalidad sensible a través esquemas de URL salvo que dichos mecanismos estén debidamente protegidos.
6.4MSTG-PLATFORM-4La aplicación no expone ninguna funcionalidad sensible a través de mecanismos IPC salvo que dichos mecanismos estén debidamente protegidos.
6.5MSTG-PLATFORM-5JavaScript se encuentra deshabilitado en los WebViews salvo que sea necesario.
6.6MSTG-PLATFORM-6Las WebViews se configuran para permitir el mínimo de los esquemas (idealmente, sólo https). Esquemas peligrosos como file, tel y app-id están deshabilitados.
6.7MSTG-PLATFORM-7Si objetos nativos son expuestos en WebViews, debe verificarse que cualquier componente JavaScript se carga exclusivamente desde el contenedor de la aplicación.
6.8MSTG-PLATFORM-8La serialización de objetos, si se realiza, debe implementarse utilizando API seguras.
6.9MSTG-PLATFORM-9La aplicación se protege contra ataques de tipo screen overlay. (sólo Android)
6.10MSTG-PLATFORM-10La caché, el almacenamiento y los recursos cargados (JavaScript, etc.) de las WebViews deben de borrarse antes de destruir la WebView.
6.11MSTG-PLATFORM-11Verificar que la aplicación impide el uso de teclados de terceros siempre que se introduzca información sensible.

V7: Requerimientos de Calidad de Código y Configuración del Compilador

Objetivo de Control

Asegurar que se siguieron las prácticas de seguridad básicas en el desarrollo de la aplicación y  activaron las funcionalidades “gratuitas” ofrecidas por el compilador.

Requerimientos de Verificación de Seguridad

#MSTG-IDDescripciónL1L2
7.1MSTG-CODE-1La aplicación es firmada y provista con un certificado válido, cuya clave privada está debidamente protegida.
7.2MSTG-CODE-2La aplicación fue publicada en modo release y con las configuraciones apropiadas para el mismo (por ejemplo, non-debuggable).
7.3MSTG-CODE-3Los símbolos de depuración fueron eliminados de los binarios nativos.
7.4MSTG-CODE-4Cualquier código de depuración y/o de asistencia al desarrollador (p. ej. código de test, backdoors, configuraciones ocultas) debe ser eliminado. La aplicación no hace logs detallados de errores ni de mensajes de depuración.
7.5MSTG-CODE-5Todos los componentes de terceros se encuentran identificados y revisados en cuanto a vulnerabilidades conocidas.
7.6MSTG-CODE-6La aplicación captura y gestiona debidamente las posibles excepciones.
7.7MSTG-CODE-7Los controles de seguridad deniegan el acceso por defecto.
7.8MSTG-CODE-8En código no administrado, la memoria es solicitada, utilizada y liberada de manera correcta.
7.9MSTG-CODE-9Las funcionalidades de seguridad gratuitas de las herramientas, tales como minificación del byte-code, protección de la pila, soporte PIE y conteo automático de referencias, se encuentran activadas.

V8: Requerimientos de Resistencia ante la Ingeniería Inversa

Objetivo de Control

En esta sección se cubren protecciones recomendadas para aplicaciones que maneja o brindan acceso a información o funcionalidades sensibles. La falta de estos controles no generan vulnerabilidades – sino que, están pensados para incrementar la resistencia contra la ingeniería inversa de la aplicación, dificultándole al adversario el acceso a los datos o el entendimiento del modo de ejecución de la aplicación.

Los controles de esta sección deben aplicarse según sea necesario, basándose en una evaluación de los riesgos causados por la manipulación no autorizada de la aplicación y/o la ingeniería inversa. 

Impedir el Análisis Dinámico y la Manipulación

#MSTG-IDDescripciónR
8.1MSTG-RESILIENCE-1La aplicación detecta y responde a la presencia de un dispositivo rooteado, ya sea alertando al usuario o finalizando la ejecución de la aplicación.
8.2MSTG-RESILIENCE-2La aplicación impide la depuración o detecta y responde a la misma. Se deben cubrir todos los protocolos de depuración.
8.3MSTG-RESILIENCE-3La aplicación detecta y responde a cualquier modificación de ejecutables y datos críticos de la propia aplicación.
8.4MSTG-RESILIENCE-4La aplicación detecta la presencia de herramientas de ingeniería inversa o frameworks comunmente utilizados.
8.5MSTG-RESILIENCE-5La aplicación detecta y responde a ser ejecutada en un emulador.
8.6MSTG-RESILIENCE-6La aplicación detecta y responde ante modificaciones de código o datos en su propio espacio de memoria.
8.7MSTG-RESILIENCE-7La aplicación implementa múltiples mecanismos de detección para los puntos del 8.1 al 8.6. Nótese que, a mayor cantidad y diversidad de mecanismos usados, mayor será la resistencia.
8.8MSTG-RESILIENCE-8Los mecanismos de detección provocan distintos tipos de respuestas, incluyendo respuestas retardadas y silenciosas.
8.9MSTG-RESILIENCE-9La ofuscación se aplica a las defensas del programa, lo que a su vez impide la desofuscación mediante análisis dinámico.

Asociación del Dispositivo

#MSTG-IDDescripciónR
8.10MSTG-RESILIENCE-10La aplicación implementa un “enlace al dispositivo” utilizando una huella del dispositivo derivado de varias propiedades únicas al mismo.

Impedir la Comprensión

#MSTG-IDDescripciónR
8.11MSTG-RESILIENCE-11Todos los archivos ejecutables y bibliotecas correspondientes a la aplicación se encuentran cifrados, o bien los segmentos importantes de código se encuentran cifrados o “empaquetados” (packed). De este modo cualquier análisis estático trivial no revelará código o datos importantes.
8.12MSTG-RESILIENCE-12Si el objetivo de la ofuscación es proteger código propietario, debe utilizarse un esquema de ofuscación apropiado para la tarea particular y robusto contra métodos de desofuscación manual y automatizada, considerando la investigación actual publicada. La eficacia del esquema de ofuscación debe verificarse mediante pruebas manuales. Nótese que, siempre que sea posible, las características de aislamiento basadas en hardware son preferibles a la ofuscación.

Impedir el Eavesdropping

#MSTG-IDDescripciónR
8.13MSTG-RESILIENCE-13A modo de defensa en profundidad, además de incluir un refuerzo (hardening) sólido de la comunicación, puede implementarse el cifrado de datos (payloads) a nivel de aplicación como medida adicional contra ataques de eavesdropping.

Estándar de verificación de seguridad de aplicaciones móviles OWASP:

https://github.com/OWASP/owasp-masvs/releases/download/1.0-ES/OWASP_Mobile_AppSec_Verification_Standard_v1.0-ES.pdf

Estándar de Verificación de Seguridad en
Aplicaciones 3.0.1

https://owasp.org/www-pdf-archive/Est%C3%A1ndar_de_Verificaci%C3%B3n_de_Seguridad_en_Aplicaciones_3.0.1.pdf

Gitbook:

https://mobile-security.gitbook.io/masvs/


Deja un comentario