Vulnerabilidades en Subida de Archivos: De XSS a RCE

Publicado el 2026-02-24

La funcionalidad de subida de archivos (File Upload) es un vector de ataque crítico si no se implementan controles estrictos sobre el tipo, contenido, nombre y tamaño de los archivos.

Riesgos de Seguridad

  1. Remote Code Execution (RCE): Si el servidor web está configurado para ejecutar scripts (como PHP, ASP, JSP) en el directorio de subidas, un atacante puede subir una Web Shell y tomar control total del sistema operativo.
  2. XSS Stored (Client-Side): Subir archivos HTML, SVG o XML con scripts incrustados. Cuando otro usuario visualiza el archivo, el script se ejecuta en el contexto del dominio de la aplicación.
  3. Denegación de Servicio (DoS): Subida de archivos masivos para agotar el espacio en disco o el ancho de banda.

Estrategias de Validación Segura

Para mitigar estos riesgos, se debe aplicar una defensa en profundidad:

  • Lista Blanca de Extensiones: Permitir explícitamente solo extensiones seguras (ej. .jpg, .png, .pdf).
  • Validación de Contenido (Magic Bytes): Verificar la cabecera del archivo para asegurar que coincide con la extensión.
  • Renombrado Aleatorio: Guardar el archivo con un UUID generado por el sistema para evitar colisiones y ejecución directa basada en nombres predecibles.
  • Almacenamiento Externo: Servir los archivos desde un dominio diferente o un bucket S3 para aislar el riesgo de XSS.