# Vulnerabilidad en Ninja Forms explotada: crean administradores ocultos

> Una campaña aprovecha fallas de Ninja Forms y WPC Product Bundles para que, cuando un administrador mira un envío o un pedido, se creen cuentas ocultas y accesos secretos en WordPress. Qué versión instalar y cómo revisar si tu sitio quedó comprometido.

- URL: https://entropyvision.pro/blog/vulnerabilidad-en-ninja-forms-explotada-crean-administradores-ocultos
- Publicado: 2026-10-07
- Categoría: Ciberseguridad
- Autor: Mark-Co Digital (investigado y publicado de forma automatizada con Claude)
- Sitio: Mark-Co Digital — https://entropyvision.pro

Si tu sitio WordPress usa **Ninja Forms** o tu tienda WooCommerce usa **WPC Product Bundles**, actualizá hoy a la última versión de cada plugin y, además, revisá si el sitio ya fue comprometido. Una campaña documentada el 6 de octubre de 2026 por [Patchstack](https://patchstack.com/articles/four-ways-back-in-the-wordpress-xss-campaign-that-hides-its-own-admin-account/) aprovecha una falla en cada plugin para que, apenas un administrador mira un envío del formulario o un pedido, se creen cuentas de administrador (una de ellas invisible), un acceso secreto y un gestor de archivos sin contraseña. Actualizar frena nuevas infecciones, pero no limpia lo que ya quedó instalado.

## Qué pasó

Patchstack detectó que un mismo atacante explota dos vulnerabilidades de tipo XSS almacenado (código JavaScript que queda guardado en la base de datos y se ejecuta después en el navegador de quien lo mira):

PluginCVEVersiones afectadasCorregida enInstalaciones activasNinja FormsCVE-2026-945043.15.3 y anteriores3.15.4Más de 500.000WPC Product Bundles for WooCommerceCVE-2026-938368.6.6 y anteriores8.6.7Más de 30.000Las versiones y las correcciones salen del [informe de Patchstack](https://patchstack.com/articles/four-ways-back-in-the-wordpress-xss-campaign-that-hides-its-own-admin-account/); la cantidad de instalaciones, de las páginas oficiales de [Ninja Forms](https://wordpress.org/plugins/ninja-forms/) y de [WPC Product Bundles](https://wordpress.org/plugins/woo-product-bundle/) en WordPress.org. Según [BleepingComputer](https://www.bleepingcomputer.com/news/security/ninja-forms-plugin-flaw-exploited-to-hack-wordpress-sites/), los investigadores vieron primero ataques contra WPC Product Bundles el 4 de octubre y contra Ninja Forms el 5 de octubre.

Un detalle importante: el parche ya existía antes de los ataques. Ninja Forms publicó la versión 3.15.4 el 21 de septiembre de 2026 con mejoras en el "escapado" de la pantalla de edición de envíos, según su [registro de cambios](https://wordpress.org/plugins/ninja-forms/), y el registro de la falla en la base CVE figura publicado el 22 de septiembre, según [OpenCVE](https://app.opencve.io/cve/CVE-2026-94504). Los sitios que cayeron son, sobre todo, los que no actualizaron a tiempo.

Sobre la gravedad hay una diferencia menor entre fuentes: Patchstack le asigna un puntaje CVSS de 7,1 a ambas fallas y el registro CVE de Ninja Forms indica 7,2. En los dos casos es severidad alta.

## Cómo funciona el ataque, paso a paso

Lo que vuelve peligrosa a esta campaña es que **el atacante no necesita usuario ni contraseña** para dejar la trampa, pero sí necesita que un administrador la "pise":

1. **Envía datos con código escondido.** En Ninja Forms usa un campo de texto largo de cualquier formulario público. En WPC Product Bundles mete el código en el campo de cantidad de un producto combinado: el plugin aceptaba un valor que empezaba con un número y conservaba el resto del texto, según [Patchstack](https://patchstack.com/articles/four-ways-back-in-the-wordpress-xss-campaign-that-hides-its-own-admin-account/).
2. **Espera.** El código queda guardado en el envío del formulario o en los datos del pedido de WooCommerce.
3. **Un administrador abre ese envío o ese pedido** desde el panel. En ese momento el código se ejecuta en su navegador, con su sesión abierta, y descarga un script desde el dominio `imgcdn1.com`, registrado el 1 de octubre de 2026.
4. **El script usa la sesión del administrador** para instalar un plugin falso y crear las puertas traseras.

Es decir: alguien de tu equipo revisa las consultas de la web o los pedidos del día, como cualquier mañana, y sin darse cuenta le abre la puerta al atacante.

## Las cuatro puertas traseras que deja

Según el [análisis técnico de Patchstack](https://patchstack.com/articles/four-ways-back-in-the-wordpress-xss-campaign-that-hides-its-own-admin-account/), el atacante se asegura cuatro formas distintas de volver a entrar:

- **Un administrador visible**, con un nombre que parece operativo (por ejemplo `support`, `updater`, `maintenance` o `backup`) y un correo terminado en `@wordpress.org`.
- **Un administrador oculto**, que no aparece en la pantalla de Usuarios: un plugin modifica las consultas para esconderlo y hasta descuenta la cuenta de los totales por rol.
- **Un enlace de acceso secreto** del tipo `/wp-login.php?_wplogin=<token>`, que inicia sesión como el administrador más antiguo del sitio. Para los registros, esa sesión parece la del dueño real.
- **Un gestor de archivos sin ninguna autenticación**, dentro de un plugin falso llamado "WP Smart Thumbnails" (versión 1.2.4), que permite subir, borrar y editar archivos del servidor.

Dos de esas piezas se instalan como **plugins de uso obligatorio** (*must-use plugins*), en la carpeta `wp-content/mu-plugins`. La [documentación oficial de WordPress](https://developer.wordpress.org/advanced-administration/plugins/mu-plugins/) explica por qué son un buen escondite: se cargan solos, no se pueden desactivar desde el panel y no muestran avisos de actualización en la pantalla de plugins. Además, Patchstack advierte que los archivos tienen fechas modificadas para parecer viejos.

Al 7 de octubre de 2026, ni Patchstack ni BleepingComputer informaron cuántos sitios fueron comprometidos.

## Qué hacer ahora

### 1. Actualizá los dos plugins a la última versión

El mínimo es Ninja Forms 3.15.4 y WPC Product Bundles 8.6.7, pero conviene ir a la última disponible: Ninja Forms 3.15.5 (del 28 de septiembre) reforzó también la protección de los campos de texto enriquecido, según su [registro de cambios](https://wordpress.org/plugins/ninja-forms/), y WPC Product Bundles corrigió en la 8.7.3 otro caso de XSS almacenado en los datos de los combos, de acuerdo con su [página oficial](https://wordpress.org/plugins/woo-product-bundle/).

Si no los usás, desactivalos y borralos: un plugin olvidado sigue siendo una puerta.

### 2. Hasta actualizar, no abras envíos ni pedidos sospechosos desde el panel

El código se dispara al mirar. Si todavía no podés actualizar, evitá abrir los envíos de formularios y los pedidos recibidos desde el 4 de octubre con una cuenta de administrador.

### 3. Buscá señales de compromiso

Patchstack publicó los [indicadores completos](https://patchstack.com/articles/four-ways-back-in-the-wordpress-xss-campaign-that-hides-its-own-admin-account/). Lo esencial para pasarle a quien administra tu hosting:

- Que la carpeta `wp-content/plugins/wp-smart-thumbnails/` no exista.
- Que en `wp-content/mu-plugins/` no haya archivos `class-wp-token-validate.php` ni `class-wp-query-` seguidos de 8 caracteres. Revisá el contenido, no la fecha.
- Que no existan las opciones `fz_emer_done_v1` ni `fz_emer_login_tokens` en la tabla de opciones de la base de datos.
- Que los registros del servidor no tengan pedidos con el parámetro `_wplogin` ni menciones a `imgcdn1.com`.
- Comparar la lista de administradores que muestra el panel con la que surge de una consulta directa a la base de datos. Si en la base hay uno más, es el oculto.

### 4. Si encontrás algo, tratá el sitio como comprometido

Patchstack es claro: si el código llegó a ejecutarse en el navegador de un administrador, el sitio debe considerarse potencialmente comprometido. Los pasos que recomienda son borrar las cuentas de administrador no autorizadas, el plugin falso, los archivos de `mu-plugins` y las dos opciones de la base; cambiar las contraseñas de todos los administradores y **regenerar las claves y "sales" de seguridad** del archivo `wp-config.php`. Según la [documentación de WordPress](https://developer.wordpress.org/apis/wp-config-php/), cambiarlas invalida todas las cookies existentes y obliga a todos a volver a iniciar sesión, lo que corta cualquier sesión que tenga el atacante.

Si el sitio guarda claves de servicios externos (pasarela de pagos, correo, CRM), rotalas siguiendo los pasos de nuestra guía para [proteger las claves de API de tu pyme](https://markco.digital/blog/claves-de-api-expuestas-en-github-como-proteger-las-de-tu-pyme). Y si las cuentas de administrador todavía no tienen verificación en dos pasos, repasá lo que explicamos sobre [métodos resistentes al phishing](https://markco.digital/blog/sitios-falsos-de-chatgpt-y-gemini-roban-cuentas-de-google-ads-y-meta).

### 5. Evitá que vuelva a pasar

En este caso el parche estaba disponible desde hacía dos semanas, y no es la única falla explotada que cubrimos esta semana: también pasó con el [helpdesk Zammad](https://markco.digital/blog/zammad-fallas-explotadas-en-el-helpdesk-obligan-a-actualizar-a-720). La demora en actualizar es lo que los atacantes aprovechan. WordPress permite activar las **actualizaciones automáticas de cada plugin** desde la columna "Actualizaciones automáticas" de la pantalla de Plugins, siempre que el hosting no las haya bloqueado, como detalla su [guía oficial](https://wordpress.org/documentation/article/plugins-themes-auto-updates/). La misma guía recomienda tener backups automáticos antes de activarlas.

## Preguntas frecuentes

### ¿Si actualicé el plugin ya estoy a salvo?

Estás a salvo de nuevos ataques por esta vía, pero no de una infección previa. Las puertas traseras funcionan por su cuenta, aunque el plugin vulnerable ya esté corregido o eliminado.

### ¿Me afecta si uso Contact Form 7, WPForms u otro formulario?

Esta campaña, según Patchstack, explota solo Ninja Forms y WPC Product Bundles. Eso no quita que otros plugins tengan sus propias fallas: mantenerlos actualizados sigue siendo la defensa principal.

### ¿Cómo puede crear un administrador si el atacante no tiene contraseña?

Porque no la necesita: el código corre dentro del navegador del administrador real mientras tiene la sesión abierta, y hace lo que él podría hacer, incluido crear usuarios e instalar plugins.

### ¿Un firewall o Cloudflare me protege?

Puede ayudar a bloquear la descarga del script malicioso o los pedidos al acceso secreto si las reglas lo contemplan, pero no reemplaza la actualización ni la revisión. El código entra como un envío de formulario que, a simple vista, es normal.

## ¿Querés que revisemos tu sitio?

En Mark-Co Digital hacemos [seguridad y recuperación de sitios hackeados](https://markco.digital/servicios/desarrollo-web/wordpress/seguridad-y-recuperacion-de-sitios-hackeados) y [actualización de WordPress](https://markco.digital/servicios/desarrollo-web/wordpress/actualizacion-de-wordpress) sin romper el sitio, y desarrollamos [tiendas con WooCommerce](https://markco.digital/servicios/desarrollo-web/wordpress/e-commerce-con-woocommerce). Si usás alguno de estos plugins y no tenés claro si tu web quedó expuesta, [contanos tu caso](https://markco.digital/contacto) y lo revisamos.

## Fuentes

- [Patchstack: Four ways back in: the WordPress XSS campaign that hides its own admin account](https://patchstack.com/articles/four-ways-back-in-the-wordpress-xss-campaign-that-hides-its-own-admin-account/)
- [BleepingComputer: Ninja Forms plugin flaw exploited to hack WordPress sites](https://www.bleepingcomputer.com/news/security/ninja-forms-plugin-flaw-exploited-to-hack-wordpress-sites/)
- [OpenCVE: CVE-2026-94504](https://app.opencve.io/cve/CVE-2026-94504)
- [WordPress.org: Ninja Forms](https://wordpress.org/plugins/ninja-forms/)
- [WordPress.org: WPC Product Bundles for WooCommerce](https://wordpress.org/plugins/woo-product-bundle/)
- [WordPress Developer: Must Use Plugins](https://developer.wordpress.org/advanced-administration/plugins/mu-plugins/)
- [WordPress Developer: wp-config.php](https://developer.wordpress.org/apis/wp-config-php/)
- [WordPress.org: Plugins &amp; Themes Auto-Updates](https://wordpress.org/documentation/article/plugins-themes-auto-updates/)
