Una vulnerabilidad crítica en el complemento de WordPress expone más de 600.000 sitios a la adquisición remota

Se ha identificado una vulnerabilidad crítica de eliminación arbitraria de archivos en el popular plugin Forminator de WordPress, el cual está activo en más de 600.000 instalaciones a nivel mundial.

Esta vulnerabilidad, identificada como CVE-2025-6463, posee una calificación CVSS alta de 8.8. Permite a atacantes no autenticados eliminar archivos cruciales del sistema, incluyendo el archivo wp-config.php. Esta situación podría llevar a la toma completa del sitio y la ejecución remota de código.

El investigador de seguridad Phat RiO – BlueRock fue quien descubrió esta falla y la divulgó de manera responsable a través del programa de recompensas por errores (Bug Bounty) de Wordfence, recibiendo la recompensa más alta otorgada hasta la fecha, $8,100.

La vulnerabilidad se informó inicialmente el 20 de junio de 2025 y afecta a todas las versiones de Forminator hasta la versión 1.44.2 incluida.

Forminator es un complemento de creación de formularios de WordPress ampliamente utilizado que permite a los usuarios crear formularios de contacto, formularios de pago, cuestionarios y encuestas a través de una interfaz intuitiva de arrastrar y soltar.

La falla de seguridad se debe a una validación insuficiente de la ruta del archivo en la función Entry_delete_upload_files(), que procesa las eliminaciones de envíos de formularios.

Lo que hace que esta vulnerabilidad sea particularmente peligrosa es su potencial de explotación no autenticada.

Los atacantes pueden crear envíos de formularios maliciosos que contienen rutas de archivos arbitrarias y, cuando estos envíos se eliminan (ya sea manualmente por parte de los administradores o automáticamente a través de la configuración del complemento), los archivos especificados se eliminan permanentemente del servidor.

El escenario de ataque más crítico implica eliminar el archivo wp-config.php, que contiene las credenciales de la base de datos y las claves de seguridad.

Cuando se elimina este archivo, WordPress entra en un estado de configuración, lo que permite a los atacantes configurar el sitio con una base de datos bajo su control, logrando de manera efectiva un compromiso completo del sitio.

Los detalles técnicos revelan que la vulnerabilidad existe dentro de la función save_entry_fields() en la clase Forminator_CForm_Front_Action, que no logra realizar una desinfección adecuada en los valores de los campos del formulario.

La función llama a set_fields() en la clase Forminator_Form_Entry_Model, almacenando metadatos serializados directamente en la base de datos sin validación. Esto permite a los atacantes enviar matrices de archivos en cualquier campo de formulario, incluso aquellos que no están diseñados para aceptar cargas de archivos.

El problema principal radica en la falta de controles de seguridad adecuados de la función Entry_delete_upload_files().

El código vulnerable procesa todos los valores de metadatos que coinciden con una estructura de matriz de archivos sin verificar los tipos de campos, las extensiones de archivos ni las restricciones del directorio de carga.

La función utiliza wp_delete_file($path) para eliminar archivos, lo que permite apuntar a cualquier archivo en el servidor para el que el proceso del servidor web tenga permisos para eliminar.

Los atacantes pueden aprovechar esto enviando formularios con valores de ruta de archivo manipulados, como ../../../wp-config.php u otros archivos críticos del sistema.

WPMU DEV, el desarrollador del complemento, respondió rápidamente a la divulgación de la vulnerabilidad y lanzó un parche completo en la versión 1.44.3 el 30 de junio de 2025.

El parche implementa múltiples capas de seguridad, incluida la validación del tipo de campo, restringiendo la eliminación de archivos solo a los tipos de campo «cargar» y «firma», e implementando restricciones de ruta del directorio de carga utilizando las funciones wp_normalize_path() y realpath().

El código parcheado ahora incluye validación strpos() para garantizar que las rutas de los archivos permanezcan dentro del directorio de carga de WordPress, evitando ataques transversales de directorio.

Además, la solución incorpora comprobaciones sanitize_file_name() para validar los nombres base de los archivos antes de eliminarlos.

Se recomienda encarecidamente a los administradores de WordPress que actualicen a la versión 1.44.3 de inmediato para evitar una posible explotación de esta vulnerabilidad crítica.