CVE-2026-6962 es una vulnerabilidad de tipo Stored XSS descubierta en mayo de 2026 en el plugin Cost of Goods: Product Cost & Profit Calculator for WooCommerce. Afecta todas las versiones hasta 4.1.0 inclusive y permite a un atacante con acceso Contributor inyectar JavaScript malicioso que se ejecuta en el navegador de cualquier visitante que cargue la página infectada. La puntuación CVSS v3.1 es 6.4 (Medium).
En 30 segundos
- El plugin afectado es Cost of Goods for WooCommerce, versiones hasta 4.1.0. La 4.1.1 o superior ya no es vulnerable.
- El ataque usa los shortcodes
alg_wc_cog_product_costyalg_wc_cog_product_profitpara inyectar scripts sin sanitización. - Requiere nivel de acceso Contributor como mínimo, así que no es explotable desde afuera sin credenciales.
- El impacto incluye robo de sesiones, redirecciones maliciosas y carga de malware para visitantes del sitio.
- La solución es actualizar el plugin desde el panel de WordPress. Si no lo ves disponible todavía, hacé la actualización manual.
Wordfence es un plugin de seguridad para sitios WordPress, desarrollado por Wordfence, Inc., que protege contra malware, ataques de fuerza bruta, y escanea vulnerabilidades en plugins y temas.
Qué es CVE-2026-6962: Vulnerabilidad XSS almacenado en Cost of Goods WordPress
CVE-2026-6962 es el identificador oficial asignado a una falla de Cross-Site Scripting almacenado (Stored XSS) en el plugin Cost of Goods: Product Cost & Profit Calculator for WooCommerce. La falla fue publicada por Wordfence en mayo de 2026, con una puntuación CVSS v3.1 de 6.4 (Medium), vector AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N.
La diferencia entre XSS reflejado y XSS almacenado no es técnica menor. En el XSS reflejado, el payload viaja en la URL y solo golpea a quien hace clic en el link malicioso. En el XSS almacenado, el script queda guardado en la base de datos del sitio y se ejecuta para cualquier visitante que cargue la página afectada, incluso meses después de que el atacante haya desaparecido. Esto lo convierte en bastante más peligroso.
La causa raíz, según el reporte de INCIBE-CERT, es la ausencia de sanitización de entrada y escape de salida sobre atributos que el usuario puede controlar en los shortcodes del plugin. Nada demasiado sofisticado: simplemente, los atributos se imprimían en el HTML sin limpiar.
¿Qué plugin está afectado y en qué versiones?
El plugin en cuestión se llama Cost of Goods: Product Cost & Profit Calculator for WooCommerce y está disponible en el repositorio oficial de WordPress.org. Sirve para que los dueños de tiendas WooCommerce registren el costo real de cada producto y calculen márgenes de ganancia directamente desde el panel de administración.
Versiones vulnerables: todas hasta 4.1.0 inclusive. Si tu instalación muestra cualquier número igual o menor a 4.1.0, estás expuesto. La versión parcheada, según la evidencia del código en el repositorio del plugin, es la 4.1.1 o posterior.
Ojo con esto: hay plugins similares con nombres parecidos. «Cost of Goods» es un nombre genérico y podés encontrar alternativas de otros desarrolladores en el directorio. La vulnerabilidad CVE-2026-6962 aplica exclusivamente a este plugin específico, el desarrollado bajo el slug cost-of-goods-for-woocommerce. Si usás otro plugin de costos de productos, verificá su identificador antes de asumir que estás afectado.
Cómo funciona el ataque: los shortcodes vulnerables
El plugin expone dos shortcodes para mostrar datos de costo y ganancia en páginas o posts:
[alg_wc_cog_product_cost]— muestra el costo del producto[alg_wc_cog_product_profit]— muestra la ganancia calculada
Ambos aceptan atributos opcionales que permiten personalizar la salida. El problema está en que esos atributos llegan al HTML sin pasar por esc_attr() ni ninguna función de sanitización equivalente. Un atacante con nivel Contributor puede insertar un shortcode del tipo:
[alg_wc_cog_product_cost attr='><script>/*payload*/</script>']
Y ese script queda almacenado en la base de datos. La próxima vez que alguien cargue esa página, el navegador ejecuta el código. (Sí, en serio, así de directo es el vector de ataque.) Podés profundizar en las mejores soluciones de protección.
El código afectado está documentado en dos líneas específicas del archivo class-alg-wc-cog-products.php: líneas 119 y 133 de la versión 4.1.0. Eso habla de un problema puntual, no de una arquitectura rota en general, lo que es bueno en el sentido de que el parche debería ser quirúrgico.
¿Quién puede ejecutar este ataque y cuál es el riesgo real?
Acá viene el matiz que más importa: la vulnerabilidad requiere acceso autenticado con nivel Contributor o superior. No es explotable por visitantes anónimos.
¿Y qué tan común es tener usuarios Contributor en una tienda WooCommerce? Más de lo que parece. Contributor es el rol que suele asignarse a redactores externos, bloggers invitados, colaboradores de contenido, y en algunos setups mal configurados, también a managers de productos que necesitan editar descripciones. Si alguna vez le diste acceso a alguien para que cargue posts sin publicar, ese alguien probablemente tiene nivel Contributor.
El impacto concreto una vez explotado es amplio. Un script inyectado puede robar cookies de sesión de administradores que visiten la página, redirigir a visitantes a sitios de phishing, descargar malware en el navegador del usuario, o modificar el comportamiento visible de la tienda. La puntuación CVSS 6.4 refleja que el impacto en confidencialidad e integridad existe (L/L) con alcance modificado (S:C), pero no hay impacto en disponibilidad y se necesita privilegio bajo (PR:L). En detectar código malicioso inyectado profundizamos sobre esto.
¿Alguien puede explotar esto desde internet sin credenciales? No. ¿Es un riesgo cero? Tampoco, porque en sitios con múltiples colaboradores o con cuentas comprometidas, el vector se vuelve real rápido.
Cómo verificar si tu tienda está vulnerable
El proceso es corto. Entrá al panel de WordPress, navegá a Plugins > Plugins instalados, buscá «Cost of Goods» y fijate el número de versión que aparece debajo del nombre. Si dice 4.1.0 o cualquier número menor, estás afectado.
Si querés confirmación adicional sin entrar al panel, hay opciones:
- Wordfence Premium: detecta plugins con vulnerabilidades conocidas en tiempo real. La versión gratuita también lo hace, pero con un retraso de 30 días en la base de datos de firmas.
- WPScan online (wpscan.com): podés correr un escaneo básico desde el navegador con la URL de tu sitio. Identifica plugins y versiones vulnerables según su propia base de datos de CVEs.
- Patchstack: tiene una capa gratuita que monitorea plugins instalados y alerta cuando aparecen vulnerabilidades como esta.
- Query directo a la base de datos: si tenés acceso a phpMyAdmin o WP-CLI, podés buscar en la tabla
wp_postmetao en el contenido de posts si hay shortcodesalg_wc_cog_product_costcon atributos sospechosos, aunque esto es más manual.
La herramienta gratuita más accesible para la mayoría es el propio Wordfence con su escaneo de vulnerabilidades desde el panel.
Pasos para actualizar y parchear CVE-2026-6962 WordPress
Antes de tocar nada, hacé un backup completo. No es burocracia: si la actualización rompe algo en la integración con WooCommerce, necesitás poder volver. WPVivid, UpdraftPlus o cualquier plugin de backup que tengas instalado sirve. Si usás hosting con snapshots automáticos, verificá que el último esté disponible.
Idealmente, probá en un entorno de staging antes de actualizar producción. Ponele que el plugin tiene integraciones con hooks de WooCommerce que cambiaron entre versiones y algo se rompe en el cálculo de márgenes: mejor descubrirlo en staging que en la tienda real.
Para actualizar:
- Andá a Escritorio > Actualizaciones y buscá Cost of Goods en la lista. Si aparece, marcalo y hacé clic en «Actualizar plugins».
- Alternativamente, en Plugins > Plugins instalados, si hay actualización disponible, vas a ver el link directo «Actualizar ahora» bajo el nombre del plugin.
- Para actualización manual: descargá la versión 4.1.1 o posterior desde el repositorio de WordPress.org, descomprimí, subí la carpeta via FTP reemplazando la existente, y verificá que el plugin sigue activo.
Después de actualizar: revisá que los shortcodes sigan funcionando correctamente en las páginas donde los usabas, borrá el caché de LiteSpeed o el plugin de cache que tengas, y si usás Wordfence, corré un escaneo completo para confirmar que no quedaron restos de código inyectado en posts existentes. Lo explicamos a fondo en otras vulnerabilidades críticas recientes.
Mejores prácticas para prevenir XSS en WooCommerce
Esta vulnerabilidad es una buena excusa para revisar el estado general de seguridad de tu tienda. No hace falta construir todo desde cero; con algunos ajustes puntuales cubrís la mayoría de los vectores de ataque similares.
Auditá los plugins instalados
Cualquiera que haya revisado una instalación WordPress vieja se topó con lo mismo: plugins activos que nadie usa, versiones desactualizadas de hace dos años, y plugins desactivados que siguen ocupando lugar (y potencialmente exponiendo código). Un plugin inactivo sin mantener es riesgo igual. Si no lo usás, borralo.
Implementá Content Security Policy
Una Content Security Policy (CSP) bien configurada puede mitigar el impacto de un XSS incluso si el script logra inyectarse. Con una directiva script-src 'self' restringida, el navegador se niega a ejecutar scripts de dominios no autorizados. No elimina el problema de raíz, pero reduce el daño si algo pasa. Podés configurarla desde el archivo .htaccess o desde el panel de tu hosting.
Revisá los roles y permisos
El nivel Contributor puede publicar contenido con shortcodes. Si en tu tienda no necesitás colaboradores externos, eliminá ese rol o revisá quién lo tiene asignado. En WooCommerce, los roles «Customer» y «Shop Manager» tienen permisos distintos; asegurate de que nadie tenga más acceso del que necesita para su función.
Tabla: opciones de monitoreo de vulnerabilidades
| Herramienta | Precio | Detección en tiempo real | Cubre WooCommerce |
|---|---|---|---|
| Wordfence (gratis) | $0 | No (30 días de delay) | Sí |
| Wordfence Premium | ~USD 119/año | Sí | Sí |
| Patchstack (free tier) | $0 | Sí | Sí |
| WPScan (CLI) | $0 (opensource) | Manual | Sí |
| Sucuri SiteCheck | $0 (escaneo web) | No (escaneo manual) | Parcial |

Si tu tienda procesa pagos reales, la inversión en monitoreo permanente vale. Un incidente de seguridad en WooCommerce tiene costos directos (recuperación, revisión forense) y costos de reputación que duran mucho más que el incidente.
Errores comunes al manejar esta vulnerabilidad
Error 1: Asumir que el sitio no está afectado porque «nadie tiene acceso Contributor». La pregunta correcta no es si asignaste ese rol conscientemente, sino si alguna vez le diste acceso a alguien para publicar borradores o colaborar en contenido. WordPress asigna Contributor por defecto en muchos flujos de registro. Revisá la lista de usuarios con /wp-admin/users.php filtrada por rol antes de asumir que no hay riesgo. Relacionado: protegerse contra ataques DDoS relacionados.
Error 2: Actualizar el plugin sin revisar si hay contenido ya inyectado. Actualizar cierra el vector de ataque futuro, pero si alguien ya inyectó un script antes de que actualizaras, ese contenido sigue en la base de datos. Después de actualizar, corré un escaneo de Wordfence para detectar payloads almacenados en posts y metadatos.
Error 3: Confundir este CVE con plugins de nombre similar. «Cost of Goods» es una descripción genérica y hay varios plugins que hacen algo parecido. CVE-2026-6962 aplica únicamente al plugin con slug cost-of-goods-for-woocommerce. Si usás otro, revisá su identificador exacto antes de concluir que estás o no estás afectado.
Preguntas Frecuentes
¿Qué es CVE-2026-6962 y cómo me afecta?
CVE-2026-6962 es una vulnerabilidad de Stored XSS descubierta en mayo de 2026 en el plugin Cost of Goods for WooCommerce, versiones hasta 4.1.0. Si tenés ese plugin instalado con una versión igual o menor a 4.1.0 y en tu sitio hay usuarios con rol Contributor o superior, estás expuesto a que alguien inyecte JavaScript malicioso que afecte a los visitantes de tu tienda.
¿Tengo que actualizar el plugin Cost of Goods?
Sí, la actualización es la única solución definitiva. Actualizá a la versión 4.1.1 o superior desde el panel de WordPress. Antes de hacerlo, hacé un backup completo del sitio. Si podés probar en staging primero, mejor.
¿Cómo verifico si mi tienda WooCommerce está vulnerable?
Andá a Plugins > Plugins instalados en el panel de WordPress y buscá «Cost of Goods». Si la versión que aparece es 4.1.0 o menor, estás afectado. También podés usar Wordfence o Patchstack para un escaneo automático que detecte plugins con CVEs conocidos.
¿En qué versión del plugin se corrigió esta vulnerabilidad?
La versión 4.1.1 incluye el parche para CVE-2026-6962. Las líneas de código vulnerables (119 y 133 del archivo class-alg-wc-cog-products.php) fueron corregidas con sanitización y escape apropiados en esa versión. Cualquier versión 4.1.1 en adelante es segura respecto a este CVE específico.
¿Puedo seguir usando los shortcodes de Cost of Goods de forma segura?
Sí, pero solo después de actualizar a 4.1.1 o superior. En la versión parcheada, los atributos de los shortcodes alg_wc_cog_product_cost y alg_wc_cog_product_profit pasan por las funciones de escape necesarias. Si todavía estás en 4.1.0 o menor, esos shortcodes son el vector exacto del ataque.
Conclusión
CVE-2026-6962 no es la vulnerabilidad más grave del año (un 6.4 con requisito de acceso autenticado no es catastrófico), pero en tiendas WooCommerce con múltiples colaboradores o en sitios que alguna vez tuvieron accesos compartidos, el riesgo es concreto. La buena noticia es que la solución es directa: actualizar el plugin a 4.1.1 cierra el vector.
Lo que sí resulta preocupante es que este tipo de falla, ausencia de esc_attr() en atributos de shortcodes, es vieja conocida en el ecosistema WordPress. No es un vector nuevo ni sofisticado. Subís la versión, verificás que no haya contenido inyectado en la base de datos, revisás qué usuarios tienen nivel Contributor, y seguís adelante. Si la tienda procesa pagos reales, sumá monitoreo permanente con Wordfence o Patchstack; el costo es menor que cualquier incidente de seguridad.