{"id":"CVE-2026-129447","kind":"vulnerability","aliases":["CVE-2026-129447"],"related":[],"title":"Kroki: reflected XSS in /dbml/svg lets crafted links run script","description":"Kroki before 0.36.0 contains a reflected cross-site scripting vulnerability in the /dbml/svg endpoint that allows unauthenticated attackers to inject javascript: hyperlinks by supplying crafted DBML table url, headercolor, or TableGroup color settings. Attackers can send a crafted SVG link that, when opened and the table header clicked, executes attacker JavaScript in the Kroki origin.","summary":"Kroki before 0.36.0 reflects DBML table url, headercolor, and TableGroup color values into SVG output on the /dbml/svg endpoint without proper sanitization. A victim who opens a crafted SVG link and clicks a table header runs attacker JavaScript in the Kroki origin.","severity":"medium","cvss":6.1,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"kroki","fixed":[],"affected":"","ecosystem":"vendor"}],"ecosystems":["vendor"],"tags":["dbml","kroki","other","self-hosted"],"not_affected_if":["kroki-at-0.36.0-or-later","no-dbml-rendering"],"how_to_check":"- Check the running Kroki version; it is affected if below `0.36.0`.\n- Find out whether your Kroki instance is reachable from the internet or other untrusted users.","fix":"- Kroki: upgrade to `0.36.0` or later.","status":"open","published_at":"2026-11-14T18:17:21+00:00","first_seen_at":"2026-11-14T18:31:01+00:00","triaged_at":"2026-11-14T18:32:01+00:00","updated_at":"2026-11-14T18:32:01+00:00","category":"other","confidence":0.7,"triage":{"at":"2026-11-14T18:32:01Z","model":"claude-haiku-5-5","output":{"fix":"- Kroki: upgrade to `0.36.0` or later.","reach":"internet","title":"Kroki: reflected XSS in /dbml/svg lets crafted links run script","impact":"medium","summary":"Kroki before 0.36.0 reflects DBML table url, headercolor, and TableGroup color values into SVG output on the /dbml/svg endpoint without proper sanitization. A victim who opens a crafted SVG link and clicks a table header runs attacker JavaScript in the Kroki origin.","audience":"businesses","category":"other","nicknames":[],"who_cares":["kroki","self-hosted","dbml"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"attacker JavaScript runs in the Kroki origin for a victim","analyst_note":"","how_to_check":"- Check the running Kroki version; it is affected if below `0.36.0`.\n- Find out whether your Kroki instance is reachable from the internet or other untrusted users.","plain_action":"","product_name":"kroki","needs_analyst":false,"not_affected_if":["kroki-at-0.36.0-or-later","no-dbml-rendering"],"who_is_affected":"Teams that run a self-hosted or shared Kroki server that renders DBML diagrams through the /dbml/svg endpoint. Users who open crafted SVG links from outside the team are the ones put at risk; a Kroki instance not running DBML rendering or not exposed to untrusted users is lower risk.","user_interaction":"yes","product_ecosystem":"vendor","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000752,"input_tokens":4671,"output_tokens":570,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-129447':13A,16A '-2026':12A,15A '/dbml/svg':5A,41B,79C '0.36.0':26B,68C 'allow':82C 'attack':60B,84C,100C,116C 'click':55B,114C 'color':34B,98C 'contain':69C 'craft':7A,51B,91C,104C 'cross':73C 'cross-sit':72C 'cve':11A,14A 'dbml':18B,28B,92C 'endpoint':42B,80C 'execut':115C 'header':58B,113C 'headercolor':31B,95C 'host':23B 'hyperlink':88C 'inject':86C 'javascript':61B,87C,117C 'kroki':1A,17A,19B,24B,64B,66C,120C 'let':6A 'link':8A,53B,106C 'open':49B,109C 'origin':65B,121C 'output':38B 'proper':44B 'reflect':2A,27B,71C 'run':9A,59B 'sanit':45B 'script':10A,75C 'self':22B 'self-host':21B 'send':102C 'set':99C 'site':74C 'suppli':90C 'svg':37B,52B,105C 'tabl':29B,57B,93C,112C 'tablegroup':33B,97C 'unauthent':83C 'url':30B,94C 'valu':35B 'victim':47B 'vulner':76C 'without':43B 'xss':3A","nicknames":[],"mitigations":[],"who_affected":"Teams that run a self-hosted or shared Kroki server that renders DBML diagrams through the /dbml/svg endpoint. Users who open crafted SVG links from outside the team are the ones put at risk; a Kroki instance not running DBML rendering or not exposed to untrusted users is lower risk.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["kroki"],"ptokens":["kroki"],"labels":["dbml","kroki","medium","other","selfhosted","vendor"],"campaign_type":null,"search_a":"'-129447':13A,16A '-2026':12A,15A '/dbml/svg':5A 'craft':7A 'cve':11A,14A 'kroki':1A,17A 'let':6A 'link':8A 'reflect':2A 'run':9A 'script':10A 'xss':3A","search_b":"'/dbml/svg':41B '0.36.0':26B 'attack':60B 'click':55B 'color':34B 'craft':51B 'dbml':18B,28B 'endpoint':42B 'header':58B 'headercolor':31B 'host':23B 'javascript':61B 'kroki':19B,24B,64B 'link':53B 'open':49B 'origin':65B 'output':38B 'proper':44B 'reflect':27B 'run':59B 'sanit':45B 'self':22B 'self-host':21B 'svg':37B,52B 'tabl':29B,57B 'tablegroup':33B 'url':30B 'valu':35B 'victim':47B 'without':43B","search_c":"'/dbml/svg':79C '0.36.0':68C 'allow':82C 'attack':84C,100C,116C 'click':114C 'color':98C 'contain':69C 'craft':91C,104C 'cross':73C 'cross-sit':72C 'dbml':92C 'endpoint':80C 'execut':115C 'header':113C 'headercolor':95C 'hyperlink':88C 'inject':86C 'javascript':87C,117C 'kroki':66C,120C 'link':106C 'open':109C 'origin':121C 'reflect':71C 'script':75C 'send':102C 'set':99C 'site':74C 'suppli':90C 'svg':105C 'tabl':93C,112C 'tablegroup':97C 'unauthent':83C 'url':94C 'vulner':76C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-09T17:56:17+00:00","kev":null,"cvss_vector":"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/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-129447","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-129447","severity":null,"published_at":"2026-11-14T18:17:21+00:00","modified_at":"2026-11-14T18:17:21+00:00","first_seen_at":"2026-11-14T18:31:01+00:00","fetched_at":"2026-11-14T18:31:01+00:00","note":null}],"documents":[{"id":157577,"url":"https://github.com/yuzutech/kroki/commit/b57e1bdc39df9521b249db0dbd56c5e0a8b7e33d","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":157578,"url":"https://github.com/yuzutech/kroki/releases/tag/v0.36.0","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":157579,"url":"https://github.com/yuzutech/kroki/security/advisories/GHSA-fr36-wcx2-7gfq","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-09T17:56:17+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":157580,"url":"https://www.vulncheck.com/advisories/kroki-before-0.36.0-reflected-xss-via-dbml-table-urls","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}