CVE-2026-102527
**Vendor:** Nuxt **Product:** Nuxt OG Image **Version:** 6.2.5 **Description:** Due to the specifics of caching and key generation in the Open Graph image cache created by the module, an unauthenticated attacker can modify the content of the image (for example, the `title` parameter) that is delivered to the user. **Impact:** Content Spoofing **Vulnerable component:** route `/_og/d/*.png` **Exploitation conditions:** Access to the application **Mitigation:** Upgrade to 6.7.2 and set a sufficiently secure `secret` in config `ogImage` **Researcher:** Dmitry Vanin (Positive Technologies) ## Research During [the previous vulnerability research](https://github.com/nuxt-modules/og-image/security/advisories/GHSA-6c86-prf5-hj4h), it was discovered that version 6.2.5 changed the mechanism for generating cache indexes; it now takes into account the parameters passed during image generation. However, the image is still generated from data transmitted to the attacker. _Listing 1. New code for generating indexes in cache_ ``` 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(':') } ``` In this case, `basePath` is obtained from the `_path` parameter, `resolvedOptions` are the normalized settings of the component, for example: _Listing 2. An example of `resolvedOptions`_ ``` {"emojis":"noto","extension":"png","width":1200,"height":600,"cacheMaxAgeSeconds":259200,"component":"OgImageDef
Properties
- Severity
- medium
- Summary
- Nuxt OG Image cache poisoning through derivable cache keys on unsigned dynamic image routes
- Nvd fetched at
- 2026-10-20T21:14:08.448323+00:00
- Cvss severity
- MEDIUM
- Cvss score
- 6.9
- Epss score
- 0.00186
- Retrieved at
- 2026-10-21T01:24:48+00:00
- Ghsa published
- 2026-10-15T20:15:27Z
- Source url
- https://github.com/advisories/GHSA-2x6f-rp82-ppmj
- Ghsa updated
- 2026-10-15T20:15:30Z
- Ghsa id
- GHSA-2x6f-rp82-ppmj
- Last source
- FIRST EPSS
- Cvss version
- 4.0
- Score
- 6.9
- Cve id
- CVE-2026-102527
- Cvss vector
- 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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
- First seen by Signal
- 2026-10-15T22:56:51+00:00
- Is ghsa only
- false
- Vector
- 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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
- Published at
- 2026-10-15T17:17:08.973
Related Entities (3)
AFFECTS (1)
HAS_WEAKNESS (1)
VULNERABLE_TO (1)
Explore deeper with Ninja Signal's threat intelligence graph