{"id":"CVE-2026-120218","kind":"vulnerability","aliases":["CVE-2026-120218"],"related":[],"title":"Typemill: SVG upload sanitizer flaw enables cross-site scripting","description":"A flaw has been found in Typemill up to 2.26.0. The impacted element is the function ControllerApiImage::saveImage of the file system/typemill/Models/SvgSanitizer.php. Executing a manipulation can lead to cross site scripting. The attack may be performed from remote. The exploit has been published and may be used. Upgrading to version 2.27.0 is sufficient to resolve this issue. This patch is called 9ca43c4a7b6764c5a6ac11a2ccc099b036ee3cef. It is recommended to upgrade the affected component.","summary":"Typemill up to version 2.26.0 has a flaw in its image save function, where the SVG sanitizer can be bypassed. A remote attacker can use it to run cross-site scripting in a visitor's browser.","severity":"medium","cvss":4.0,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["other","php","self-hosted","typemill"],"not_affected_if":["version-2.27.0-or-later"],"how_to_check":"- Check the installed Typemill version and see whether it is `2.26.0` or older.\n- Review whether image uploads in Typemill accept SVG files.","fix":"- Typemill: upgrade to `2.27.0`.","status":"open","published_at":"2026-11-01T07:17:26+00:00","first_seen_at":"2026-11-01T07:18:34+00:00","triaged_at":"2026-11-01T07:20:28+00:00","updated_at":"2026-11-01T07:20:28+00:00","category":"other","confidence":0.6,"triage":{"at":"2026-11-01T07:20:28Z","model":"claude-haiku-5-5","output":{"fix":"- Typemill: upgrade to `2.27.0`.","reach":"internet","title":"Typemill: SVG upload sanitizer flaw enables cross-site scripting","impact":"medium","summary":"Typemill up to version 2.26.0 has a flaw in its image save function, where the SVG sanitizer can be bypassed. A remote attacker can use it to run cross-site scripting in a visitor's browser.","audience":"businesses","category":"other","nicknames":[],"who_cares":["typemill","php","self-hosted"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"Attacker script runs in visitors' browsers on the site","analyst_note":"","how_to_check":"- Check the installed Typemill version and see whether it is `2.26.0` or older.\n- Review whether image uploads in Typemill accept SVG files.","plain_action":"","needs_analyst":false,"not_affected_if":["version-2.27.0-or-later"],"who_is_affected":"Sites running Typemill up to and including 2.26.0 that accept image uploads through the image API. The sources name ControllerApiImage::saveImage and the SVG sanitizer as the affected code. Sites on 2.27.0 or later are not affected by this report.","user_interaction":"unknown","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000658,"input_tokens":4195,"output_tokens":477,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-120218':13A,16A '-2026':12A,15A '2.26.0':27B,69C '2.27.0':110C '9ca43c4a7b6764c5a6ac11a2ccc099b036ee3cef':121C 'affect':128C 'attack':45B,92C 'browser':59B 'bypass':42B 'call':120C 'compon':129C 'controllerapiimag':76C 'cross':8A,52B,88C 'cross-sit':7A,51B 'cve':11A,14A 'element':72C 'enabl':6A 'execut':82C 'exploit':99C 'file':80C 'flaw':5A,30B,61C 'found':64C 'function':35B,75C 'host':21B 'imag':33B 'impact':71C 'issu':116C 'lead':86C 'manipul':84C 'may':93C,104C 'patch':118C 'perform':95C 'php':18B 'publish':102C 'recommend':124C 'remot':44B,97C 'resolv':114C 'run':50B 'sanit':4A,39B 'save':34B 'saveimag':77C 'script':10A,54B,90C 'self':20B 'self-host':19B 'site':9A,53B,89C 'suffici':112C 'svg':2A,38B 'system/typemill/models/svgsanitizer.php':81C 'typemil':1A,22B,23B,66C 'upgrad':107C,126C 'upload':3A 'use':47B,106C 'version':26B,109C 'visitor':57B","nicknames":[],"mitigations":[],"who_affected":"Sites running Typemill up to and including 2.26.0 that accept image uploads through the image API. The sources name ControllerApiImage::saveImage and the SVG sanitizer as the affected code. Sites on 2.27.0 or later are not affected by this report.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-11-01T07:17:26+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:P/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":"cna@vuldb.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-120218","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-120218","severity":null,"published_at":"2026-11-01T07:17:26+00:00","modified_at":"2026-11-01T07:17:31+00:00","first_seen_at":"2026-11-01T07:18:34+00:00","fetched_at":"2026-11-01T07:18:34+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"}