PII en Logs
Loguear información personal identificable (email, nombre completo, IP, teléfono) crea riesgos de privacidad y cumplimiento bajo GDPR y CCPA.
Cómo Funciona
Los agregadores de logs retienen datos durante semanas o meses y frecuentemente se comparten entre equipos. Loguear direcciones de email completas, nombres o IPs convierte tu sistema de logs en un almacén de datos personales — sujeto a solicitudes de acceso GDPR, requisitos de notificación de brechas y regulaciones de retención de datos.
// MAL: PII escrita en logs en texto plano
logger.info(`Usuario ${user.email} (${user.fullName}) inició sesión desde ${req.ip}`);
logger.error(`Pago fallido para ${user.email}, tarjeta: ${card.number}`);
logger.debug('Request body:', req.body); // puede contener PII de campos de formulario// BIEN: loguea identificadores, no PII
logger.info({ event: 'login', userId: user.id, ipHash: hash(req.ip) });
logger.error({ event: 'payment_failed', userId: user.id, last4: card.last4 });
// Nunca loguees req.body directamente — loguea solo los campos que necesitasEjemplo Real
En 2019, Twitter reveló que números de teléfono y direcciones de email usadas para 2FA habían sido logueadas inadvertidamente y eran accesibles para algunos equipos internos. El incidente desencadenó investigaciones GDPR en múltiples países de la UE.
Cómo Prevenirlo
- Nunca loguees direcciones de email, nombres completos, números de teléfono o direcciones IP en texto plano
- Usa IDs de usuario pseudonimizados en los logs en vez de información identificable
- Configura tu logger para hashear o redactar campos PII automáticamente
- Documenta tu política de retención de logs y asegúrate de que sea más corta que tu política de retención de datos
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Console.log de Datos Sensibles
mediumLoguear 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.
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.