Unhead has a XSS bypass in `useHeadSafe` via attribute name injection and case-sensitive protocol check
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| unjs | unhead | affected |
|
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Unjs | Unhead |
|
| Source | ID | Title |
|---|---|---|
Github GHSA |
GHSA-g5xx-pwrp-g3fv | Unhead has XSS bypass in `useHeadSafe` via attribute name injection and case-sensitive protocol check |
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.292% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| CPEs | cpe:2.3:a:unjs:unhead:*:*:*:*:*:*:*:* | |
| Metrics |
cvssV3_1
|
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Unjs
Unjs unhead |
|
| Vendors & Products |
Unjs
Unjs unhead |
| Type | Values Removed | Values Added |
|---|---|---|
| Description | 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. | |
| Title | Unhead has a XSS bypass in `useHeadSafe` via attribute name injection and case-sensitive protocol check | |
| Weaknesses | CWE-79 | |
| References |
| |
| Metrics |
cvssV4_0
|