highCWE-287M3:2024

Autenticación/Autorización Insegura

Apps móviles con autenticación débil — guardando sesiones de forma insegura, sin refresh de tokens o checks de autorización solo en el cliente.

Cómo Funciona

La auth móvil es difícil porque la app corre en un dispositivo no confiable. Errores comunes incluyen guardar tokens en AsyncStorage sin encriptación, no refrescar tokens expirados, hacer checks de autorización solo en el código móvil (que puede ser bypaseado), o usar implementación biométrica débil que cae a un PIN simple. Los atacantes pueden modificar el binario de la app para saltarse checks de auth por completo.

Código Vulnerable
// Storing token insecurely
import AsyncStorage from '@react-native-async-storage';
await AsyncStorage.setItem('auth_token', token);
// No expiration check, no encryption
Código Seguro
// Using encrypted storage
import EncryptedStorage from 'react-native-encrypted-storage';
await EncryptedStorage.setItem('auth_token', token);
// Token has expiration, refresh logic on 401

Ejemplo Real

En 2019, investigadores encontraron que múltiples apps bancarias guardaban tokens de autenticación en texto plano en SharedPreferences de Android. Cualquier app con acceso root o un backup local podía extraer estos tokens y suplantar al usuario.

Cómo Prevenirlo

  • Usa almacenamiento encriptado para tokens (Keychain en iOS, EncryptedSharedPreferences en Android)
  • Implementa refresh de tokens con access tokens de corta vida
  • Todos los checks de autorización deben pasar en el backend
  • Implementa certificate pinning para prevenir ataques MITM

Tecnologías Afectadas

MobileReact NativeFlutter

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas