Inyección de Header de Email
Input del usuario sin sanitizar usado en los campos To, From, CC o Subject del email, permitiendo a atacantes inyectar destinatarios adicionales y convertir tu servidor de email en un relay de spam.
Cómo Funciona
Los headers de email usan el mismo formato delimitador CRLF que HTTP. Si un atacante pone su nombre como `victima@evil.com\r\nBCC: spam1@objetivo.com,spam2@objetivo.com`, tu librería de email lo parseará como múltiples headers y enviará el email a miles de destinatarios extra — todos desde tu dominio e IP.
// MAL: email provisto por el usuario directo en headers
const name = req.body.name; // atacante inyecta CRLF + header BCC
await sendEmail({
to: 'admin@ejemplo.com',
replyTo: `${name} <${email}>`,
subject: `Nuevo mensaje de ${name}`
});// BIEN: valida y elimina CRLF de todos los campos de email
const schema = z.object({
name: z.string().max(100).regex(/^[\w\s'-]+$/),
email: z.string().email(),
message: z.string().max(2000),
});
const { name, email, message } = schema.parse(req.body);Ejemplo Real
Los formularios de contacto en apps PHP y Node.js más viejas eran comúnmente explotados como relays de spam. Un atacante envía miles de submissions con headers BCC inyectados, causando que la IP de tu servidor sea blacklisteada y la reputación de tu dominio se desplome.
Cómo Prevenirlo
- Valida las direcciones de email con un regex estricto o z.string().email() de Zod
- Elimina \r y \n de todos los campos usados en headers de email (To, From, CC, BCC, Subject)
- Usa una API de email transaccional (Resend, SendGrid, Postmark) que maneja el encoding de headers
- Implementa rate limiting en los endpoints de contacto y envío de emails
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Inyección LDAP
highInput del usuario insertado en filtros de búsqueda LDAP sin escapar, permitiendo a atacantes manipular queries de directorio, bypassear autenticación o extraer datos sensibles del directorio.
XXE — Inyección de Entidad Externa XML
highParsers XML configurados para procesar referencias a entidades externas, permitiendo a atacantes leer archivos arbitrarios del servidor o disparar SSRF con un payload XML malicioso.
Inyección de Header HTTP (Inyección CRLF)
mediumInput controlado por el usuario incluido en headers de respuesta HTTP sin sanitizar, permitiendo a atacantes inyectar headers arbitrarios o dividir la respuesta en dos respuestas HTTP separadas.
Inyección en Logs
lowInput provisto por el usuario escrito en logs sin sanitizar, permitiendo a atacantes falsificar entradas de log, ocultar sus huellas o inyectar contenido malicioso en archivos de log.