highCWE-312M9:2024

Almacenamiento de Datos Inseguro

Datos sensibles como tokens, passwords o información personal guardados en texto plano en el dispositivo — en AsyncStorage, SharedPreferences o bases de datos locales sin encriptación.

Cómo Funciona

Los dispositivos móviles pueden perderse, ser robados o accedidos por apps maliciosas con acceso root. Guardar datos sensibles en texto plano en AsyncStorage (React Native), SharedPreferences (Android), UserDefaults (iOS) o SQLite sin encriptación significa que cualquiera con acceso físico o root puede leerlos. Esto incluye tokens de auth, datos personales, información financiera y respuestas de API cacheadas con datos sensibles.

Código Vulnerable
// Storing sensitive data in plaintext
import AsyncStorage from '@react-native-async-storage';
await AsyncStorage.setItem('user_ssn', '123-45-6789');
await AsyncStorage.setItem('credit_card', '4111-1111-1111-1111');
Código Seguro
// Using encrypted storage
import EncryptedStorage from 'react-native-encrypted-storage';
await EncryptedStorage.setItem('user_token', token);
// For sensitive data: store on server, not on device
// SSN and credit cards should never be stored locally

Ejemplo Real

En 2018, investigadores encontraron que la app Uber Driver guardaba tokens de sesión en texto plano en SharedPreferences. Una app maliciosa o dispositivo rooteado podía robar el token y acceder a la cuenta del conductor, ganancias e información personal.

Cómo Prevenirlo

  • Usa almacenamiento encriptado (react-native-encrypted-storage, Keychain, EncryptedSharedPreferences)
  • Nunca guardes datos altamente sensibles (SSN, tarjetas) en el dispositivo
  • Limpia datos sensibles cacheados cuando el usuario cierra sesión
  • Usa el secure enclave de la plataforma para keys criptográficas

Tecnologías Afectadas

MobileReact NativeFlutter

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas