Skip to main content

svg-sanitizer CVE-2026-121447

| EUVDEUVD-2026-115869 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-11-03 VulnCheck GHSA-w5hc-8c8h-8vm3
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Upload crafted SVG with animateTransform href payload
  2. Exploit
    svg-sanitizer <=1.0.0 fails to strip javascript: in values
  3. Execution
    Safari victim clicks animated link
  4. Impact
    Arbitrary JavaScript runs in victim's browser session

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an application that (a) uses svg-sanitizer / enshrined/svg-sanitize version <=1.0.0 to sanitize SVG input and (b) allows an attacker to supply or upload SVG content that is later rendered to other users. The crafted file must use <animateTransform attributeName="href" ... values="...;javascript:..."> to overwrite an <a> element's href with a javascript: URL. Exploitation is strongly limited: it executes ONLY in Apple Safari (which uniquely permits animateTransform to target href), the victim must click the affected link (UI required per UI:P), and it does not work in Chrome, Firefox or other engines. Applications on 1.1.0+ are not affected.

Impact

This is a genuine but moderate-risk stored-XSS sanitizer bypass, not a drop-everything emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P, VC:L/VI:L/SC:L/SI:L, base 5.3 Medium) correctly reflects a network-reachable flaw with no privileges but mandatory user interaction and only low/partial impact. The vuln.today decision label is 'this_month' (not act_now or emergency), consistent with the medium score. The single most important limiting signal is NOT captured by CVSS: the GHSA advisory states the XSS triggers only on Safari, because Safari uniquely lets animateTransform's attributeName target href. On Chrome, Firefox and other engines the payload does not execute, so real-world impact is scoped to the Safari-using subset of victims. There is no CISA KEV entry and no EPSS score in the supplied data, so exploitation probability cannot be quantified here; absence of KEV means no confirmed active exploitation. A concrete working PoC payload is published in the GHSA advisory and is accepted by the live demo sanitizer (svg.enshrined.co.uk), which raises practical exploitability for anyone running the vulnerable version. Net: a real, publicly-detailed bypass worth patching on a normal cycle, with risk tempered by the Safari-only trigger and the required victim click.

Exploit ScenarioDerived

An application uses svg-sanitizer (<=1.0.0) to sanitize user-uploaded SVGs and serves them back to other users. An attacker uploads an SVG containing an <a href> element plus an animateTransform whose attributeName is href and whose values include a javascript: URL (the exact payload is published in the GHSA advisory). When a victim using Safari views the file and clicks the animated link, the javascript: URL executes in the victim's session; non-Safari browsers do not trigger it.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Nov 03, 2026

Cross-site scripting bypass in svg-sanitizer (Composer package enshrined/svg-sanitize) 1.0.0 and earlier lets an attacker who can supply or upload SVG content place a javascript: URL inside an animateTransform values attribute, which survives sanitization and overwrites an anchor's href, executing arbitrary JavaScript when a victim clicks the link. The bypass only fires in Apple Safari, which uniquely allows animateTransform to target href, and requires the victim to click the affected link (UI:R), so this is a genuine but moderate-risk stored-XSS sanitizer flaw rather than an emergency; the vendor demo tool accepted the published payload. No confirmed active exploitation or KEV listing is reported, and the upstream security advisory documents a public proof-of-concept payload; upgrading to 1.1.0 removes the bypass.

RemediationAI

Upgrade svg-sanitizer / enshrined/svg-sanitize to version 1.1.0, the first release that sanitizes javascript: URLs in animateTransform values attributes; there is no backported fix documented for the 1.0.0 line, so the version bump is the complete remedy and the primary action, per the advisory at https://github.com/darylldoyle/svg-sanitizer/security/advisories/GHSA-q546-85r6-f39q. Because the only complete fix identified is updating, teams that cannot upgrade immediately should reduce exposure by restricting who is permitted to upload or submit SVG content that the sanitizer processes, and by serving untrusted SVG from a separate origin or as a download rather than inline in a privileged page - both measures shrink the audience of Safari users who could be served a stored payload but do not correct the sanitizer itself, so the payload would still be accepted and stored. Note that blocking or stripping SMIL animation elements entirely would defeat this specific payload but risks breaking legitimate animations and is not a documented vendor workaround.

Affected VersionsENISA

svg-sanitizer 0 <1.1.0

Affected Packages

euvd svg_sanitizer fix: 1.1.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected component is an SVG sanitizer that filters untrusted markup before it is rendered to other users, and CWE-79 (improper neutralization of input during web page generation) describes the root cause: the filter removes scripts and event handlers but does not normalize the URL scheme carried inside SVG SMIL animation values. The bypass uses the SMIL <animateTransform> element with attributeName="href", a type of "invalid" and a values list whose later frame is a javascript: URL ("XXX;javascript:alert(':)')//"); because the animation targets an <a> element's href, a browser that permits animateTransform to animate href will replace the safe link target with the script URL. According to the upstream advisory, only Safari treats href as an animatable attribute for animateTransform and therefore executes the payload - the same SMIL behavior documented in public DOMPurify bypass research - while Chrome, Firefox and other engines do not, so the exact same sanitized file stays inert there. The CPE cpe:2.3:a:darylldoyle:svg-sanitizer:*:*:*:*:*:*:*:* covers the library broadly, while the package metadata in the advisory pins the vulnerable range to <= 1.0.0 and the fix to 1.1.0. Severity per the supplied vector (CVSS 3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N, scored 5.3) reflects a scope-changing, low-impact script execution that depends on victim interaction rather than a directly compromising flaw; the trigger path for the sanitizer bypass itself is fully described, but exploitability depends on the host application rendering attacker-supplied SVG back to Safari users.

Know when Svg Sanitizer gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
vuln.today AI 6.1 MEDIUM

Remote, unauthenticated upload (PR:N) with a required victim click (UI:R); script runs in the victim's browser context (S:C) with low confidentiality/integrity impact; Safari-only but attack steps themselves are simple (AC:L).

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Nov 03, 2026 - 16:17 EUVD
CVE Published
Nov 03, 2026 - 14:28 cve.org
MEDIUM 5.3

DescriptionCVE.org

svg-sanitizer before 1.1.0 contains a cross-site scripting vulnerability that allows attackers to bypass sanitization by placing javascript: URLs in the animateTransform values attribute. Attackers can upload crafted SVG files whose animateTransform targets the href attribute, executing arbitrary JavaScript when Safari users click the link.

Threat Intelligence Overview

Prevalence
Medium
popular PHP/Composer SVG sanitization library, widely used but not universal
Social Media
2
Sightings
Data Quality
3 sources
Confidence: Low

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy