| Nombre del plugin | @nuxt/nitro-server |
|---|---|
| Tipo de vulnerabilidad | Scripting entre sitios (XSS) |
| Número CVE | CVE-2026-46342 |
| Urgencia | Baja |
| Fecha de publicación de CVE | 2026-05-20 |
| URL de origen | CVE-2026-46342 |
Nuxt Nitro ‘__nuxt_island’ Envenenamiento de Caché Compartida (CVE-2026-46342) — Lo que los Propietarios de Sitios de WordPress Necesitan Saber
Resumen: Una vulnerabilidad recientemente divulgada en el servidor Nuxt Nitro afecta a las versiones ≥ 4.2.0 y ≤ 4.4.5. Puede llevar al envenenamiento de caché compartida y a Cross-Site Scripting (XSS) a través del __nuxt_island endpoint. El problema se corrige en 4.4.6. Si su sitio de WordPress se integra con front-ends de JavaScript, arquitecturas sin cabeza, renderizado en el borde de CDN, o utiliza componentes de Nuxt/Nitro en su cadena de herramientas, este aviso explica el riesgo, métodos de detección, mitigaciones (incluidas reglas de firewall/edge de emergencia) y estrategias de endurecimiento de la cadena de suministro a largo plazo.
Por qué esto es importante para los propietarios de sitios de WordPress
La mayoría de las implementaciones de WordPress siguen siendo basadas en PHP con renderizado del lado del servidor desde la pila de WordPress. Sin embargo, cada vez más, los operadores en Hong Kong y la región están utilizando front-ends modernos de JavaScript (Nuxt, Next, Remix) para mejorar el rendimiento y los flujos de trabajo de desarrollo — una arquitectura sin cabeza o desacoplada. Esos front-ends comúnmente dependen de servidores basados en Node, middleware de Nitro y cachés/CDNs en el borde.
El problema reportado (CVE-2026-46342) afecta a un endpoint del servidor Nitro utilizado por front-ends de Nuxt: __nuxt_island. Cuando las respuestas no están estrechamente vinculadas a las propiedades de la solicitud de origen, una caché compartida puede servir una respuesta creada para un usuario a otro. Si esa respuesta contiene contenido controlado por el atacante (por ejemplo, HTML no sanitizado o fragmentos de script), un atacante puede envenenar cachés y activar Cross-Site Scripting para muchos visitantes del sitio.
Incluso si su backend de WordPress no está ejecutando directamente Node, los sistemas de WordPress pueden verse afectados cuando:
- Su sitio de WordPress utiliza un front-end de Nuxt o Nitro que extrae datos de la API REST de WordPress o GraphQL.
- Su entorno de hosting utiliza servicios de renderizado del lado del servidor o renderizado en el borde que incluyen componentes basados en Nitro.
- Su CI/CD, pipeline de construcción o servicios de terceros utilizan el paquete vulnerable para generar vistas previas, desplegar front-ends o renderizar páginas en el borde.
Este aviso adopta una postura pragmática con un tono de experto en seguridad de Hong Kong: directo, operativo y centrado en lo que los propietarios y operadores de sitios deben hacer ahora.
Resumen técnico — qué está roto
- El
__nuxt_islandel endpoint renderiza o hidrata componentes aislados (pequeños fragmentos interactivos) en el modelo de renderizado híbrido de Nuxt. - El comportamiento vulnerable: las respuestas del endpoint no están suficientemente vinculadas a las propiedades de la solicitud (origen, encabezados, cookies, parámetros de consulta). Si una capa de caché almacena esa respuesta sin los encabezados Vary/Cache-Control apropiados o claves de caché, la respuesta en caché puede ser servida a otras solicitudes que difieren en propiedades críticas de la solicitud.
- Si un atacante puede crear una solicitud que incluya contenido controlado por el atacante (por ejemplo, a través de propiedades inyectadas o datos reflejados) y hacer que esa respuesta sea almacenada en caché, el atacante puede envenenar la caché compartida. Cuando otros usuarios reciben esa respuesta en caché, cualquier script malicioso se ejecutará en sus navegadores — resultando en un impacto potencialmente generalizado.
El resultado final: un solo exploit exitoso puede convertirse en un XSS masivo a través de un fragmento de isla en caché envenenado.
Superficie de ataque para sitios de WordPress
Patrones de integración comunes que exponen a los sitios impulsados por WordPress a este problema:
- WordPress sin cabeza + front-end de Nuxt:
- WordPress sirve contenido a través de REST API / GraphQL.
- El front-end de Nuxt utiliza Nitro para renderizar en el servidor islas que incluyen contenido de WP.
- Un paquete de Nitro vulnerable utilizado en el proceso del front-end puede causar envenenamiento de caché.
- Renderizado en el borde / vista previa de CDN / generación de imágenes OG:
- Algunos generadores de vista previa en el borde o puntos finales de imágenes incluyen renderizado basado en Nitro.
- Si su proveedor de hosting o CI utiliza componentes de Nitro, esos puntos finales pueden verse afectados.
- Herramientas para desarrolladores:
- Sistemas de construcción y vista previa (storybook, vistas previas de SSR, generadores de sitios estáticos) que instalan la dependencia vulnerable pueden crear o cargar artefactos envenenados o salida en caché.
- Integraciones de terceros:
- Los proveedores de plugins, constructores de temas o proveedores de servicios sin cabeza podrían estar ejecutando vistas previas basadas en Nitro. Si están utilizando versiones vulnerables, los sitios de los clientes pueden verse afectados indirectamente.
Si su sitio de WordPress es puramente clásico (sin front-end sin cabeza, sin herramientas de Node en implementaciones), el riesgo es mucho menor. Pero en entornos modernos de DevOps vale la pena verificar.
Cómo los atacantes pueden explotarlo (escenarios prácticos)
- XSS reflejado a través de fragmento de isla en caché:
- El atacante envía una solicitud manipulada a
__nuxt_islandcon un parámetro controlado por el atacante. - Nitro genera un fragmento que contiene el parámetro sin la sanitización adecuada.
- La CDN almacena en caché el fragmento para una clave compartida.
- Los visitantes posteriores reciben el fragmento en caché; el JavaScript del atacante se ejecuta en sus navegadores.
- El atacante envía una solicitud manipulada a
- Envenenamiento similar al almacenado a través de datos ascendentes:
- Si el front-end renderiza datos de una API de terceros o entrada de usuario (por ejemplo, comentarios), un atacante almacena entrada maliciosa en la parte superior.
- El servidor renderiza la isla con el contenido malicioso; la respuesta se almacena en caché y luego se sirve a otros.
- Abuso a gran escala: Las cachés de borde significan que un solo objeto en caché puede afectar a miles de visitantes; las rutas de envenenamiento de caché amplifican el impacto.
Parchear y actualizar: la solución más importante.
Si usas Nuxt/Nitro en alguna parte de tu pila, actualiza el paquete afectado de inmediato:
- Afectados:
@nuxt/nitro-server≥ 4.2.0 y ≤ 4.4.5 - Corregido en: 4.4.6 — actualiza a 4.4.6 o posterior
Acciones:
- Para proyectos que usan npm/yarn/pnpm:
- Ejecuta
npm install @nuxt/nitro-server@^4.4.6(o actualizapackage.jsony ejecuta tu gestor de paquetes). - Actualiza los archivos de bloqueo (
package-lock.json,yarn.lock,pnpm-lock.yaml) y confírmalos.
- Ejecuta
- Para construcciones en contenedores:
- Reconstruye las imágenes y vuelve a desplegar después de actualizar el paquete y el archivo de bloqueo.
- Evita depender de versiones implícitas más recientes: usa versiones fijas y reconstruye imágenes con frecuencia.
- Para servicios de borde o de vista previa que no controlas:
- Contacta a tu proveedor o propietario del servicio y solicita confirmación de la aplicación del parche.
- Pídeles que actualicen a 4.4.6+ y que invaliden las cachés después de aplicar el parche.
Si no puedes actualizar de inmediato, aplica las mitigaciones a continuación.
Mitigaciones inmediatas que puedes aplicar ahora (incluso antes de aplicar parches)
Medidas prácticas que puedes implementar rápidamente para reducir la exposición:
- Deshabilitar el almacenamiento en caché compartido para el punto final de la isla
- Asegúrate de que las respuestas de
__nuxt_islandestén marcadas como no almacenables en caché por cachés compartidos:- Establecer
Cache-Control: privado, sin caché, sin almacenamiento, debe volver a validar(elige las directivas apropiadas para tu entorno). - Agregar
Varyencabezados para incluir cookies/autorización/anfitrión si las respuestas dependen de ellas:Vary: Cookie, Autorización, Aceptar-Codificación, Host.
- Establecer
- Si controlas las reglas de CDN, crea una regla para omitir la caché para cualquier ruta que coincida con
/__nuxt_islando similar.
- Asegúrate de que las respuestas de
- Patching virtual con WAF / reglas de borde