mediumCWE-532A09:2021

Console.log de Datos Sensibles

Loguear contraseñas, tokens, objetos de usuario completos o datos de pago a la consola envía esos datos a tu agregador de logs en texto plano.

Cómo Funciona

console.log() en Node.js escribe a stdout, que es capturado por cada agregador de logs (CloudWatch, Datadog, Splunk). Si loguas un objeto de usuario que incluye passwordHash o un token de auth durante debugging y olvidas eliminarlo, todos con acceso a logs pueden verlo. El acceso a logs frecuentemente es mucho más amplio que el acceso a la base de datos.

Código Vulnerable
// MAL: loguear objetos de usuario completos o campos sensibles
console.log('Intento de login:', { email, password }); // ¡contraseña en logs!
console.log('Sesión de usuario:', user); // user.passwordHash en logs!
console.log('Pago:', { monto, numeroTarjeta }); // PAN en logs!
Código Seguro
// BIEN: loguea solo identificadores no sensibles y estado
console.log('Intento de login para:', email); // solo email, sin contraseña
console.log('Sesión creada para userId:', user.id); // solo id
console.log('Pago procesado:', { monto, last4: tarjeta.last4 }); // solo últimos 4

Ejemplo Real

Un análisis de la brecha de Twitch de 2021 reveló que los logs internos que contenían tokens de sesión de usuarios fueron incluidos en los datos filtrados. Cualquier desarrollador con acceso a logs antes de la brecha podría haber visto tokens de sesión activos de cualquier usuario.

Cómo Prevenirlo

  • Usa un logger estructurado (Pino, Winston) con redacción integrada para nombres de campos sensibles
  • Nunca loguees password, passwordHash, token, secret, cardNumber, ssn ni campos similares
  • Audita todos los console.log antes de deployar a producción — tu linter debería marcar estos
  • Usa IDs de usuario e identificadores anonimizados en los logs, no objetos de usuario completos

Tecnologías Afectadas

Node.jsjavascript

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas