OWASP Top 10 Vulnerabilidades en Aplicaciones Móviles
Clase 4 de 22 • Curso de Análisis de Malware para Dispositivos Móviles
La comunidad de OWASP siempre ha sido destacada a nivel mundial por su empeño en el desarrollo de soluciones asociadas al desarrollo seguro. Sin embargo desde hace algunos años ha venido incurriendo en campos como el IoT, seguridad informática e incluso seguridad de la información.
En su wiki encontrarás dos documentos muy importantes que son:
-
Owasp Mobile Security Testing Guide
-
OWASP Top 10 Mobile
Estos documentos están centrados en poner a prueba la seguridad de las aplicaciones móviles en desarrollo y el segundo en identificar las vulnerabilidades más comunes que encontrarás asociadas a sus aplicaciones. A continuación veamos cómo está compuesto el OWASP TOP 10 Mobile.
M1: Uso incorrecto de la plataforma
Esta categoría cubre el mal uso de una función de la plataforma o la falta de uso de los controles de seguridad de la plataforma. Puede incluir intentos de Android, permisos de plataforma, uso indebido de TouchID, el llavero o algún otro control de seguridad que forme parte del sistema operativo móvil.
Para que esta vulnerabilidad sea explotada, la organización debe exponer un servicio web o una llamada API que es consumida por la aplicación móvil. El servicio expuesto o la llamada API se implementa utilizando técnicas de codificación inseguras que producen una vulnerabilidad de los diez principales de OWASP dentro del servidor. A través de la interfaz móvil, un adversario puede alimentar entradas maliciosas o secuencias inesperadas de eventos al punto final vulnerable. Por lo tanto, el adversario se da cuenta de la vulnerabilidad original de OWASP Top Ten en el servidor.
M2: Almacenamiento de datos inseguros
Los agentes de amenazas incluyen lo siguiente: un adversario que ha alcanzado un dispositivo móvil perdido / robado; malware u otra aplicación re empaquetada que actúa en nombre del adversario que se ejecuta en el dispositivo móvil.
En el caso de que un adversario alcance físicamente el dispositivo móvil, el adversario conecta el dispositivo móvil a una computadora con software disponible gratuitamente. Estas herramientas permiten al adversario ver todos los directorios de aplicaciones de terceros que a menudo contienen información de identificación personal (PII) almacenada u otros activos de información confidencial. Un adversario puede construir malware o modificar una aplicación legítima para robar dichos activos de información.
M3: Comunicación insegura
Al diseñar una aplicación móvil, los datos se intercambian comúnmente de manera cliente-servidor. Cuando la solución transmite sus datos, debe atravesar la red de operadores del dispositivo móvil e Internet. Los agentes de amenazas pueden explotar vulnerabilidades para interceptar datos confidenciales mientras viajan a través del cable. Existen los siguientes agentes de amenaza:
-
Un adversario que comparte su red local (Wi-Fi comprometido o monitoreado).
-
Dispositivos portadores o de red (enrutadores, torres de telefonía móvil, proxy, etc.).
-
Malware en tu dispositivo móvil.
El factor de explotabilidad de monitorear una red para rangos de comunicaciones inseguros. Monitorear el tráfico a través de la red de un operador es más difícil que monitorear el tráfico de una cafetería local. En general, los ataques dirigidos son más fáciles de realizar.
M4: Autenticación insegura
Los agentes de amenazas que explotan las vulnerabilidades de autenticación generalmente lo hacen a través de ataques automáticos que utilizan herramientas disponibles o personalizadas.
Una vez que el adversario comprende cómo el esquema de autenticación es vulnerable, simula u omite la autenticación al enviar solicitudes de servicio al servidor de back-end de la aplicación móvil y omite cualquier interacción directa con la aplicación móvil. Este proceso de envío generalmente se realiza a través de malware móvil dentro del dispositivo o botnets propiedad del atacante.
M5: Criptografía insuficiente
Los agentes de amenazas incluyen lo siguiente: cualquier persona con acceso físico a datos que se han cifrado incorrectamente, o malware móvil que actúa en nombre de un adversario.
Los vectores de ataque corresponden a los mismos vectores de ataque disponibles a través del tradicional OWASP Top Ten. Cualquier llamada API expuesta puede servir como vector de ataque aquí.
Para explotar esta debilidad, un adversario debe devolver con éxito el código encriptado o los datos confidenciales a su forma original sin encriptar debido a algoritmos de encriptación débiles o fallas dentro del proceso de encriptación.
M6: Autorización insegura
Los agentes de amenazas que explotan las vulnerabilidades de autorización generalmente lo hacen a través de ataques automatizados que utilizan herramientas disponibles o personalizadas.
Una vez que el adversario comprende cómo es vulnerable el esquema de autorización, inicia sesión en la aplicación como usuario legítimo. Pasaron con éxito el control de autenticación. Una vez pasada la autenticación, suelen forzar la exploración a un punto final vulnerable para ejecutar la funcionalidad administrativa. Este proceso de envío generalmente se realiza a través de malware móvil dentro del dispositivo o botnets propiedad del atacante.
M7: Calidad del código del cliente
Los Agentes de amenazas incluyen entidades que pueden pasar entradas no confiables a llamadas de método realizadas dentro del código móvil. Este tipo de problemas no son necesariamente problemas de seguridad en sí mismos, sino que generan vulnerabilidades de seguridad. Por ejemplo, el desbordamiento del búfer en las versiones anteriores de Safari (una vulnerabilidad de baja calidad del código) condujo a ataques Jailbreak de alto riesgo. Los problemas de mala calidad del código generalmente se explotan a través de malware o estafas de phishing.
M8: Manipulación de código
Por lo general, un atacante explotará la modificación del código a través de formas maliciosas de las aplicaciones alojadas en tiendas de aplicaciones de terceros. El atacante también puede engañar al usuario para que instale la aplicación mediante ataques de phishing.
Normalmente, un atacante hará lo siguiente para explotar esta categoría:
-
Realizar cambios binarios directos al núcleo binario del paquete de la aplicación.
-
Realizar cambios binarios directos a los recursos dentro del paquete de la aplicación.
-
Redirigir o reemplazar las API del sistema para interceptar y ejecutar código extraño que sea malicioso.
M9: Ingeniería inversa
Un atacante generalmente descargará la aplicación específica de una tienda de aplicaciones y la analizará dentro de su propio entorno local utilizando un conjunto de herramientas diferentes.
Un atacante debe realizar un análisis del núcleo binario final para determinar su tabla de cadenas original, código fuente, bibliotecas, algoritmos y recursos integrados en la aplicación. Los atacantes utilizarán herramientas relativamente asequibles y bien entendidas como IDA Pro, Hopper, otool, cadenas y otras herramientas de inspección binaria desde el entorno del atacante.
En general, todo el código móvil es susceptible a la ingeniería inversa. Algunas aplicaciones son más susceptibles que otras. El código escrito en lenguajes o frameworks 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.
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, use las herramientas descritas en la sección "Vectores de ataque" de este documento contra el binario. El código será susceptible sí es bastante fácil de entender la ruta de flujo de control de la aplicación, la tabla de cadenas y cualquier pseudocódigo / código fuente generado por estas herramientas.
M10: Funcionalidad extraña
Por lo general, un atacante busca comprender funciones extrañas dentro de una aplicación móvil para descubrir funciones ocultas en los sistemas de back-end. El atacante normalmente explotará funcionalidades extrañas directamente de sus propios sistemas sin ninguna participación de los usuarios finales.
Un atacante descargará y examinará la aplicación móvil dentro de su propio entorno local. Examinarán los archivos de registro, los archivos de configuración y quizás el propio binario para descubrir cualquier interruptor oculto o código de prueba que los desarrolladores dejaron atrás. Aprovecharán estos interruptores y la funcionalidad oculta en el sistema de fondo para realizar un ataque.
Mas información: https://owasp.org/www-project-mobile-top-10/2016-risks/