Sin Límite de Tamaño del Cuerpo de Request
Los endpoints de API JSON sin límite de tamaño del body pueden ser víctimas de DoS enviando payloads JSON enormes que agotan la memoria del servidor durante el parseo.
Cómo Funciona
El middleware de parseo del body de Node.js (express.json, bodyParser de Next.js) carga todo el body de la request en memoria antes de parsearlo. Sin un límite de tamaño, un atacante envía una request JSON de 100MB. El servidor intenta parsearla, asigna 100MB+ de memoria y puede crashear o volverse irresponsable.
// MAL: sin límite de tamaño del body — el atacante envía body JSON de 100MB
// next.config.ts
export default {
// sin límite de tamaño de bodyParser configurado
};
// O en Express sin límite:
app.use(express.json()); // el default es 100kb, pero frecuentemente se sobreescribe a ilimitado// BIEN: límites explícitos de tamaño del body
// next.config.ts — sobreescribe el default por ruta si es necesario
export const config = {
api: {
bodyParser: {
sizeLimit: '1mb' // límite explícito — ajusta por endpoint
}
}
};
// Para Express:
app.use(express.json({ limit: '100kb' }));Ejemplo Real
Las aplicaciones Express con bodyParser configurado para aceptar bodies de request ilimitados han sido usadas como amplificadores en ataques DoS. Una sola máquina atacante enviando 10 requests concurrentes de 50MB puede hacer que un servidor Node.js asigne 500MB+ y crashee.
Cómo Prevenirlo
- Establece un límite explícito de tamaño del body en todos los endpoints JSON (1MB suele ser suficiente para payloads de API)
- Usa diferentes límites para diferentes tipos de endpoint: 100KB para auth, 1MB para API general, 10MB para operaciones masivas
- Valida el header Content-Length antes de leer el body para rechazar requests demasiado grandes tempranamente
- Rechaza requests sin header Content-Length en endpoints que esperan un body
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Sin Límite de Tamaño de Archivo
mediumLos endpoints de carga de archivos sin límites de tamaño permiten a los atacantes agotar el espacio en disco, la memoria y la CPU con cargas de múltiples gigabytes.
Sin Rate Limiting Global
mediumSin rate limiting global a nivel de edge o middleware, cualquier endpoint puede ser inundado con requests hasta que el servidor se desborde.
Sin Timeout de Request
lowLas requests HTTP sin timeouts del lado del servidor permiten que clientes lentos o ataques slow-body mantengan conexiones del servidor abiertas indefinidamente.
WebSocket Sin Autenticación
highLos endpoints WebSocket que aceptan conexiones sin verificar autenticación permiten que usuarios no autenticados reciban flujos de datos en tiempo real destinados a usuarios autenticados.