Investigadores de seguridad han alertado sobre un compromiso en la cadena de suministro que afecta al proveedor de plugins de WordPress BdThemes, lo que llevó al equipo de plugins del sistema de gestión de contenidos (CMS) a deshabilitar temporalmente sus descargas.
A diferencia de los ataques tradicionales a la cadena de suministro de software, no se modificó ningún archivo de código fuente en el repositorio oficial de WordPress.org. En su lugar, los atacantes envenenaron un flujo de datos JSON remoto y estático que es consumido por un componente de banners promocionales administrativos. — Paolo Tresso, investigador de Wordfence.
Los plugins afectados incluyen: Element Pack Addons for Elementor (más de 100,000 instalaciones activas), Live Copy Paste for Elementor (6,000+), Pixel Gallery Addons for Elementor, Prime Slider Addons for Elementor, Smart Admin Assistant, Ultimate Post Kit Addons for Elementor y Ultimate Store Kit (6,000+). Los usuarios que visitan las listas de estos plugins en el directorio de WordPress ven un mensaje indicando que han sido cerrados desde el 7 u 8 de agosto de 2026 y no están disponibles para descarga hasta que se complete una 'revisión completa'.
El problema, según la empresa de seguridad de WordPress, se origina en un componente interno llamado Biggopti que se incluye con los plugins. Este sistema está diseñado para mostrar banners promocionales desde su servidor API, obteniendo archivos JSON de un bucket de DigitalOcean Spaces y renderizándolos en el panel de administración de WordPress.
La biblioteca ha sido encontrada vulnerable a una falla de cross-site scripting (XSS) en el código de análisis de respuestas JSON a través del parámetro "display_id" de la API de Sigmative, debido a un escape insuficiente en el lado del cliente. Como resultado, un atacante que pueda comprometer la API puede inyectar scripts web arbitrarios en las páginas, que se ejecutan cada vez que un usuario accede a ellas. La vulnerabilidad tiene una calificación de 5.4 en el sistema CVSS, indicando severidad media.
El cambio se habría introducido por primera vez el 1 de marzo de 2026 en "bdthemes-prime-slider-lite" antes de aplicarse a otros. El ataque es notable porque se impulsa completamente a través de la API y no requiere actualizaciones de plugins ni modificaciones de archivos en disco. Los actores maliciosos obtuvieron acceso de escritura al bucket, reemplazando las respuestas JSON legítimas con cargas útiles diseñadas para explotar la vulnerabilidad. El XSS se ejecuta en el navegador de cada administrador conectado, silenciosamente, en cada carga de página de wp-admin. Desde allí, el script inyectado crea cuentas de administrador rogue, sube un plugin de webshell y se comunica con un servidor de comando y control (C2).
La carga útil principal se entrega a los plugins mediante el endpoint de API "api-data-all-records". Un archivo JavaScript llamado "w2.js" realiza las siguientes acciones: contacta al servidor C2 ("ia-cdn[.]com/fz/c") para obtener instrucciones de direccionamiento, abortando si recibe un estado "skip" o "done"; crea un nuevo administrador rogue mediante la API REST de WordPress; descarga un ZIP de plugin falsificado desde el C2 y lo instala mediante el formulario estándar de subida de plugins, desplegando así una webshell PHP ("emer-run.php"); e invoca la webshell para instalar dos módulos de persistencia en el directorio de plugins Must-Use (mu-plugins): un backdoor de "inicio de sesión mágico" que permite entrada administrativa sin autenticación mediante un parámetro de URL (?_wplogin=<token>) apuntando al administrador de mayor antigüedad del sitio, y un módulo de ocultamiento anti-análisis que se engancha a las consultas de la base de datos de WordPress para ocultar la presencia de las cuentas de usuario rogue de la lista de usuarios administrativos y mostrar el recuento total de usuarios excluyéndolas.
Un payload alternativo ("x.js") encontrado en la infraestructura del desarrollador de plugins se sirve a las víctimas mediante el endpoint de API "api-data-records". Está diseñado para generar credenciales administrativas "determinísticas" derivadas matemáticamente del nombre de host del sitio víctima. Este algoritmo produce nombres de usuario predecibles (bd_ seguido de un hash base36 de 6 caracteres) y contraseñas (Bd@26! seguido del hash y x), asociándolos con una dirección de correo @wordpress.org. Debido a que las credenciales son determinísticas, los atacantes no necesitan almacenar listas de sitios comprometidos centralmente, y los respondedores de incidentes pueden calcular el nombre de usuario y contraseña exactos para buscar en dominios sospechosos.
Las credenciales generadas se utilizan para crear un usuario administrador malicioso, y los resultados del ataque se exfiltran de vuelta al servidor C2. Se evalúa que el servidor C2 utilizado en la campaña está relacionado con otros dos ataques a la cadena de suministro de software que involucran Advanced Responsive Video Embedder (CVE-2026-18072) y OptinMonster en los últimos meses. En ambos casos, los plugins de WordPress fueron backdooreados para otorgar acceso administrativo completo a atacantes no autenticados mediante un token codificado único o una cuenta de administrador oculta y un plugin disimulado que se creaban e instalaban solo cuando un admin del sitio iniciaba sesión.
Esto indica que el objetivo final de la campaña es establecer persistencia administrativa encubierta y ejecución remota de código en entornos WordPress. El hecho de que los registros JSON maliciosos y el payload secundario x.js se hayan subido directamente al bucket del proveedor indica un compromiso severo de las credenciales de almacenamiento en la nube o la infraestructura interna de BdThemes.
Este desarrollo se produce días después de que WordPress abordara una vulnerabilidad de XSS reflejado pre-autenticación (CVE-2026-64638, también conocida como XSS2Shell, con una puntuación CVSS de 8.9) que puede explotarse para lograr ejecución de código PHP en el servidor cuando un administrador conectado interactúa con una página controlada por el atacante.



















Deja una respuesta