GHSA-mr9r-mww3-v6gv
SVG Injection via Unsanitized Options in @dicebear/core and @dicebear/initials
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @dicebear/core | >= 5.0.0, < 5.4.4 | 5.4.4 |
| npm | @dicebear/core | >= 6.0.0, < 6.1.4 | 6.1.4 |
| npm | @dicebear/core | >= 7.0.0, < 7.1.4 | 7.1.4 |
| npm | @dicebear/core | >= 8.0.0, < 8.0.3 | 8.0.3 |
| npm | @dicebear/core | >= 9.0.0, < 9.4.1 | 9.4.1 |
| npm | @dicebear/initials | >= 5.0.0, < 5.4.4 | 5.4.4 |
| npm | @dicebear/initials | >= 6.0.0, < 6.1.4 | 6.1.4 |
| npm | @dicebear/initials | >= 7.0.0, < 7.1.4 | 7.1.4 |
| npm | @dicebear/initials | >= 8.0.0, < 8.0.3 | 8.0.3 |
| npm | @dicebear/initials | >= 9.0.0, < 9.4.1 | 9.4.1 |
Details
As written in the advisory (Markdown source, shown as plain text).
## Summary
SVG attribute values derived from user-supplied options (`backgroundColor`, `fontFamily`, `textColor`) were not XML-escaped before interpolation into SVG output. This could allow Cross-Site Scripting (XSS) when applications pass untrusted input to `createAvatar()` and serve the resulting SVG inline or with `Content-Type: image/svg+xml`.
## Affected packages
- **`@dicebear/core`** — `backgroundColor` option values interpolated into SVG attributes without escaping (affects `solid` and `gradientLinear` background types)
- **`@dicebear/initials`** — `fontFamily` and `textColor` option values interpolated into SVG attributes without escaping
## Fix
All affected SVG attribute values are now properly escaped using XML entity encoding. Users should upgrade to the listed patched versions.
## Mitigating factors
- Applications that validate input against the library's JSON Schema before passing it to `createAvatar()` are not affected
- The DiceBear CLI validates input via AJV and was not vulnerable
- Exploitation requires that an application passes untrusted, unvalidated external input directly as option values
References
External links from the advisory. They lead to third-party sites.