CVE-2026-39315

6.1 MEDIUM
Published: April 09, 2026 Modified: April 14, 2026
View on NVD

Description

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 then passed to startsWith('javascript:'), which does not match. makeTagSafe() writes the raw value directly into SSR HTML output. The browser's HTML parser decodes the padded entity natively and constructs the blocked URI. This vulnerability is fixed in 2.1.13.

AI Explanation

Get an AI-powered plain-language explanation of this vulnerability and remediation steps.

Login to generate AI explanation

CVSS v3.x Details

0.0 Low Medium High Critical 10.0
Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

References to Advisories, Solutions, and Tools

Patch Vendor Advisory Exploit Third Party Advisory
https://github.com/unjs/unhead/releases/tag/v2.1.13
Source: security-advisories@github.com
Product Release Notes
https://github.com/unjs/unhead/security/advisories/GHSA-95h2-gj7x-gx9w
Source: security-advisories@github.com
Exploit Mitigation Vendor Advisory
https://github.com/unjs/unhead/security/advisories/GHSA-95h2-gj7x-gx9w
Source: 134c704f-9b21-4f2e-91b3-4a467353bcc0
Exploit Mitigation Vendor Advisory

4 reference(s) from NVD

Quick Stats

CVSS v3 Score
6.1 / 10.0
EPSS (Exploit Probability)
0.0%
15th percentile
Exploitation Status
Not in CISA KEV

Weaknesses (CWE)

Affected Vendors

unjs