Aviso de seguridad de Welcart e-Commerce
Si ha recibido un correo electrónico mío que le dirige a esta página, es porque su sitio web parece estar ejecutando una versión de Welcart e-Commerce (el plugin gratuito de comercio electrónico para WordPress de Welcart / Collne, que se encuentra en sus archivos en /wp-content/plugins/usc-e-shop/) que entra dentro del rango afectado por un problema de seguridad conocido. Esta página explica en qué consiste el problema, cuánto importa para su sitio, cómo leer su versión sin dejarse engañar y cómo actualizar.
El problema es CVE-2026-19914, una vulnerabilidad de cross-site scripting (XSS) almacenado sin autenticación. Afecta a todas las versiones hasta la 2.12.1 incluida y se ha corregido en la 2.12.2, publicada el 31 de agosto de 2026. Si está ejecutando la 2.12.1 o cualquier versión anterior, actualice Welcart a la 2.12.2 o posterior. El problema tiene una puntuación de CVSS 7.2 (High), según la calificación de Wordfence. No tengo conocimiento de ningún código de explotación público para este problema.
No hay ninguna versión anterior que sea segura. No se trata de un fallo introducido en algún momento de la historia del plugin y corregido más tarde. La representación sin escapado que hay detrás de este problema ha estado presente durante toda la historia del plugin, he confirmado que está presente ya en la versión 1.7.0, así que «mi instalación es demasiado antigua para estar afectada» no es una escapatoria aquí. Las únicas versiones que no están afectadas son la 2.12.2 y posteriores.
Antes que nada, unas palabras sobre en qué consiste este problema y cómo se produce, porque prefiero decirlo con claridad a dejar que el aviso suene más grande de lo que es. Se trata de una vulnerabilidad de cross-site scripting almacenado, y el script que puede ejecutar lo hace en el navegador de un administrador de la tienda, no en el navegador de un visitante. Para que eso ocurra, tienen que darse dos cosas distintas a la vez: alguien que realiza un pedido como invitado tiene que enviar un valor manipulado en un campo de pedido personalizado durante el proceso de compra, y luego un administrador tiene que abrir ese pedido en la pantalla de edición de pedidos del área de administración de su WordPress. El valor enviado se almacena junto con el pedido y se representa en esa pantalla sin escapar, de modo que se ejecuta cuando se visualiza el pedido.
Puedo leer su versión de Welcart desde un archivo público, pero no puedo ver sus pedidos, no puedo ver si algún pedido contiene un valor manipulado y no puedo ver si alguien ha hecho realmente esto en su sitio. Por eso este aviso es un aviso preventivo basado en su número de versión, no un hallazgo confirmado sobre su sitio.
También conviene ser preciso sobre lo que este problema es y lo que no es. El cross-site scripting que se dispara en la sesión de un administrador es un problema real que vale la pena corregir: un script que se ejecuta mientras un administrador está conectado puede actuar con los privilegios de ese administrador mientras la página esté abierta. Pero no es, por sí mismo, una toma de control completa del sitio. No es ejecución remota de código en su servidor, y no es una manera de que un desconocido sin autenticar se conceda a sí mismo sin más una cuenta de administrador. Es más limitado que los problemas de compromiso total sobre los que escribo en otros lugares, y depende tanto de que se envíe un pedido como de que un administrador lo abra, así que prefiero fijar la escala con honestidad a dejarle una impresión más aterradora de lo que respaldan los hechos.
Este es un fallo del plugin, no un fallo del núcleo de WordPress. Un WordPress totalmente actualizado no le protege si el propio plugin Welcart está en una versión afectada.
¿Es legítimo este mensaje?
Sí. Este 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, realizar un pedido en él ni explotar nada.
Lo único que hice fue mirar páginas y archivos que su sitio web sirve a cualquier visitante (del mismo modo que su página de inicio es pública) y anotar el número de versión que el plugin publica. En concreto, no realicé ningún pedido, no envié nada a través de su proceso de compra, no inicié sesión ni envié nada a la funcionalidad afectada. Nada de esta comprobación toca sus datos, su área de administración, sus pedidos ni ninguna parte privada de su sitio (más detalle más abajo en Qué hice y qué no hice).
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
Welcart convierte un sitio de WordPress en una tienda en línea, y es el plugin de comercio electrónico más utilizado para WordPress en Japón. Parte de lo que hace es recoger los datos de un cliente durante el proceso de compra, incluidos los campos de pedido personalizados que una tienda haya añadido para recabar información adicional, y almacenarlos junto con el pedido para que el personal pueda revisarlos más tarde.
En las versiones afectadas, un valor enviado a un campo de pedido personalizado durante un proceso de compra como invitado se almacena junto con el pedido y luego se muestra en la pantalla de edición de pedidos del área de administración de su WordPress sin escapar. Escapar es lo que convierte un texto que parece marcado de nuevo en texto sin formato para su visualización. Sin ello, un valor manipulado para contener contenido activo no se muestra como texto, sino que lo ejecuta el navegador del administrador que abra ese pedido. Como un invitado puede realizar un pedido sin iniciar sesión, la persona que proporciona ese valor no necesita ninguna cuenta en su sitio.
La condición previa, para decirla con claridad porque es la parte que con más facilidad se malinterpreta en cualquiera de los dos sentidos: esto requiere tanto que se haya enviado un pedido manipulado como que un administrador lo abra. No se dispara en su escaparate y no hace nada a los visitantes normales. Lo que alcanza es la sesión de un administrador de la tienda que revisa pedidos en wp-admin.
Lo describo al nivel que un propietario de 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 su número de versión, como se describe a continuación, 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 es la 2.12.1 o anterior. No he comprobado si su sitio concreto es explotable, y no puedo ver sus pedidos. Todo lo que observé es la versión.
¿Estoy afectado?
Se reduce a una pregunta: ¿qué versión de Welcart está ejecutando?
Desde el área de administración de WordPress (fuente autorizada):
- Inicie sesión en su panel de WordPress (normalmente en
yourdomain.com/wp-admin). - Vaya a Plugins y luego Plugins instalados.
- Busque Welcart e-Commerce, la entrada cuya carpeta es
usc-e-shop, y anote la versión que se muestra bajo su nombre.
Desde el manifiesto público (sin necesidad de iniciar sesión): abra
yourdomain.com/wp-content/plugins/usc-e-shop/readme.txt
en un navegador y lea la línea Stable tag: cerca del principio. Si esa dirección devuelve un «no encontrado», pruebe README.txt con mayúsculas: algunos alojamientos distinguen entre mayúsculas y minúsculas, y unos pocos paquetes entregan el archivo en mayúsculas.
Desde el código fuente de su página (sin necesidad de iniciar sesión): vea el código fuente de su página de inicio y busque la propia hoja de estilos del plugin exactamente en esta ruta:
/wp-content/plugins/usc-e-shop/css/usces_default.css?ver=...
El número ?ver= adjunto a ese archivo es la versión propia del plugin, y es la fuente pública que leí. Welcart carga esta hoja de estilos en sus páginas de tienda, así que una página de tienda o de carrito es un lugar fiable para encontrarla. Lea la versión únicamente de usces_default.css: otros archivos escritos en su página llevan sus propios números ?ver=, totalmente ajenos, y leer el primero que encuentre puede dejarle con la versión de un software distinto. Si no consigue obtener ningún número legible del código fuente de la página, eso es habitual y no es señal de nada, los plugins de caché y de optimización eliminan de forma rutinaria el valor ?ver= de las URL de los recursos, así que use el readme.txt o la pantalla de administración.
Luego aplique esta regla, y tenga en cuenta que las versiones se comparan numéricamente, no alfabéticamente, de modo que la 2.12.1 es más reciente que la 2.9.1 aunque «12» parezca más pequeño que «9» como texto:
- 2.12.1 o anterior: afectado. Actualice a la 2.12.2 o posterior. No hay un umbral por debajo del cual una versión más antigua vuelva a ser segura.
- 2.12.2 o posterior: ya corregido en lo que respecta a este problema. Instalar la última versión disponible es la mejor opción.
Cómo actualizar
El plugin es gratuito, sigue publicándose y se mantiene activamente, así que la corrección es una actualización normal. La vía más segura es actualizar a través del propio WordPress, y hacer antes una copia de seguridad:
- 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 use un plugin de copias de seguridad para WordPress.
- En la administración de WordPress, vaya a Escritorio y luego Actualizaciones, o a Plugins y luego Plugins instalados. Si aparece una actualización de Welcart, instálela desde aquí.
- Si prefiere la línea de comandos, WP-CLI hace lo mismo:
wp plugin update usc-e-shop(el comando usa el nombre de la carpeta, no el nombre visible). - 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, Welcart e-Commerce, y actualizar mediante Plugins luego Añadir nuevo plugin luego Subir plugin.
- Tras actualizar, confirme el nuevo número de versión (2.12.2 o posterior) siguiendo los pasos anteriores, y abra un pedido reciente en su área de administración para asegurarse de que las pantallas de pedidos se siguen mostrando con normalidad.
La versión 2.12.2 también solucionó otros problemas de seguridad además de este, así que actualizar merece la pena de todos modos. Ya que está en ello, conviene confirmar que el núcleo de WordPress y sus otros plugins están actualizados, ya que el mismo principio se aplica a todos.
Después de actualizar
Actualizar a la 2.12.2 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 visibilidad de si ha ocurrido algo en su sitio, y no lo he mirado.
Merece la pena hacer una pequeña cosa mientras la actualización está reciente:
- Confirme que la versión realmente cambió, con la comprobación de las anteriores que le resulte más fácil, y abra un pedido en su área de administración para asegurarse de que las pantallas de pedidos se siguen mostrando.
Notará que en esta página no hay una lista de comprobación del tipo «dé por hecho que le han comprometido», y eso es deliberado y no una omisión. Lo que este problema produce es un script que se ejecuta en el navegador de un administrador, y solo allí donde se envió un pedido manipulado y un administrador lo abrió después. No ejecuta código en su servidor y no crea por sí mismo una cuenta de administrador, así que la auditoría de administradores y la rotación de contraseñas que recomiendo tras un fallo de la clase de toma de control no serían proporcionadas aquí. Actualice, confirme y siga adelante. Si tiene un motivo concreto para creer que esto se ha usado contra su sitio, cosa para la que este aviso, basado solo en un número de versión, no le da ninguna prueba, entonces es razonable tratar los inicios de sesión de sus administradores con la cautela habitual, pero la versión por sí sola no lo exige.
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 su página de inicio y la dirección de la hoja de estilos de Welcart escrita en ella, y el readme.txt público del plugin dentro de wp-content/plugins/usc-e-shop/. No accedí a su área de administración de WordPress, su base de datos, sus pedidos ni ninguna parte privada del sitio.
En particular, nunca realicé un pedido, envié nada a través de su proceso de compra, inicié sesión ni envié nada a la funcionalidad afectada. Nada se envió, probó ni explotó. Esto importa aquí, porque enviar un valor manipulado durante el proceso de compra se parece mucho a la acción exacta de la que trata este problema, de modo que «no lo toqué» es toda la diferencia entre una divulgación y una intrusión.
También me abstengo deliberadamente de publicar los detalles que ayudarían a alguien a actuar sobre este problema. La descripción anterior se queda en el nivel que un propietario de sitio necesita, 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 2.12.1 o anterior. No es una afirmación de que su sitio fuera explotable en el momento en que lo comprobé. Como este problema depende tanto de que se envíe un pedido manipulado como de que un administrador lo abra, cosas que no puedo ver, un sitio dentro del rango afectado bien podría no haber estado expuesto, y un sitio dentro de ese rango puede estar protegido por separado por otros medios, como un firewall de aplicaciones web o una corrección retroportada. Si ya ha actualizado, o ha remediado esto de otro modo, no hace falta ninguna acción, y le pido disculpas por la molestia.
No tengo webmaster / estoy atascado
Si usted no es la persona que mantiene el sitio, por favor reenvíe esta página a quien lo haga (su desarrollador web, agencia o proveedor de alojamiento). Reconocerán rápidamente los pasos anteriores.
Si usted está manteniendo el sitio usted mismo y se queda atascado, estoy encantado de ayudarle a orientarse en la dirección correcta sin costo alguno. Póngase en contacto utilizando los datos de contacto que aparecen a continuación.
Contacto
Evan Harris, investigador de seguridad
- Correo electrónico: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Me pongo en contacto sobre problemas como este puramente para ayudar a los operadores a asegurar sus sitios. Si prefiere no ser contactado de nuevo, simplemente hágamelo saber y lo respetaré.
Referencias
Avisos oficiales y seguimiento
Fabricante / plugin