p PatchFirst

PatchFirst · Latest vulnerabilities

unhead vulnerabilities

Vulnerabilities published for unhead in the last 30 days: 0. Listed in the KEV catalogue: 0.

Filter vulnerabilities
Clear filters

Vulnerabilities: 4

  1. GHSA-x7mm-9vvv-64w8

    Low · CVSS 2.3Fix available

    unhead: Streaming SSR `streamKey` injected into inline script without identifier validation

    ### Summary `createStreamableHead({ streamKey })` interpolated its `streamKey` argument directly into the streaming SSR bootstrap and suspense-chunk inline scripts without identifier validation or escaping. If an application forwards untrusted data into that configuration value, the rendered scripts become a script-injection sink. ### Details `streamKey` was embedded into JavaScript source via dot notation in two public helpers: * `createBootstrapScript()` returned `<script>window.${streamKey}={...}</script>` * `renderSSRHeadSuspenseChunk()` returned `window.${streamKey}.push(...)` No escaping, quoting, or identifier validation was appli

    • Update to 3.0.1
    Published Updated
  2. CVE-2026-39315

    Medium · CVSS 6.1EPSS 0.29%Fix available

    Unhead has a hasDangerousProtocol() bypass via leading-zero padded HTML entities in useHeadSafe()

    Unhead is a document head and template manager. Prior to 2.1.13, useHeadSafe() is the composable that Nuxt's own documentation explicitly recommends for rendering user-supplied content in <head> safely. Internally, the hasDangerousProtocol() function in packages/unhead/src/plugins/safe.ts decodes HTML entities before checking for blocked URI schemes (javascript:, data:, vbscript:). The decoder uses two regular expressions with fixed-width digit caps. The HTML5 specification imposes no limit on leading zeros in numeric character references. When a padded entity exceeds the regex digit cap, the decoder silently skips it. The undecoded string is

    • Update to 2.1.13
    Published Updated
  3. CVE-2026-31873

    Low · CVSS 0EPSS 0.25%Fix available

    Unhead has a Bypass of URI Scheme Sanitization in makeTagSafe via Case-Sensitivity

    Unhead is a document head and template manager. Prior to 2.1.11, The link.href check in makeTagSafe (safe.ts) uses String.includes(), which is case-sensitive. Browsers treat URI schemes case-insensitively. DATA:text/css,... is the same as data:text/css,... to the browser, but 'DATA:...'.includes('data:') returns false. An attacker can inject arbitrary CSS for UI redressing or data exfiltration via CSS attribute selectors with background-image callbacks. This vulnerability is fixed in 2.1.11.

    • Update to 2.1.11
    Published Updated
  4. CVE-2026-31860

    Medium · CVSS 5.3EPSS 0.27%Fix available

    Unhead has a XSS bypass in `useHeadSafe` via attribute name injection and case-sensitive protocol check

    Unhead is a document head and template manager. Prior to 2.1.11, useHeadSafe() can be bypassed to inject arbitrary HTML attributes, including event handlers, into SSR-rendered <head> tags. This is the composable that Nuxt docs recommend for safely handling user-generated content. The acceptDataAttrs function (safe.ts, line 16-20) allows any property key starting with data- through to the final HTML. It only checks the prefix, not whether the key contains spaces or other characters that break HTML attribute parsing. This vulnerability is fixed in 2.1.11.

    • Update to 2.1.11
    Published Updated

Check your server

Check your installed stack and versions against the current vulnerability feeds.

Check your server →