Si ha recibido un correo mío que le remite a esta página, es porque su sitio web parece estar ejecutando una versión de Drag and Drop Multiple File Upload for Contact Form 7 (el plugin de WordPress que figura en WordPress.org con ese nombre, de codedropz, que reside en sus archivos en /wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/) que entra dentro del rango afectado por un problema de seguridad conocido. Esta página explica en qué consiste el problema, cómo averiguar si le afecta siquiera a su sitio, cómo leer su versión sin que le induzca a error, y cómo actualizar.

Tenga en cuenta que esta no es la versión para WooCommerce. El mismo autor publica un plugin aparte, «Drag and Drop Multiple File Upload for WooCommerce» (carpeta drag-and-drop-multiple-file-upload-for-woocommerce), que es un producto distinto con su propia numeración de versiones. Si el plugin de sus archivos es el de WooCommerce y no el de Contact Form 7, esta página no trata sobre él. Todo lo que sigue se refiere únicamente al complemento para Contact Form 7.

Antes de nada, el dato más importante de este aviso: que su versión esté dentro del rango afectado no significa por sí solo que su sitio esté expuesto. El problema descrito abajo solo entra en juego en sitios que tienen un tipo concreto de campo de subida, y yo no puedo ver desde fuera cómo están configurados sus formularios:

  • El problema solo alcanza a un formulario de Contact Form 7 que tenga uno de los campos de subida por arrastrar y soltar de este plugin configurado para aceptar cualquier tipo de archivo.
  • Un campo que restringe lo que acepta a tipos concretos (por ejemplo imágenes o PDF) no está expuesto a este problema, ni siquiera en una versión afectada. Restringir los tipos aceptados es también el comportamiento predeterminado cuando un campo no los especifica.

Puedo leer la versión de su plugin a partir de un archivo público, pero no puedo leer la configuración de sus formularios, así que este aviso es una advertencia preventiva y no un hallazgo confirmado sobre su sitio.

El problema es CVE-2026-18781, un fallo de subida de archivos sin autenticación en la gestión de subidas del plugin. Afecta a las versiones 1.3.9.3 a la 1.3.9.8 y está corregido en la 1.3.9.9. Si está ejecutando una versión afectada, actualice Drag and Drop Multiple File Upload for Contact Form 7 a la 1.3.9.9 o posterior, y mantenga también actualizado el propio Contact Form 7.

Una palabra sobre la urgencia, porque este es un aviso condicional. Si ninguno de sus campos de subida acepta cualquier tipo de archivo, actualizar es mantenimiento ordinario del plugin. Si alguno sí lo acepta, trate la actualización como una prioridad: en esa configuración, el fallo podría permitir que un visitante sin ninguna cuenta guarde en su servidor un archivo de su elección, de un tipo que el servidor podría después ejecutar, lo que puede llevar al control total del sitio.

Este es un fallo del plugin, no del núcleo de WordPress, y es independiente del propio Contact Form 7. Un WordPress completamente actualizado, y un Contact Form 7 actualizado, no le protegen si este complemento está en una versión afectada.

¿Es legítimo este mensaje?

Sí. Es un aviso de divulgación responsable y de buena fe de un investigador de seguridad independiente. No le pido dinero, contraseñas ni acceso a su sitio, y no he intentado entrar en él, enviar ninguno de sus formularios ni subir nada a él.

Lo único que hice fue mirar archivos visibles públicamente que su sitio web sirve a cualquier visitante (igual que su página de inicio es pública) y anotar el número de versión que publica el plugin. En concreto, no envié ningún formulario, no subí ningún archivo y no me acerqué al gestor de subidas del plugin. Nada de esta comprobación toca sus datos, su área de administración ni ninguna parte privada de su sitio (más detalle en Qué hice y qué no hice, más abajo).

Si desea verificar quién soy, consulte los datos de contacto al final de esta página y la página Acerca de.

Por qué importa

Este plugin añade campos de subida de archivos por arrastrar y soltar a los formularios de Contact Form 7, para que los visitantes puedan adjuntar archivos al enviar un formulario: una solicitud de empleo, una petición de soporte, una foto. Para que eso sea seguro, el plugin debe rechazar los tipos de archivo peligrosos.

En las versiones afectadas, esa comprobación se podía eludir. El plugin examinaba el nombre del archivo subido para decidir si el tipo estaba permitido, después ajustaba el nombre, y guardaba el archivo sin volver a comprobar el nombre ya ajustado. Como el nombre se cambiaba después de haber sido aprobado, se podía preparar un nombre de manera que la versión comprobada pareciera inofensiva mientras que la versión realmente guardada no lo fuera, dejando que un tipo de archivo no permitido llegara al servidor. Cuando el servidor trata después ese archivo como algo que puede ejecutar, el resultado es que el archivo de un desconocido se ejecuta en su sitio.

De ahí se derivan dos cosas, y tiran en direcciones opuestas. La primera es que esto solo importa donde un formulario tiene un campo de subida configurado para aceptar cualquier tipo de archivo. Donde todos los campos de subida están limitados a un conjunto concreto de tipos, el archivo disfrazado no coincide con ningún tipo permitido y se rechaza, así que un sitio en ese estado no es alcanzable a través de este problema. La segunda es que, donde existe un campo que «acepta cualquier cosa», no se necesita ninguna cuenta, ninguna contraseña ni la colaboración de nadie: el formulario está abierto al público por diseño.

Describo esto al nivel que el propietario de un sitio necesita para actuar, y no más. No publico los detalles que permitirían a alguien reproducirlo, y le pediría que no lo intente contra su propio sitio ni contra el de nadie. Leer la configuración de sus formularios y su número de versión, tal como se explica abajo, le dice todo lo que necesita para decidir qué hacer.

Si mi correo citaba este problema, significa que la versión que informa su sitio está dentro del rango afectado. No comprobé si su sitio en concreto es explotable, y no puedo ver cómo están configurados sus formularios. Lo único que observé es la versión.

¿Estoy afectado?

Dos preguntas lo deciden, en este orden.

Primero: ¿algún campo de subida acepta «cualquier tipo de archivo»?

Esta es la pregunta decisiva, y solo usted puede responderla. Comprobar sus propios formularios es totalmente seguro y es precisamente el objetivo de esta página.

  1. Inicie sesión en su escritorio de WordPress y abra Contacto (Contact Form 7) en el menú lateral.
  2. Abra cada formulario que ofrezca subida de archivos, y localice el campo de subida por arrastrar y soltar (el campo de este plugin, añadido junto a las etiquetas estándar de Contact Form 7).
  3. Compruebe si ese campo limita los tipos de archivo que acepta.
  • Si todos los campos de subida están restringidos a tipos concretos (por ejemplo jpg, png, pdf), este problema no alcanza a su sitio, ni siquiera en una versión afectada. Actualizar sigue mereciendo la pena como mantenimiento ordinario.
  • Si algún campo de subida está configurado para aceptar cualquier tipo de archivo, el problema le afecta, y debería actualizar cuanto antes. Restringir ese campo a los tipos que realmente necesita es un paso sensato por sí solo, pero la actualización es la corrección.

Por favor, no intente reproducir el problema contra su propio sitio ni contra el de nadie; no lo necesita para responder a la pregunta anterior.

Segundo: ¿qué versión está ejecutando?

No tiene que fiarse solo de mi palabra. Para este plugin hay una forma concreta de comprobarlo que le puede inducir a error, así que merece la pena leer esta parte con atención.

Desde el área de administración de WordPress (fuente autorizada):

  1. En su escritorio de WordPress, vaya a Plugins y luego a Plugins instalados.
  2. Busque Drag and Drop Multiple File Upload - Contact Form 7, la entrada cuya carpeta es drag-and-drop-multiple-file-upload-contact-form-7, y anote la versión que aparece bajo su nombre.

Desde el manifiesto público (sin necesidad de acceder): abra sudominio.com/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/readme.txt en un navegador. La línea Stable tag:, cerca del principio, es la versión que informa su instalación, y es una de las fuentes públicas que yo leí.

Desde el código fuente de su página (sin necesidad de acceder): vea el código fuente de una página de su sitio y busque uno de los recursos del frontend del plugin en exactamente estas rutas:

/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/assets/css/dnd-upload-cf7.css?ver=...
/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/assets/js/codedropz-uploader-min.js?ver=...

El número ?ver= que acompaña a esos archivos bajo esa carpeta es la versión propia del plugin. En este plugin coincide exactamente con la versión publicada, por lo que lo trato como una lectura fiable.

La trampa que hay que evitar aquí. El plugin aparte para WooCommerce del mismo autor incluye un archivo con el mismo nombre, codedropz-uploader-min.js, en su propia carpeta (drag-and-drop-multiple-file-upload-for-woocommerce) con un número de versión sin relación. Si lee una versión en el código fuente de su página, asegúrese de que la carpeta en la ruta es drag-and-drop-multiple-file-upload-contact-form-7 y no la de WooCommerce; de lo contrario estará leyendo la versión de un producto totalmente distinto.

Después aplique esta regla, teniendo en cuenta que las versiones se comparan numéricamente, no alfabéticamente:

  • De la 1.3.9.3 a la 1.3.9.8: potencialmente afectada, sujeta a la pregunta sobre el campo de subida planteada arriba. Actualice ahora.
  • 1.3.9.9 o posterior: ya corregida en lo que respecta a este problema. Tomar la última versión disponible es lo mejor.
  • Anterior a la 1.3.9.3: no afectada por este problema. La debilidad concreta descrita arriba se introdujo en la 1.3.9.3. Dicho esto, una versión tan antigua está muy atrasada en todo lo demás, y actualizar merece la pena por motivos generales.

Si no consigue obtener una versión legible con las comprobaciones anteriores, no es algo inusual: los plugins de caché u optimización suelen eliminar el valor ?ver=, y los recursos solo aparecen donde el plugin se carga. La pantalla de administración del primer paso siempre tiene la respuesta.

Cómo actualizar

La vía más segura es actualizar desde el propio WordPress, y hacer antes una copia de seguridad:

  1. Haga una copia de seguridad de su sitio (archivos y base de datos) antes de hacer cambios. La mayoría de los proveedores de alojamiento ofrecen copias de seguridad con un clic, o puede usar un plugin de copias de seguridad de WordPress.
  2. En la administración de WordPress, vaya a Escritorio y luego a Actualizaciones, o a Plugins y luego a Plugins instalados. Si aparece una actualización de este plugin, instálela desde ahí.
  3. Si prefiere la línea de comandos, WP-CLI hace lo mismo: wp plugin update drag-and-drop-multiple-file-upload-contact-form-7 (el comando usa el nombre de la carpeta).
  4. Si no aparece ninguna actualización, puede obtener la última versión directamente desde la página del plugin en el directorio de WordPress.org, Drag and Drop Multiple File Upload for Contact Form 7, y actualizar mediante Plugins, Añadir nuevo plugin, Subir plugin.
  5. Después de actualizar, confirme el nuevo número de versión (1.3.9.9 o posterior) con los pasos anteriores, y compruebe que sus formularios y subidas de archivos siguen funcionando con normalidad.

Ya que está, conviene confirmar que el núcleo de WordPress, Contact Form 7 y sus demás plugins están al día, ya que el mismo principio se aplica a todos ellos.

Después de actualizar

Actualizar a la 1.3.9.9 o posterior cierra el problema, y para la mayoría de los sitios esa es toda la tarea. Esta página es un aviso preventivo, no un informe de incidente: no tengo ninguna visibilidad sobre si ocurrió algo en su sitio, y no lo he mirado.

Vale la pena considerar un seguimiento, condicionado a esa misma pregunta sobre el campo de subida. Si su sitio tenía un formulario con un campo de subida que aceptaba «cualquier tipo de archivo» mientras ejecutaba una versión afectada, entonces era al menos teóricamente posible que se hubiera colocado un archivo en su servidor. Actualizar cierra el agujero, pero no elimina nada que ya se hubiera guardado, así que en ese caso conviene tomar unas cuantas precauciones rutinarias:

  • Revise su directorio de subidas (normalmente en wp-content/uploads/) en busca de archivos que no reconozca, especialmente cualquiera que no sea del tipo de documentos o imágenes que sus formularios están pensados para recibir.
  • Revise sus cuentas de administrador, los inicios de sesión recientes y cualquier sesión activa en busca de algo que no pueda explicar.
  • Restablezca las contraseñas de sus cuentas de administrador. Regenerar las claves secretas y «salts» de WordPress en wp-config.php es un paso complementario sensato (los valores nuevos están a un clic en el generador oficial de claves secretas, y cambiarlos cierra la sesión de todos los usuarios una vez).

Si encuentra algo que le preocupa, tratarlo como cualquier otro presunto acceso no autorizado es la respuesta correcta. Si ninguno de sus formularios tenía un campo de subida que aceptara «cualquier tipo de archivo», con actualizar es suficiente.

Qué hice y qué no hice

Para ser totalmente transparente sobre la comprobación que hay detrás de mi correo: solo leí archivos que su sitio ya sirve a cualquier visitante, en concreto el readme.txt público del plugin, su página de inicio, y las direcciones de los recursos escritas en esa página. No accedí a su área de administración de WordPress, a su base de datos, ni a ninguna parte privada del sitio.

En concreto, nunca envié ninguno de sus formularios, nunca subí ningún archivo y nunca toqué el gestor de subidas del plugin. No se envió, probó ni explotó nada. Eso importa más aquí que en la mayoría de estas páginas, porque subir un archivo es exactamente la acción de la que trata este problema, así que «no lo toqué» es toda la diferencia entre una divulgación y una intrusión.

También evito deliberadamente publicar los detalles que ayudarían a alguien a aprovechar este problema. La descripción anterior se detiene en el nivel que necesita el propietario de un sitio, y no enlazo ningún código de prueba de concepto.

Esta es una observación basada en la versión: su sitio informa de una versión dentro del rango afectado. No es una afirmación de que su sitio fuera explotable en el momento en que lo comprobé. Como el problema depende de un ajuste del formulario que no puedo ver, un sitio en ese rango bien podría no estar expuesto en absoluto, y un sitio en ese rango podría estar protegido por otros medios, como un cortafuegos de aplicaciones web.

No tengo webmaster / estoy atascado

Si no es usted quien mantiene el sitio, reenvíe esta página a quien lo haga (su desarrollador web, su agencia o su proveedor de alojamiento). Reconocerán los pasos anteriores enseguida.

Si mantiene el sitio usted mismo y se atasca, con gusto le oriento en la dirección correcta sin coste alguno. Escríbame usando los datos de contacto de abajo.

Contacto

Evan Harris, investigador de seguridad

Contacto sobre cuestiones como esta únicamente para ayudar a los operadores a asegurar sus sitios. Si prefiere no volver a recibir mensajes míos, dígamelo y lo respetaré.

Referencias

Avisos oficiales y seguimiento

Fabricante / plugin