mediumCWE-327A02:2021

Modo ECB

Usar modo ECB (Electronic Codebook) para encriptacion produce bloques de texto cifrado identicos para bloques de texto plano identicos, revelando patrones en los datos encriptados.

Cómo Funciona

El modo ECB encripta cada bloque de texto plano independientemente usando la misma llave. Esto significa que bloques de texto plano identicos siempre producen bloques de texto cifrado identicos. Un atacante analizando el texto cifrado puede detectar patrones repetidos, determinar que bloques son iguales y potencialmente reconstruir la estructura de los datos originales. La demostracion clasica es el pinguino ECB — encriptar una imagen con modo ECB preserva el contorno visual porque bloques de color identicos producen bloques cifrados identicos. En la practica, ECB filtra informacion sobre campos encriptados de base de datos (valores duplicados producen texto cifrado duplicado), tokens de API encriptados (prefijos comunes son visibles) y cualquier dato estructurado donde los bloques se repiten.

Código Vulnerable
const crypto = require('crypto');
function encrypt(text, key) {
  const cipher = crypto.createCipheriv('aes-256-ecb', key, null);
  let encrypted = cipher.update(text, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  return encrypted;
}
Código Seguro
const crypto = require('crypto');
function encrypt(text, key) {
  const iv = crypto.randomBytes(16);
  const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
  let encrypted = cipher.update(text, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  const tag = cipher.getAuthTag().toString('hex');
  return iv.toString('hex') + ':' + encrypted + ':' + tag;
}

Ejemplo Real

La brecha de Adobe en 2013 expuso 153 millones de passwords de usuarios encriptados con 3DES en modo ECB. Como ECB produce texto cifrado identico para texto plano identico, los investigadores podian identificar los passwords mas comunes contando valores duplicados de texto cifrado. Las pistas de password (almacenadas en texto plano) hacian trivial confirmar las suposiciones.

Cómo Prevenirlo

  • Nunca uses modo ECB — siempre usa GCM, CBC con HMAC o modo CTR
  • Usa AES-256-GCM que provee tanto encriptacion como autenticacion
  • Genera un IV aleatorio unico para cada operacion de encriptacion
  • Usa librerias de encriptacion bien probadas en vez de implementar modos de cifrado manualmente

Tecnologías Afectadas

Node.jsPythonJavaGoC#

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas