mediumCWE-400A05:2021

Sin Límite de Tamaño de Archivo

Los 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.

Cómo Funciona

Sin un límite de tamaño de archivo, un atacante puede cargar un archivo de 10GB a tu bucket de almacenamiento, llenar tu directorio /tmp o crashear tu servidor por OOM cargando el archivo en memoria para procesarlo. Incluso sin intención maliciosa, un usuario que carga un video 4K crudo a un endpoint de foto de perfil causa el mismo problema.

Código Vulnerable
// MAL: sin límite de tamaño de archivo — el atacante carga archivos de 10GB
export const config = { api: { bodyParser: false } };

export default async function handler(req, res) {
  const form = new IncomingForm(); // sin maxFileSize configurado
  const [fields, files] = await form.parse(req);
  await uploadToStorage(files.upload[0]);
}
Código Seguro
// BIEN: aplica límite de tamaño antes de procesar
export const config = { api: { bodyParser: false } };

export default async function handler(req, res) {
  const form = new IncomingForm({
    maxFileSize: 5 * 1024 * 1024, // límite de 5MB
    maxFiles: 1
  });
  const [fields, files] = await form.parse(req);
  await uploadToStorage(files.upload[0]);
}

Ejemplo Real

Múltiples servidores de producción han sido desconectados por ataques DoS de carga de archivos donde el atacante cargó archivos de múltiples GB que llenaron la capa escribible del contenedor o agotaron la memoria heap de Node.js durante el procesamiento de imágenes.

Cómo Prevenirlo

  • Establece maxFileSize al mínimo necesario para tu caso de uso (5MB para fotos de perfil, 50MB para documentos)
  • Valida el tamaño del archivo tanto del lado del cliente (para UX) como del servidor (para seguridad)
  • También establece un número máximo de archivos por solicitud de carga
  • Usa carga directa a almacenamiento en la nube (Supabase Storage, URLs presignadas de S3) donde sea posible — el archivo nunca toca tu servidor

Tecnologías Afectadas

Node.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas