Pentesting iOS vs Android: diferencias clave y qué necesita tu app

Por el equipo de QuantumSec

iOS y Android comparten estándar de auditoría —el OWASP MASVS/MASTG— pero tienen arquitecturas, modelos de permisos y vectores de ataque distintos. Auditar una app en ambas plataformas no es repetir el mismo trabajo dos veces: cada sistema operativo expone superficies de ataque diferentes que requieren metodología y herramientas específicas.

Arquitecturas distintas, modelo de amenaza distinto

iOS aplica un sandboxing estricto y un ecosistema cerrado: cada app opera en un contenedor aislado con permisos explícitos y Apple controla la distribución (App Store). Android es más abierto: el modelo de permisos es más granular pero también más propenso a mala configuración, y la instalación fuera de Google Play (sideloading) es posible, lo que amplía la superficie de exposición. Esta diferencia de filosofía determina qué es más probable que falle en cada plataforma.

Vectores de ataque específicos de iOS

Almacenamiento inseguro en el Keychain o en archivos sin cifrar accesibles tras jailbreak, bypass de la detección de jailbreak, transporte de datos sin App Transport Security (ATS) correctamente configurado, deep links mal validados, y extracción de secretos embebidos en el binario (API keys, certificados) mediante ingeniería inversa con herramientas como Hopper o Ghidra.

Vectores de ataque específicos de Android

Componentes exportados sin protección (Activities, Services, Broadcast Receivers accesibles desde otras apps), bypass de la detección de root, almacenamiento inseguro en SharedPreferences o en la tarjeta SD, intents mal validados que permiten inyección o secuestro de flujo, y descompilación relativamente sencilla del APK con herramientas como JADX para exponer lógica de negocio y credenciales embebidas.

Una metodología común, un enfoque técnico distinto

El OWASP MASVS (Mobile Application Security Verification Standard) y su guía de pruebas MASTG definen los mismos requisitos de seguridad de alto nivel —almacenamiento, criptografía, autenticación, resiliencia frente a ingeniería inversa— para ambas plataformas. Pero la ejecución técnica de cada prueba es específica: las herramientas, los formatos de binario (IPA vs APK), los mecanismos de protección nativos y las técnicas de bypass no son intercambiables entre sistemas operativos.

¿Necesito auditar ambas plataformas si mi app está en las dos?

Sí, en la gran mayoría de casos. Aunque el backend y la lógica de negocio sean compartidos, la capa cliente de cada plataforma introduce sus propias vulnerabilidades y depende de mecanismos de seguridad específicos del sistema operativo. Una app puede ser segura en iOS y vulnerable en Android (o al revés) por decisiones de implementación específicas de cada versión. La excepción razonable es cuando el cliente móvil es un envoltorio muy fino (thin client) sobre una API ya auditada de forma independiente y no hay lógica sensible en el propio binario.

Cómo elegir el alcance si el presupuesto es limitado

Si solo puedes auditar una plataforma primero, prioriza la que tenga mayor base de usuarios activos o la que maneje el flujo de datos más sensible (pagos, salud, datos financieros). Otra opción razonable es auditar en profundidad una plataforma y hacer una revisión más ligera de la otra centrada en las diferencias de implementación conocidas. Lo que no es recomendable es asumir que auditar una plataforma cubre la otra.

FAQ

¿Cuesta lo mismo auditar iOS que Android?

El esfuerzo suele ser similar cuando ambas apps tienen una complejidad comparable, aunque puede variar según la superficie expuesta de cada binario: una app Android con muchos componentes exportados o una app iOS con mecanismos de ofuscación complejos pueden requerir más tiempo en su plataforma respectiva.

¿Si mi app es híbrida (React Native, Flutter) necesito auditar ambas plataformas igualmente?

Sí. Aunque el código de negocio esté compartido en un framework multiplataforma, cada compilación nativa (IPA para iOS, APK/AAB para Android) empaqueta ese código de forma distinta y usa mecanismos de almacenamiento y comunicación nativos propios de cada sistema operativo, que pueden introducir vulnerabilidades específicas de la plataforma pese a compartir la misma base de código.

¿El pentesting móvil incluye el backend/API que consume la app?

El pentesting móvil se centra en el cliente (la app instalada en el dispositivo), pero como la app siempre se comunica con una API, es habitual y recomendable incluir también un pentesting de esa API en el mismo alcance para cubrir el flujo completo de datos.