Carga de Archivo sin Validacion
Aceptar cargas de archivos sin verificar tipo, tamano o contenido permite a los atacantes subir ejecutables maliciosos, web shells o archivos sobredimensionados que crashean el servidor.
Cómo Funciona
Cuando una aplicacion acepta cargas de archivos sin validacion, los atacantes pueden subir archivos que el servidor nunca deberia procesar. Un web shell PHP disfrazado como imagen puede ejecutar comandos arbitrarios cuando se accede via URL. Un ejecutable subido como documento puede comprometer a otros usuarios que lo descarguen. Archivos sobredimensionados pueden llenar el disco y causar denegacion de servicio. Incluso con validacion del lado del cliente, los atacantes la bypassean trivialmente usando curl o Burp Suite. El servidor debe validar independientemente el tipo de archivo (por contenido, no solo extension), limitar el tamano y almacenar archivos fuera del web root.
const multer = require('multer');
const upload = multer({ dest: 'public/uploads/' });
app.post('/upload', upload.single('file'), (req, res) => {
res.json({ url: `/uploads/${req.file.filename}` });
});const multer = require('multer');
const upload = multer({
dest: 'private/uploads/',
limits: { fileSize: 5 * 1024 * 1024 },
fileFilter: (req, file, cb) => {
const allowed = ['image/jpeg', 'image/png', 'image/webp'];
cb(null, allowed.includes(file.mimetype));
}
});Ejemplo Real
En 2023, una vulnerabilidad de carga de archivos en MOVEit Transfer (CVE-2023-34362) fue explotada por el grupo de ransomware Clop. Los atacantes subieron web shells a traves del servicio de transferencia de archivos, comprometiendo mas de 2,500 organizaciones incluyendo Shell, British Airways y la BBC.
Cómo Prevenirlo
- Valida el tipo MIME del archivo leyendo los headers del contenido, no solo la extension
- Aplica limites estrictos de tamano usando la opcion limits de multer
- Almacena archivos subidos fuera del web root en un directorio privado
- Genera nombres de archivo aleatorios y nunca uses el nombre original del usuario
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Travesia de Ruta
highRutas de archivos construidas con input de usuario sin validar permiten a los atacantes leer o escribir archivos arbitrarios en el servidor usando secuencias ../.
SVG con JavaScript
mediumAceptar cargas de SVG sin sanitizacion permite a los atacantes embeber JavaScript en archivos SVG, habilitando ataques XSS cuando el SVG se renderiza en un navegador.
EXIF No Eliminado
lowImagenes servidas sin eliminar metadatos EXIF pueden filtrar coordenadas GPS, informacion del dispositivo, timestamps y otros datos sensibles de la persona que tomo la foto.
Inyeccion en Generacion de PDF
mediumInyectar HTML o JavaScript en templates de generacion de PDF permite a los atacantes leer archivos del servidor, hacer requests a la red interna o ejecutar scripts en el visor de PDF.