La lista de verificación de seguridad de aplicaciones móviles 2025 para iOS y Android
Asegurar el código fuente
- Control de acceso al código con privilegios mínimos; ramas protegidas y revisiones obligatorias.
- Análisis estático y escaneo de secretos integrados en CI/CD; bloquear fusiones ante hallazgos de alta gravedad.
- Higiene de la estación de trabajo de los desarrolladores y prevención de pérdida de datos (DLP) para repositorios y artefactos de compilación.
- Higiene de dependencias y de la cadena de suministro (bloquear versiones, monitorear).
- Utilizar herramientas dedicadas de gestión de secretos (ej. HashiCorp Vault, AWS Secrets Manager o GitHub Secrets) en lugar de almacenar secretos en archivos
.envo archivos de configuración. - Asegurar los artefactos de compilación en repositorios de artefactos, controlar quién puede acceder y promover las compilaciones a producción.
- Cero secretos codificados de forma rígida, cero valores predeterminados de criptografía insegura, cobertura consistente de revisión de código.
Autenticación (MFA) y seguridad de sesiones
- Autenticación multifactor (MFA), con preferencia por factores basados en aplicaciones o notificaciones push en lugar de SMS cuando sea posible.
- Bloqueo de cuenta y autenticación reforzada (step-up) para acciones sensibles.
- Higiene de sesión: tokens de corta duración, almacenamiento seguro para los tokens de actualización (refresh tokens) y flujos sólidos de cierre de sesión/rotación.
- Protecciones contra la reutilización de OTP, umbrales de bloqueo consistentes y resistencia a la fuerza bruta y los ataques de repetición.
Cifrar las comunicaciones de extremo a extremo (TLS + fijación de certificado)
- Forzar TLS moderno; no permitir endpoints en texto claro y la degradación de protocolos.
- Implementar la fijación de certificados SSL/TLS para reducir el riesgo de MITM en redes no confiables.
- Validar todos los certificados y fallar por defecto (fail closed) en caso de errores de verificación.
- Cero contenido mixto o respaldos (fallbacks) a transportes inseguros; rotación planificada de fijaciones y una ruta de desfijación de emergencia.
Pruebas de penetración y pruebas de seguridad continuas
- Combinar el escaneo automatizado con pruebas manuales dirigidas por expertos para fallas de lógica empresarial.
- Incluir vectores de ataque específicos de móviles: ataques de canal lateral (side-channel), volcados de memoria (memory dumps), escalada de privilegios locales y exploits de comunicación entre procesos (IPC).
- Incluir pruebas para funciones específicas de la aplicación, como enlaces profundos (deep linking), esquemas de URL personalizados y manejadores de intenciones (intent handlers en Android) para identificar desvíos de autorización o fugas de datos.
- Incluir fuerza bruta, fuzzing y pruebas de inyección que reflejen el comportamiento real de los atacantes.
- Tratar los hallazgos como elementos del backlog con SLAs de corrección; re-probar y capturar la evidencia de su cierre.
- Cobertura de pruebas sobre autenticación, gestión de sesiones, almacenamiento, llamadas a API y protecciones del lado del cliente.
Gobernanza de la seguridad de las API
- Mantener un inventario de todas las API consumidas por dispositivos móviles, con documentación y propietarios.
- Forzar una autenticación y autorización sólidas; aplicar el principio de mínimo privilegio (PoLP).
- Añadir mediación (políticas de puerta de enlace), limitación de velocidad (rate limiting), validación de entradas y registro/monitoreo consistentes.
- Prevención de autorizaciones defectuosas a nivel de objeto (IDOR), fallas de inyección y configuraciones erróneas.
Protección en tiempo de ejecución (RASP) y resistencia a la manipulación
- Detectar jailbreak/root, frameworks de hooking, la conexión de depuradores y el uso de emuladores. (Tenga en cuenta que las comprobaciones en tiempo de ejecución para jailbreak/root son imperfectas; los atacantes sofisticados pueden eludir las comprobaciones estáticas).
- Responder de forma adaptativa: bloquear, degradar la funcionalidad o solicitar una nueva autenticación; registrar siempre las señales.
- Las comprobaciones en tiempo de ejecución no se pueden eludir trivialmente; las respuestas no dañan la UX en condiciones benignas.
Almacenamiento seguro de datos (Keychain/Keystore)
- Nunca almacenar secretos en texto claro; usar los almacenes de claves (keystores) de la plataforma para las credenciales y las claves.
- Hashear y salar las contraseñas del lado del servidor con algoritmos modernos; cifrar los registros sensibles en reposo.
- Proteger las copias de seguridad y el almacenamiento transitorio; implementar el borrado seguro de datos sensibles.
- Ningún dato sensible aparece en registros, capturas de pantalla, cachés o copias de seguridad sin cifrar.
Registros, monitoreo y preparación ante incidentes
- Crear pistas de auditoría para acciones sensibles y cambios de estado; centralizar la telemetría.
- Alertar sobre comportamientos anómalos y comprobaciones de seguridad fallidas; investigar y ajustar regularmente.
- Mantener manuales (runbooks) y practicar simulacros de incidentes para reducir el tiempo de detección/respuesta.
- Los registros evitan exponer datos sensibles pero conservan suficiente contexto para investigar.
Actualizaciones, dependencias y política de SO mínimo
- Integrar herramientas de Análisis de Composición de Software (SCA) en el CI/CD para detectar dependencias vulnerables en el momento de la confirmación (commit). Utilizar archivos de bloqueo (
Podfile.lock,package-lock.json,gradle.lock) para garantizar compilaciones reproducibles y evitar sorpresas de dependencias transitivas. - Enviar actualizaciones frecuentes; parchear rápidamente SDKs y dependencias de terceros vulnerables.
- Definir y revisar una política de versión mínima del SO; descontinuar las versiones inseguras del SO con mensajes claros al usuario.
- Proporcionar avisos dentro de la aplicación para actualizaciones de seguridad importantes.
- Cero uso de APIs obsoletas que debiliten la seguridad; el riesgo de las dependencias se monitorea y se toman medidas.
Protecciones contra la ingeniería inversa
- Aplicar ofuscación de código, eliminación de símbolos y comprobaciones contra manipulaciones.
- Detectar los intentos comunes de instrumentación dinámica y responder en consecuencia.
- Cifrar los activos locales sensibles; validar la integridad de la aplicación al inicio y durante el tiempo de ejecución.
- Las protecciones se superponen para ralentizar a los atacantes y aumentar el esfuerzo sin perjudicar el rendimiento.
Cumplimiento y preparación para auditorías
- Mapear su lista de verificación a los requisitos reconocidos de seguridad móvil y a las necesidades del sector.
- Mantener evidencia: políticas, informes de pruebas, confirmaciones de re-pruebas y registros de cambios.
- Considerar las obligaciones de la industria cuando corresponda (privacidad y directrices del sector financiero).
- Demostrar la cobertura de los controles y el cierre de los hallazgos durante auditorías o evaluaciones.
Hoja de ruta de fortalecimiento de seguridad de 90 días
graph TD
H1["<b>Semanas 1-2: Línea base y Política</b>"]
A1["Inventariar apps, SDKs, APIs<br/>Documentar flujos de datos y rutas de amenaza"]
A2["Publicar políticas de código, secretos y criptografía<br/>Habilitar SAST y escaneo de secretos"]
H2["<b>Semanas 3-6: Fortalecimiento Central</b>"]
B1["Forzar TLS y fijación de certificados<br/>Documentar la rotación y desfijación de emergencia"]
B2["Fortalecer autenticación y gestión de sesiones<br/>Bloqueos y manejo de OTP"]
B3["Centralizar registros y habilitar comprobaciones en tiempo de ejecución<br/>Detección de Root/jailbreak/hooking"]
H3["<b>Semanas 7-10: Profundidad y Cobertura</b>"]
C1["Pruebas de API: autorización, inyección, IDOR"]
C2["Fortalecer almacenamiento: Keystore/Keychain<br/>Registros cifrados y borrado seguro"]
C3["Fuzzing y pruebas negativas<br/>Iniciar cadencia trimestral de pentesting"]
H4["<b>Semanas 11-13: Aseguramiento y Escala</b>"]
D1["Ofuscación y comprobaciones contra manipulación"]
D2["Re-probar hallazgos y mantener evidencias<br/>Revisar política de SO mínimo"]
D3["Publicar registro de cambios y marcador de última actualización"]
H1 --> A1 --> A2 --> H2 --> B1 --> B2 --> B3 --> H3 --> C1 --> C2 --> C3 --> H4 --> D1 --> D2 --> D3
classDef phase fill:#D5E4F2,stroke:#333,stroke-width:2px,color:#000,font-weight:bold
classDef task fill:#E8F4F8,stroke:#666,stroke-width:1px,color:#000
class H1,H2,H3,H4 phase
class A1,A2,B1,B2,B3,C1,C2,C3,D1,D2,D3 task
Errores comunes a evitar
- Almacenar tokens o PII en texto claro (registros, cachés, copias de seguridad).
- Confiar únicamente en la validación del lado del cliente; sin autorización en el lado del servidor.
- Descuidar las auditorías de SDKs de terceros.
- Fijar (pinning) sin rotación segura ni desfijación de emergencia.
- Autorización débil → IDOR / escalada de privilegios.
- Dependencia excesiva en una única comprobación en tiempo de ejecución versus defensas superpuestas.
- Tratar un pentest como terminado sin re-pruebas y sin evidencias.
Tabla de comprobación rápida
| Área | Requisitos |
|---|---|
| Código y CI | Análisis estático + escaneo de secretos; ramas protegidas y revisiones obligatorias |
| Auth y Sesión | MFA más allá de los SMS cuando sea posible; bloqueos; tokens de corta duración y almacenamiento seguro |
| Transporte | TLS moderno forzado; fijación de certificados con rotación planificada y respaldo seguro |
| APIs | Inventario; PoLP; limitación de velocidad; middleware de autorización; registros consistentes |
| Pruebas | Escaneos automatizados + pentests por expertos; fuzzing; re-pruebas con evidencia |
| Tiempo de ejecución | Detección Root/jailbreak/hooking/depuradores; respuestas adaptativas |
| Almacenamiento | Uso de Keystore/Keychain; registros cifrados; borrado seguro; protección de copias de seguridad |
| Observabilidad | Registros centralizados; alertas; runbooks; simulacros regulares |
| Actualizaciones | Higiene de dependencias y SDKs; política clara de SO mínimo |
| Ing. Inversa | Ofuscación; contra manipulación; comprobaciones de integridad; activos cifrados |
| Cumplimiento | Controles mapeados, repositorio de evidencias, registro de cambios y etiqueta de "última actualización" |