Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessUpload crafted SVG with animateTransform href payload
-
Exploitsvg-sanitizer <=1.0.0 fails to strip javascript: in values
-
ExecutionSafari victim clicks animated link
-
ImpactArbitrary 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Svg Sanitizer
View allIt is possible to bypass enshrined/svg-sanitize before 0.13.1 using the "xlink:href" attribute due to mishandling of the
Algorithmic-complexity denial of service in svg-sanitizer (Composer package enshrined/svg-sanitize) versions 0.11.0 thro
CPU exhaustion in enshrined/svg-sanitize 1.0.0 occurs when removeRemoteReferences(true) is enabled: crafted SVG CSS cont
darylldoyle svg-sanitizer before 0.12.0 mishandles script and data values in attributes, as demonstrated by unexpected w
A Denial Of Service vulnerability exists in the SVG Sanitizer module through 8.x-1.0-alpha1 for Drupal because access to
svg-sanitizer 1.1.0 can fail individual PHP 8 requests when an application passes attacker-controlled SVG input that end
The SVG Sanitizer extension for TYPO3 has a cross-site scripting vulnerability in versions before 1.0.3. Rated medium se
SVG Sanitizer 0.5.0 through 1.0.0 fails to strip remote URLs expressed with CSS escape sequences inside url() in SVG pre
EUVD-2026-115869
GHSA-w5hc-8c8h-8vm3
NVD
CVE.org
Exploit-DB