highCWE-321A02:2021

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.

Código Vulnerable
// 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);
Código Seguro
// 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

Node.jsPythonJava

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas