- CVE-2025-34299 permite ejecución remota de código sin autenticación en Monsta FTP mediante descarga y escritura arbitraria de ficheros desde un servidor (S)FTP malicioso.
- La vulnerabilidad afecta a todas las versiones previas a la 2.11.3 y está relacionada con fallos históricos de validación insuficiente de rutas y subidas de archivos.
- La corrección efectiva llega con Monsta FTP 2.11.3, pero es imprescindible complementar el parche con segmentación de red, restricción de acceso a la API y monitorización de conexiones salientes.
La vulnerabilidad CVE-2025-34299 en Monsta FTP se ha convertido en uno de los fallos más serios de los últimos tiempos para aplicaciones web de gestión de ficheros. Hablamos de un fallo de ejecución remota de código sin autenticación que permite a un atacante tomar el control completo del servidor donde está instalado Monsta FTP, simplemente forzando una conexión con un servidor (S)FTP malicioso y aprovechando una validación insuficiente de rutas y ficheros.
Este problema no es un caso aislado: enlaza con una historia previa de vulnerabilidades en Monsta FTP (SSRF, subidas arbitrarias, validaciones parciales) y con una gestión de parches algo confusa, donde se introdujeron mecanismos de validación que daban sensación de seguridad pero que no solucionaban la raíz del fallo. Todo ello ha desembocado en un CVE crítico con puntuación CVSS 9.3 que ya se está explotando en entornos reales y que afecta a miles de instancias en Internet.
Qué es Monsta FTP y por qué importa esta vulnerabilidad
Monsta FTP es un cliente FTP y SFTP basado en web, desarrollado en PHP y JavaScript, que se instala directamente en un servidor web para gestionar archivos a través del navegador, en lugar de usar un cliente de escritorio tradicional. Esta filosofía lo hace especialmente cómodo para admins y desarrolladores que quieren subir, descargar y modificar ficheros desde cualquier sitio sin software adicional.
El problema es que este tipo de herramientas, al estar expuestas a Internet, se convierten en un objetivo muy atractivo para atacantes. Monsta FTP tiene una base instalada considerable, con presencia en instituciones financieras, empresas y usuarios avanzados que lo utilizan para administrar sus sitios y servidores de forma centralizada.
Además, la ruta de instalación por defecto suele ser /mftp/, algo que en la práctica “esconde” muchas instalaciones de los escaneos más genéricos, pero que no impide en absoluto que un atacante que detecte la tecnología pueda intentar explotar vulnerabilidades conocidas.
En este contexto, un fallo que permite a un atacante remoto y anónimo subir archivos arbitrarios y ejecutarlos en el servidor, como ocurre con CVE-2025-34299, es especialmente grave: la aplicación pasa de ser una simple herramienta de gestión de ficheros a un vector directo de compromiso total del sistema.
Descripción técnica de CVE-2025-34299: origen y naturaleza del fallo
La vulnerabilidad CVE-2025-34299 ha sido documentada en detalle por los investigadores de watchTowr Labs, que la describen como un fallo de subida arbitraria de ficheros con ejecución remota de código en Monsta FTP. El fallo afecta a todas las versiones anteriores a la 2.11.3 y permite a un atacante remoto no autenticado conseguir que Monsta FTP descargue un archivo controlado por él desde un servidor (S)FTP y lo guarde en una ruta arbitraria del servidor web, donde después puede ejecutarse.
En versiones iniciales (hasta la 2.11) el problema se relacionaba con el manejo inseguro de parámetros y la falta de validación robusta de rutas y archivos. Ya se habían reportado vulnerabilidades similares como CVE-2022-27468 (subida arbitraria de ficheros) y CVE-2022-31827 (SSRF), que ponían de manifiesto que parte del flujo de descarga y copia de archivos no estaba adecuadamente protegido.
Los investigadores identificaron que, aunque se introdujo más tarde un módulo de validación (inputValidator.php) con numerosas funciones para detectar traversal de directorios, rutas absolutas, bytes nulos y patrones sospechosos, estas defensas no se aplicaban correctamente sobre el flujo que realmente permitía escribir archivos de manera insegura. Es decir, la superficie de ataque seguía abierta aun con todos esos filtros sobre el papel.
El resultado práctico es que, en Monsta FTP hasta la versión 2.11.2, un atacante podía forzar la descarga de un archivo desde un servidor SFTP controlado y ordenar que se guardase en un directorio accesible desde la web, consiguiendo así una ejecución de código con los permisos del proceso del servidor web, normalmente www-data u otro usuario similar.
Cómo se explota la vulnerabilidad en la API de Monsta FTP
El corazón de la vulnerabilidad se encuentra en el endpoint /mftp/application/api/api.php, que actúa como punto central para las acciones de la aplicación. Este endpoint recibe un parámetro llamado request en el cuerpo de la petición HTTP, que contiene un JSON estructurado con todos los datos necesarios para establecer la conexión (S)FTP y realizar acciones sobre ficheros.
Dentro de ese JSON, se especifican aspectos como el tipo de conexión (connectionType = «sftp»), la configuración del servidor remoto (configuration: host, puerto, usuario, contraseña, directorio inicial) y el nombre de la acción a ejecutar (actionName), como por ejemplo downloadFile, uploadFile o fetchRemoteFile. En la sección context se incluyen parámetros adicionales, entre ellos las rutas local y remota.
La aplicación cuenta con una función de despacho que, a través de una sentencia switch, decide qué hacer en función de actionName. Ahí es donde entra en juego la lógica de validación del módulo InputValidator, que revisa parámetros como remotePath o localPath para ciertas acciones, intentando evitar recorridos de directorios o rutas peligrosas.
Sin embargo, los investigadores observaron que, en el caso concreto de la acción downloadFile, la implementación real delegaba en un flujo de código donde la ruta local a la que se copiaba el archivo remoto seguía siendo controlable por el atacante a través del parámetro localPath. Ese valor acababa utilizándose directamente en la llamada a copy() sin una restricción efectiva de a qué directorios se podía escribir.
En la práctica, esto significa que un atacante puede construir una petición HTTP POST hacia /mftp/application/api/api.php en la que ordena a Monsta FTP conectar con un servidor SFTP malicioso, descargar un archivo (por ejemplo, shell.php) y almacenarlo en una ubicación arbitraria del servidor web, como /var/www/html/mftp/index3.php. Después, basta con realizar una petición GET al fichero recién creado para ejecutar el código PHP malicioso con permisos del servidor.
Comparación con vulnerabilidades previas y fallos de parcheo
El caso de CVE-2025-34299 no surge de la nada: Monsta FTP arrastraba ya un historial de vulnerabilidades relacionadas con el manejo inseguro de entradas de usuario y de rutas de ficheros. Versiones como la 2.10.3 y 2.10.4 ya habían sido afectadas por CVE-2022-31827 y CVE-2022-27468, que implicaban tanto SSRF como subida arbitraria de archivos.
La investigación detallada de watchTowr mostró que entre la 2.10.3 y la 2.10.4 apenas había cambios relevantes en el código, pese a que ya existían CVE documentados. Es decir, las versiones posteriores seguían siendo, en esencia, vulnerables a los mismos problemas, y los parches no abordaban de manera estructural la lógica que permitía escribir archivos de forma peligrosa.
Con la llegada de la versión 2.11, Monsta FTP introdujo el módulo inputValidator.php, donde se añadieron funciones de validación muy exhaustivas: detección de cadenas como «../», variantes codificadas (%2f, %5c, etc.), rutas absolutas, longitud máxima de ruta y otros patrones sospechosos. A primera vista, parecía una limpieza profunda del código para reforzar la seguridad.
No obstante, al reejecutar los proof-of-concept de SSRF y subir archivos, los investigadores comprobaron que los ataques seguían funcionando incluso en la 2.11. En otras palabras, se había aplicado una capa de “envoltorio” de validación alrededor de muchos puntos de entrada, pero el flujo concreto que hacía posible la escritura arbitraria no había sido cortado.
Este patrón ilustra un problema común en muchos proyectos: implementar capas de validación general sin revisar a fondo las rutas de código críticas que conducen a operaciones peligrosas como abrir, escribir o copiar archivos en el servidor. El resultado es una falsa sensación de seguridad tanto para desarrolladores como para administradores, mientras la vulnerabilidad principal permanece abierta.
Explotación sin credenciales y alcance del impacto
Una de las características más preocupantes de CVE-2025-34299 es que la explotación es totalmente pre-auth, es decir, no se necesitan credenciales válidas ni sesión previa en el panel de Monsta FTP. El atacante solo necesita que la instancia de Monsta FTP sea accesible desde Internet y que la API /mftp/application/api/api.php acepte la petición maliciosa.
Al conseguir ejecutar código con los permisos del servidor web, el atacante gana la capacidad de instalar puertas traseras, desplegar webshells, leer o modificar archivos de la aplicación, e incluso pivotar a otros sistemas de la red interna si la arquitectura no está bien segmentada. En entornos empresariales o financieros, esto puede terminar en robo de datos sensibles, fraude o interrupciones de servicio serias.
La amplitud del impacto se ve incrementada por la adopción significativa de Monsta FTP, con varios miles de instancias accesibles en Internet, según estimaciones de los investigadores. Muchas de ellas ni siquiera aparecen en escaneos genéricos debido al contexto por defecto /mftp/, lo que dificulta a las organizaciones saber si realmente tienen esta superficie expuesta y en qué versión.
Otro punto crítico es que la vulnerabilidad puede ser explotada desde cualquier parte del mundo, siempre que el servidor web sea accesible, y que la operación de conexión hacia el servidor SFTP malicioso sea posible a nivel de red. Si no hay reglas de firewall que restrinjan conexiones salientes desde el servidor hacia Internet, la explotación resulta extremadamente trivial.
En este escenario, los atacantes pueden automatizar escaneos y explotación sobre Monsta FTP vulnerable, integrándolo en sus campañas de ataque masivo, tanto para ransomware como para instalación de botnets o robo de credenciales.
Versiones afectadas, línea temporal y parche disponible
La vulnerabilidad CVE-2025-34299 impacta a todas las versiones de Monsta FTP anteriores a la 2.11.3. Esto incluye ramas en las que ya se habían registrado otros CVE (2.10.3, 2.10.4, 2.11, 2.11.1, 2.11.2) y que seguían arrastrando el problema en la lógica interna de descarga y copia de archivos.
La cronología conocida del proceso de descubrimiento y parcheo es, a grandes rasgos, la siguiente, según la investigación de watchTowr:
- 13 de agosto de 2025: watchTowr reporta la vulnerabilidad (referida como WT-2025-0091) al equipo de desarrollo de Monsta FTP.
- 14 de agosto de 2025: el equipo de Monsta FTP reconoce la recepción del informe y se compromete a revisar el problema.
- 15 de agosto de 2025: watchTowr inicia un análisis más amplio de la superficie de ataque de sus clientes en busca de instancias vulnerables de Monsta FTP.
- 26 de agosto de 2025: se publica la versión 2.11.3 de Monsta FTP, que finalmente corrige de forma efectiva la vulnerabilidad abordando el flujo de escritura insegura.
- 4 de noviembre de 2025: se asigna oficialmente el identificador CVE-2025-34299 a esta vulnerabilidad.
- 6 de noviembre de 2025: watchTowr hace pública su investigación técnica detallada sobre el fallo.
A partir de la versión 2.11.3, el código introduce controles adicionales que restringen las rutas de escritura a directorios permitidos y refuerza la validación de parámetros, evitando que localPath se utilice de manera arbitraria para escribir en ubicaciones del sistema que puedan ser servidas por el servidor web.
El consenso general entre analistas y proveedores de seguridad es claro: cualquier organización que siga ejecutando versiones anteriores a 2.11.3 debe actualizar de inmediato o, si no puede, deshabilitar el acceso público a Monsta FTP mientras planifica la migración.
Cómo identificar instancias vulnerables de Monsta FTP
Localizar todas las instancias de Monsta FTP dentro de una organización no siempre es trivial, especialmente cuando existen servidores antiguos o olvidados donde se instaló la herramienta hace años y nunca se volvió a revisar. Aquí es donde entran en juego soluciones de gestión de superficie de ataque y descubrimiento de activos.
Herramientas como runZero han publicado consultas específicas para ayudar a identificar posibles instancias vulnerables basadas en características como el favicon de la aplicación. Un ejemplo de consulta sugerida es:
_asset.protocol:http AND protocol:http AND favicon.ico.image.mmh3:="1535999103"
Esta consulta permite encontrar servicios HTTP cuya huella del favicon coincide con la de Monsta FTP, dando una primera lista de sistemas que merecen revisión detallada de versión y configuración. A partir de ahí, es imprescindible validar manualmente la versión instalada y verificar si se ha aplicado el parche 2.11.3 o posterior.
Además de este tipo de búsquedas, conviene realizar inventarios internos (por ejemplo, con scripts o herramientas de escaneo) que busquen la ruta /mftp/ en servidores web y revisen los ficheros de la aplicación, ya que algunas instalaciones pueden no seguir la configuración estándar de puertos o dominios.
Medidas de mitigación y buenas prácticas de defensa
Aunque el paso fundamental para mitigar CVE-2025-34299 es actualizar Monsta FTP a la versión 2.11.3 o posterior, limitarse a aplicar el parche y olvidarse del tema es una mala idea. Este incidente deja claro que hacen falta capas adicionales de seguridad alrededor de aplicaciones de este tipo.
En primer lugar, es muy recomendable restringir el acceso a la API de Monsta FTP. El endpoint /mftp/application/api/api.php no debería ser accesible de forma abierta desde cualquier IP de Internet. Lo ideal es filtrar el tráfico a través de firewalls o listas de control de acceso, permitiendo solo rangos concretos (por ejemplo, la red corporativa VPN) o incluso restringiendo el uso a una intranet; una opción común en servidores Linux es usar iptables en Linux para ese filtrado.
En segundo lugar, se debe aplicar una segmentación de red adecuada. Los servidores web que alojan aplicaciones como Monsta FTP no deberían tener acceso directo sin restricciones a sistemas críticos (bases de datos centrales, ERPs, sistemas financieros, etc.). Con una buena segmentación y entendiendo el modelo TCP/IP, incluso si el servidor web se ve comprometido, el atacante tendrá muchas más dificultades para moverse lateralmente.
Otra medida esencial es monitorizar conexiones salientes anómalas, especialmente aquellas relacionadas con SFTP, FTP o SSH hacia destinos externos inusuales. La explotación de esta vulnerabilidad requiere que el servidor vulnerable se conecte a un servidor (S)FTP controlado por el atacante, por lo que un sistema de monitorización o un SIEM bien configurado debería ser capaz de levantar alertas cuando detecte este tipo de tráfico sospechoso.
Por último, es recomendable desplegar y configurar correctamente un firewall de aplicaciones web (WAF) y aplicar políticas de endurecimiento del servidor: reducir permisos de escritura, asegurarse de que el proceso del servidor web corre con el mínimo privilegio posible y realizar escaneos de vulnerabilidades periódicos para detectar instancias o versiones antiguas que se hayan quedado atrás en el ciclo de actualización.
Zero trust, vigilancia continua y contexto de otras vulnerabilidades
El caso de Monsta FTP y CVE-2025-34299 encaja perfectamente en la narrativa de por qué los enfoques de seguridad de confianza cero (zero trust) son cada vez más necesarios. La idea de que una aplicación expuesta a Internet se puede considerar fiable solo porque está “actualizada” resulta ingenua cuando los flujos de explotación se centran en detalles muy concretos de implementación.
Adoptar un enfoque zero trust implica validar y monitorizar continuamente cada acceso, cada conexión y cada cambio de configuración, en lugar de asumir que, una vez configurado y parcheado, un servicio no volverá a dar problemas. En el caso de Monsta FTP, eso significa no solo actualizar, sino también revisar periódicamente logs, comportamiento de red, integridad de archivos y aparición de ficheros nuevos sospechosos (shells, scripts desconocidos, etc.).
Además, este incidente no ocurre en el vacío: otros productos ampliamente desplegados, como los navegadores, también sufren regularmente fallos críticos. Un ejemplo reciente fuera del mundo Monsta FTP es la vulnerabilidad CVE-2024-11395 en Google Chrome, una falla de type confusion en el motor V8 que podría permitir la ejecución de código arbitrario mediante páginas HTML especialmente preparadas.
En el caso de Chrome, Google publicó una actualización estable (versiones 131.0.6778.85/.86 en Windows y Mac, y 131.0.6778.85 en Linux) para corregir tres vulnerabilidades, incluida esta de alta severidad. Las recomendaciones fueron claras: actualizar inmediatamente, activar las actualizaciones automáticas y evitar sitios de origen dudoso. El paralelismo con Monsta FTP es evidente: producto muy usado, fallo grave, necesidad de parche inmediato y, aun así, un porcentaje significativo de sistemas tarda tiempo en ponerse al día.
Todo esto refuerza la idea de que la seguridad no es un acto puntual, sino un proceso continuo de gestión de exposición, igual que plantean plataformas orientadas a la gestión proactiva de amenazas y superficies de ataque externas. Integrar este tipo de herramientas y prácticas en el día a día permite ganar algo tan valioso como tiempo de reacción ante nuevas vulnerabilidades.
La vulnerabilidad CVE-2025-34299 en Monsta FTP, su relación con fallos anteriores, el largo camino hasta un parche realmente efectivo y la necesidad de complementar las actualizaciones con controles de red, WAF, segmentación y enfoque zero trust, dibujan un escenario en el que las organizaciones que adopten una postura de defensa proactiva tendrán muchas más opciones de evitar que un simple cliente web de FTP se convierta en la puerta de entrada de un incidente grave.
Tabla de Contenidos
- Qué es Monsta FTP y por qué importa esta vulnerabilidad
- Descripción técnica de CVE-2025-34299: origen y naturaleza del fallo
- Cómo se explota la vulnerabilidad en la API de Monsta FTP
- Comparación con vulnerabilidades previas y fallos de parcheo
- Explotación sin credenciales y alcance del impacto
- Versiones afectadas, línea temporal y parche disponible
- Cómo identificar instancias vulnerables de Monsta FTP
- Medidas de mitigación y buenas prácticas de defensa
- Zero trust, vigilancia continua y contexto de otras vulnerabilidades