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.
// 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!// 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 4Ejemplo 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
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Stack Traces Expuestos al Usuario
mediumRetornar stack traces o detalles de errores internos en respuestas de API revela tu estructura de archivos, versiones de librerías y rutas de código a los atacantes.
Sin Error Boundary de React
lowSin error boundaries, un error de JavaScript en cualquier componente crashea todo el árbol de React y muestra una pantalla en blanco al usuario.
Logging de Seguridad Insuficiente
lowNo loguear eventos de seguridad (logins fallidos, denegaciones de permisos, acciones sospechosas) significa que no puedes detectar ataques en curso ni reconstruir lo que pasó después de una brecha.
PII en Logs
mediumLoguear información personal identificable (email, nombre completo, IP, teléfono) crea riesgos de privacidad y cumplimiento bajo GDPR y CCPA.