Clave de Cifrado Hardcodeada
Poner claves de cifrado como strings en el código significa que cualquiera con acceso al repo puede descifrar tus datos.
Cómo Funciona
Cuando una clave está hardcodeada, entra al historial de git. Hasta los repos privados se filtran, se comparten con contractors o aparecen en búsquedas de GitHub. Rotar una clave hardcodeada requiere un deploy completo, no solo un cambio de configuración.
// MAL: la clave queda en el historial de git para siempre
const key = 'mi-super-clave-secreta-32bytes!!';
const encrypted = crypto.createCipheriv('aes-256-gcm', key, iv);// BIEN: la clave viene del entorno, nunca del código fuente
const key = Buffer.from(process.env.ENCRYPTION_KEY!, 'hex');
const encrypted = crypto.createCipheriv('aes-256-gcm', key, iv);Ejemplo Real
En 2023, una subsidiaria de Toyota expuso 296,000 registros de clientes en parte por credenciales y claves hardcodeadas que estuvieron en un repo de GitHub durante casi cinco años antes de ser descubiertas.
Cómo Prevenirlo
- Guarda todas las claves de cifrado en variables de entorno o un secrets manager (AWS Secrets Manager, HashiCorp Vault)
- Agrega hooks de pre-commit o un escáner de secrets (Gitleaks, Trufflehog) para atrapar claves antes de hacer commit
- Rota cualquier clave que alguna vez haya estado en código fuente — asume que está comprometida
- Usa claves de mínimo 256 bits generadas con una fuente criptográficamente segura
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Modo ECB
mediumUsar modo ECB (Electronic Codebook) para encriptacion produce bloques de texto cifrado identicos para bloques de texto plano identicos, revelando patrones en los datos encriptados.
IV/Nonce Estatico
highUsar un Vector de Inicializacion (IV) o nonce hardcodeado o constante para encriptacion anula el proposito del IV y permite a los atacantes detectar patrones y desencriptar datos.
Tamano de Llave Debil
mediumUsar llaves criptograficas mas cortas que los minimos recomendados (RSA menor a 2048 bits, AES menor a 128 bits) hace la encriptacion vulnerable a ataques de fuerza bruta con hardware moderno.
Validacion de Certificado Deshabilitada
criticalDeshabilitar la validacion de certificados TLS con NODE_TLS_REJECT_UNAUTHORIZED=0 o rejectUnauthorized: false permite ataques man-in-the-middle en todas las conexiones HTTPS.