{"id":"CVE-2026-117539","kind":"vulnerability","aliases":["CVE-2026-117539"],"related":[],"title":"svg-sanitizer: crafted SVG files can embed remote resources and leak data","description":"darylldoyle svg-sanitizer before 1.0.0 contains CSS injection and remote reference bypass vulnerabilities that allow attackers to embed external resources by uploading crafted SVG files. Attackers can use unsanitized style content, unquoted url() values, or image href attributes to exfiltrate page data, track users, or disclose visitor IP addresses.","summary":"The svg-sanitizer npm library before 1.0.0 fails to strip some CSS and remote href references from SVG files. An attacker who gets a crafted SVG processed by the library can make it load external resources, exfiltrate page data, track users, or reveal visitor IP addresses.","severity":"medium","cvss":5.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["file-upload","node","package","self-hosted","svg-sanitizer"],"not_affected_if":["no-user-svg-upload","not-using-svg-sanitizer"],"how_to_check":"- Check the installed version with `npm ls svg-sanitizer` or by reading `node_modules/svg-sanitizer/package.json`.\n- Search the codebase for `svg-sanitizer` to find where uploaded SVGs are passed through it.","fix":"- Upgrade svg-sanitizer to `1.0.0` or later.\n- Until upgraded, serve sanitized SVGs with a strict Content-Security-Policy or render user SVGs as image files rather than inline markup.","status":"open","published_at":"2026-10-27T11:17:34+00:00","first_seen_at":"2026-10-27T11:31:28+00:00","triaged_at":"2026-10-27T11:32:15+00:00","updated_at":"2026-10-27T11:32:15+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-27T11:32:15Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade svg-sanitizer to `1.0.0` or later.\n- Until upgraded, serve sanitized SVGs with a strict Content-Security-Policy or render user SVGs as image files rather than inline markup.","reach":"internet","title":"svg-sanitizer: crafted SVG files can embed remote resources and leak data","impact":"medium","summary":"The svg-sanitizer npm library before 1.0.0 fails to strip some CSS and remote href references from SVG files. An attacker who gets a crafted SVG processed by the library can make it load external resources, exfiltrate page data, track users, or reveal visitor IP addresses.","category":"package","nicknames":[],"who_cares":["node","svg-sanitizer","file-upload","self-hosted"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Visitor IP addresses and page data leak to attacker-controlled hosts.","analyst_note":"Confirm the exact affected functions and whether a fixed 1.0.0 release note or advisory from the package repo lists the bypass details; the NVD text alone does not name the vulnerable code paths.","how_to_check":"- Check the installed version with `npm ls svg-sanitizer` or by reading `node_modules/svg-sanitizer/package.json`.\n- Search the codebase for `svg-sanitizer` to find where uploaded SVGs are passed through it.","needs_analyst":true,"not_affected_if":["not-using-svg-sanitizer","no-user-svg-upload"],"who_is_affected":"Applications that accept user-uploaded SVG files and sanitize them with svg-sanitizer before the 1.0.0 release are exposed, since the flaw is in how the library cleans CSS and href values. Systems that do not use this package, or that never render user-supplied SVG, can skip it.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000669,"input_tokens":3350,"output_tokens":668,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-117539':16A,19A '-2026':15A,18A '1.0.0':38B,83C 'address':77B,127C 'allow':93C 'attack':52B,94C,104C 'attribut':116C 'bypass':90C 'contain':84C 'content':109C 'craft':4A,56B,101C 'css':43B,85C 'cve':14A,17A 'darylldoyl':78C 'data':13A,70B,120C 'disclos':124C 'emb':8A,96C 'exfiltr':68B,118C 'extern':66B,97C 'fail':39B 'file':6A,21B,50B,103C 'file-upload':20B 'get':54B 'host':27B 'href':46B,115C 'imag':114C 'inject':86C 'ip':76B,126C 'leak':12A 'librari':36B,61B 'load':65B 'make':63B 'node':23B 'npm':35B 'packag':24B 'page':69B,119C 'process':58B 'refer':47B,89C 'remot':9A,45B,88C 'resourc':10A,67B,98C 'reveal':74B 'sanit':3A,30B,34B,81C 'self':26B 'self-host':25B 'strip':41B 'style':108C 'svg':2A,5A,29B,33B,49B,57B,80C,102C 'svg-sanit':1A,28B,32B,79C 'track':71B,121C 'unquot':110C 'unsanit':107C 'upload':22B,100C 'url':111C 'use':106C 'user':72B,122C 'valu':112C 'visitor':75B,125C 'vulner':91C","nicknames":[],"mitigations":[],"who_affected":"Applications that accept user-uploaded SVG files and sanitize them with svg-sanitizer before the 1.0.0 release are exposed, since the flaw is in how the library cleans CSS and href values. Systems that do not use this package, or that never render user-supplied SVG, can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-27T11:17:34+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-117539","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-117539","severity":null,"published_at":"2026-10-27T11:17:34+00:00","modified_at":"2026-10-27T11:17:34+00:00","first_seen_at":"2026-10-27T11:31:28+00:00","fetched_at":"2026-10-27T11:31:28+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}