{"schemaVersion":3,"id":"CVE-2026-94545","aliases":[],"status":"published","duplicateOf":null,"title":null,"description":"Satori is a library to convert HTML and CSS to SVG. Starting in version 0.0.27 and prior to version 0.33.5, Satori does not properly escape certain values before including them in generated SVG output. This can allow crafted values to be interpreted as SVG markup. The impact depends on how the generated SVG is consumed. Version 0.33.5 contains a patch. No complete workaround exists besides upgrading. Applications that cannot immediately upgrade should not render attacker-controlled content with Satori.","dates":{"published":"2026-09-30T14:53:34.961Z","modified":"2026-09-30T15:48:41.962Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":5.3,"severity":"medium","version":"4.0","versionLabel":"v4.0","source":"CVE.org","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":5.3,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":5.3,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/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","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.01038,"percentile":0.63429,"severity":"low","asOf":"2026-10-20T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-10-01T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.01038,"percentile":0.63429}],"last30":[{"date":"2026-10-01T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00796,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.01038,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.01038,"percentile":0.63429}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-116","name":"Improper Encoding or Escaping of Output","description":"The product prepares a structured message for communication with another component, but encoding or escaping of the data is either missing or done incorrectly. As a result, the intended structure of the message is not preserved.","type":"weakness","status":"Draft","abstraction":"Class","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/116.html"}],"affected":[{"vendor":"vercel","product":"next","name":"next","label":"next","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 16.2.0, < 16.3.6","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 16.2.0, < 16.3.6","eol":null,"hubHref":"/vendor/vercel/next"},{"vendor":"vercel","product":"satori","name":"satori","label":"satori","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 0.0.27, < 0.33.5","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.0.27, < 0.33.5","eol":null,"hubHref":"/vendor/vercel/satori"}],"affectedCount":2,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/vercel/satori/security/advisories/GHSA-wx4j-mvgx-mqwp","label":"github.com/vercel/satori/security/advisories/GHSA-wx4j-mvgx-mqwp","hostname":"github.com","tags":["X Refsource CONFIRM"]},{"url":"https://github.com/vercel/next.js/security/advisories/GHSA-vcvr-r3jv-pc5j","label":"github.com/vercel/next.js/security/advisories/GHSA-vcvr-r3jv-pc5j","hostname":"github.com","tags":["X Refsource MISC"]},{"url":"https://github.com/vercel/satori/pull/814","label":"github.com/vercel/satori/pull/814","hostname":"github.com","tags":["X Refsource MISC"]},{"url":"https://github.com/vercel/next.js/commit/868fad38690d72088868f299fa2bef339b26838e","label":"github.com/vercel/next.js/commit/868fad38690d72088868f299fa2bef339b26838e","hostname":"github.com","tags":["X Refsource MISC"]},{"url":"https://github.com/vercel/satori/commit/26a52affc031216fee5882b6e965c8dbc7ac1782","label":"github.com/vercel/satori/commit/26a52affc031216fee5882b6e965c8dbc7ac1782","hostname":"github.com","tags":["X Refsource MISC"]},{"url":"https://github.com/vercel/next.js/releases/tag/v16.3.6","label":"github.com/vercel/next.js/releases/tag/v16.3.6","hostname":"github.com","tags":["X Refsource MISC"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":["GHSA-VCVR-R3JV-PC5J"]},"timeline":[{"kind":"published","date":"2026-09-30T14:53:34.961Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-09-30T15:48:41.962Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":21,"level":"low","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-21T11:21:05.352Z","stale":false,"partial":false}}