Media

Envenenamiento de caché en Nuxt OG Image mediante claves de caché derivables en rutas de imágenes dinámicas no firmadas

  • Publicada: 15.10.2026
  • Actualizado: 19.10.2026 08:00

Proveedor: Nuxt Producto: Nuxt OG Image Versión: 6.2.5 Descripción: Debido a las particularidades del almacenamiento en caché y la generación de claves en la caché de imágenes Open Graph creada por el módulo, un atacante no autenticado puede modificar el contenido de la imagen (por ejemplo, el parámetro title) que se entrega al usuario. Impacto: Suplantación de contenido (Content Spoofing) Componente vulnerable: ruta /_og/d/*.png Condiciones de explotación: Acceso a la aplicación Mitigación: Actualizar a 6.7.2 y establecer un secret suficientemente seguro en la configuración ogImage Investigador: Dmitry Vanin (Positive Technologies)

Investigación

Durante la investigación de vulnerabilidad previa,) se descubrió que la versión 6.2.5 modificó el mecanismo de generación de índices de caché; ahora toma en cuenta los parámetros pasados durante la generación de la imagen.

Sin embargo, la imagen aún se genera a partir de datos transmitidos al atacante.

Listado 1. Nuevo código para la generación de índices en caché

js
export function resolvePathCacheKey(e: H3Event, path: string, resolvedOptions?: Record<string, any>) {
  const siteConfig = getSiteConfig(e, {
    resolveRefs: true,
  })
  const basePath = withoutTrailingSlash(withoutLeadingSlash(normalizeKey(path)))
  const hashParts: any[] = [
    basePath,
    import.meta.prerender ? '' : siteConfig.url,
  ]
  // Hash resolved options (not raw query string) so unknown/extra query params
  // cannot produce unique cache keys and bypass the cache.
  if (resolvedOptions)
    hashParts.push(hash(resolvedOptions))
  return [
    (!basePath || basePath === '/') ? 'index' : basePath,
    hash(hashParts),
  ].join(':')
}

En este caso, basePath se obtiene del parámetro _path, y resolvedOptions corresponden a las configuraciones normalizadas del componente, por ejemplo:

Listado 2. Un ejemplo de resolvedOptions

{"emojis":"noto","extension":"png","width":1200,"height":600,"cacheMaxAgeSeconds":259200,"component":"OgImageDefaultImageTakumi"}

A partir del análisis de resolvedOptions, se concluyó que, en general, todos los parámetros son conocidos a través del enlace directo a la OG Image o mediante la respuesta del servidor.

Reproducción de la vulnerabilidad

  1. Encontrar la ruta a OG Image. Figura 1. Demostración de localización de la ruta a OG Image image (width: 974, height: 361)

  2. Obtener los parámetros de la respuesta del servidor, especialmente cacheMaxAgeSeconds (cabecera cache-control, clave s-maxage); los demás parámetros son conocidos a partir de las etiquetas meta así como del parámetro c_<component name>. Figura 2. Obtención de parámetros image (width: 974, height: 245)

  3. Generar una clave de caché utilizando un script. Listado 3. Script

js
import {hash} from "ohash";

var url = "https://contoso.com"

var obj = JSON.parse(`{"emojis":"noto","extension":"png","width":1200,"height":600,"cacheMaxAgeSeconds":259200,"component":"OgImageBlogPostTakumi"}`)

var basePath = '/'

var hashParts = [
    basePath,
    url
  ]
  
if (obj)
	hashParts.push(hash(obj))

console.log([
    (!basePath || basePath === '/') ? 'index' : basePath,
    hash(hashParts),
  ].join(':'))
  1. Repetir los pasos como en la vulnerabilidad 1,), transmitiendo además el cacheKey obtenido.

  2. De este modo, se obtuvo el mismo resultado que en la vulnerabilidad 1). Figura 4. Respuesta del servidor image (width: 974, height: 729)

Créditos

Investigador: Dmitry Vanin (Positive Technologies)

Qué hacer

Actualice a 6.7.2 y configure un secret suficientemente seguro en la configuración ogImage.

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Paquete de npm nuxt-og-image >= 6.2.5, < 6.7.0 6.7.0

Referencias

Puntuación CVSS -
Vector CVSS
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Debilidad (CWE)
CWE-349
Plataforma
npm
Paquete
nuxt-og-image
Publicada
15.10.2026
Actualizado
19.10.2026 08:00

Fuentes y licencias · Editado o traducido por DockRay; se mantienen los derechos y las licencias de las fuentes.

OSV / GitHub Advisory Database - GHSA-2x6f-rp82-ppmj - CC BY 4.0

Historial de vulnerabilidades: nuxt-og-image

Todas las vulnerabilidades publicadas de este paquete (Paquete de npm), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Entradas en total
6
Primera → última
03.2026 10.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Media 5
  • Baja 1

Divulgaciones por año

  1. 2026: 6
  1. Envenenamiento de caché en Nuxt OG Image mediante claves de caché derivables en rutas de imágenes dinámicas no firmadas esta entrada
    Media CVE-2026-102527 >= 6.2.5, < 6.7.0 6.7.0

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.