mediumCWE-327M10:2024

Criptografía Insuficiente

La app móvil usa algoritmos de encriptación débiles, keys hardcodeadas o implementa criptografía custom — dejando datos encriptados efectivamente desprotegidos.

Cómo Funciona

La criptografía insuficiente en apps móviles incluye usar algoritmos deprecados (DES, MD5, SHA1), hardcodear keys de encriptación en el código fuente (fácilmente extraíbles por decompilación), usar modo ECB, IVs estáticos, o crear tu propia crypto. Aunque los datos estén encriptados, usar crypto débil es equivalente a no tener encriptación porque los atacantes la pueden romper rápido. Las keys hardcodeadas son el problema más común — la key está ahí mismo en el código decompilado.

Código Vulnerable
// Hardcoded key + weak algorithm
const key = 'mySecretKey12345';
const cipher = crypto.createCipher('des', key);
let encrypted = cipher.update(data, 'utf8', 'hex');
encrypted += cipher.final('hex');
Código Seguro
// Secure: AES-256-GCM with random key from Keystore
import { generateSecureRandom } from 'react-native-securerandom';
const iv = await generateSecureRandom(16);
const cipher = crypto.createCipheriv('aes-256-gcm', keyFromKeystore, iv);

Ejemplo Real

En 2016, investigadores encontraron que la app móvil de Ashley Madison encriptaba datos con una key hardcodeada idéntica en todas las instalaciones. Después de la brecha, todos los datos 'encriptados' fueron trivialmente desencriptables.

Cómo Prevenirlo

  • Usa AES-256-GCM para encriptación simétrica
  • Guarda keys de encriptación en el Keystore/Keychain de la plataforma, nunca hardcodees
  • Usa generadores de números aleatorios seguros para IVs y nonces
  • Nunca implementes algoritmos criptográficos custom

Tecnologías Afectadas

MobileReact NativeFlutter

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas