{"id":"CVE-2026-92106","aliases":["EEF-CVE-2026-92106","EUVD-2026-86828","GHSA-8rqp-v692-v82q"],"status":"published","title":"lazy_html serializes SVG and MathML style and script text unescaped, allowing mutation XSS","description":"Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') vulnerability in dashbitco lazy_html allows mutation XSS via a parse and serialize round-trip of attacker-supplied HTML.\n\nLazyHTML.to_html/2 and LazyHTML.Tree.to_html/2 decide whether to escape an element's text from its tag name alone. A style or script element inside SVG or MathML foreign content is parsed with character references decoded, but is serialized as an HTML raw-text element, so its text is emitted unescaped. Encoded markup such as \u0026lt;/style\u0026gt;\u0026lt;img src=x onerror=...\u0026gt; inside \u003csvg\u003e\u003cstyle\u003e therefore closes the element on re-parse and becomes live markup. Applications that parse untrusted HTML with lazy_html, filter the document or tree, and serialize it for display are affected, since the payload is a plain text node that no element or attribute filter sees.\n\nThis issue affects lazy_html: from 0.1.0 before 0.1.13.","severity":{"version":"4.0","score":2.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","level":"low","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00394,"percentile":0.34097,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-79"],"published":"2026-09-25T09:33:13Z","modified":"2026-10-28T11:19:43Z","fixes":[{"ecosystem":"Hex","package":"lazy_html","fixed_in":["0.1.13"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Hex","package":"lazy_html","ranges":[{"type":"SEMVER","events":[{"introduced":"0.1.0"},{"fixed":"0.1.13"}]}],"versions":["0.1.0","0.1.1","0.1.10","0.1.11","0.1.12","0.1.2","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7","0.1.8","0.1.9"]}],"products":[{"vendor":"dashbitco","product":"lazy_html"}],"references":[{"url":"https://github.com/dashbitco/lazy_html/security/advisories/GHSA-8rqp-v692-v82q","tags":["related","vendor-advisory","advisory"]},{"url":"https://cna.erlef.org/cves/CVE-2026-92106.html","tags":["related","web"]},{"url":"https://osv.dev/vulnerability/EEF-CVE-2026-92106","tags":["related","web"]},{"url":"https://github.com/dashbitco/lazy_html/commit/1dee15746c024916b3110af8b168c2f3b3065fbd","tags":["related","fix","web"]},{"url":"https://github.com/dashbitco/lazy_html/commit/f32c7fd6223225b68bc8691c78b6d4a77972f1d5","tags":["patch","fix"]},{"url":"https://github.com","tags":["web"]},{"url":"https://repo.hex.pm","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/92xxx/CVE-2026-92106.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-92106","tags":["advisory"]},{"url":"https://github.com/dashbitco/lazy_html","tags":["package"]},{"url":"https://hex.pm/packages/lazy_html","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-92106","title":"lazy_html serializes SVG and MathML style and script text unescaped, allowing mutation XSS","description":"Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') vulnerability in dashbitco lazy_html allows mutation XSS via a parse and serialize round-trip of attacker-supplied HTML.\n\nLazyHTML.to_html/2 and LazyHTML.Tree.to_html/2 decide whether to escape an element's text from its tag name alone. A style or script element inside SVG or MathML foreign content is parsed with character references decoded, but is serialized as an HTML raw-text element, so its text is emitted unescaped. Encoded markup such as \u0026lt;/style\u0026gt;\u0026lt;img src=x onerror=...\u0026gt; inside \u003csvg\u003e\u003cstyle\u003e therefore closes the element on re-parse and becomes live markup. Applications that parse untrusted HTML with lazy_html, filter the document or tree, and serialize it for display are affected, since the payload is a plain text node that no element or attribute filter sees.\n\nThis issue affects lazy_html: from 0.1.0 before 0.1.13.","status":"published","published":"2026-09-25T09:33:13.051Z","modified":"2026-09-25T12:41:30.597Z","cvss":[{"version":"4.0","score":2.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","level":"low","assessor":"cna"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T13:48:24.536396Z"}],"euvd":[{"id":"EUVD-2026-86828","description":"Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') vulnerability in dashbitco lazy_html allows mutation XSS via a parse and serialize round-trip of attacker-supplied HTML.\n\nLazyHTML.to_html/2 and LazyHTML.Tree.to_html/2 decide whether to escape an element's text from its tag name alone. A style or script element inside SVG or MathML foreign content is parsed with character references decoded, but is serialized as an HTML raw-text element, so its text is emitted unescaped. Encoded markup such as \u0026lt;/style\u0026gt;\u0026lt;img src=x onerror=...\u0026gt; inside \u003csvg\u003e\u003cstyle\u003e therefore closes the element on re-parse and becomes live markup. Applications that parse untrusted HTML with lazy_html, filter the document or tree, and serialize it for display are affected, since the payload is a plain text node that no element or attribute filter sees.\n\nThis issue affects lazy_html: from 0.1.0 before 0.1.13.","status":"published","published":"2026-09-25T09:33:13Z","modified":"2026-09-25T12:41:30Z","cvss":[{"version":"4.0","score":2.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","level":"low"}],"updated_at":"2026-11-02T17:27:55.846756Z"}],"nvd":[{"id":"CVE-2026-92106","description":"Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') vulnerability in dashbitco lazy_html allows mutation XSS via a parse and serialize round-trip of attacker-supplied HTML.\n\nLazyHTML.to_html/2 and LazyHTML.Tree.to_html/2 decide whether to escape an element's text from its tag name alone. A style or script element inside SVG or MathML foreign content is parsed with character references decoded, but is serialized as an HTML raw-text element, so its text is emitted unescaped. Encoded markup such as \u0026lt;/style\u0026gt;\u0026lt;img src=x onerror=...\u0026gt; inside \u003csvg\u003e\u003cstyle\u003e therefore closes the element on re-parse and becomes live markup. Applications that parse untrusted HTML with lazy_html, filter the document or tree, and serialize it for display are affected, since the payload is a plain text node that no element or attribute filter sees.\n\nThis issue affects lazy_html: from 0.1.0 before 0.1.13.","status":"published","published":"2026-09-25T10:17:08.263Z","modified":"2026-09-25T13:22:04.673Z","cvss":[{"version":"4.0","score":2.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/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","level":"low","assessor":"secondary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:12:51.388161Z"}],"osv":[{"id":"CVE-2026-92106","title":"lazy_html serializes SVG and MathML style and script text unescaped, allowing mutation XSS","description":"Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') vulnerability in dashbitco lazy_html allows mutation XSS via a parse and serialize round-trip of attacker-supplied HTML.\n\nLazyHTML.to_html/2 and LazyHTML.Tree.to_html/2 decide whether to escape an element's text from its tag name alone. A style or script element inside SVG or MathML foreign content is parsed with character references decoded, but is serialized as an HTML raw-text element, so its text is emitted unescaped. Encoded markup such as \u0026lt;/style\u0026gt;\u0026lt;img src=x onerror=...\u0026gt; inside \u003csvg\u003e\u003cstyle\u003e therefore closes the element on re-parse and becomes live markup. Applications that parse untrusted HTML with lazy_html, filter the document or tree, and serialize it for display are affected, since the payload is a plain text node that no element or attribute filter sees.\n\nThis issue affects lazy_html: from 0.1.0 before 0.1.13.","status":"published","published":"2026-09-25T09:33:13.051Z","modified":"2026-10-28T11:19:43.768394388Z","cvss":[{"version":"4.0","score":2.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","level":"low"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:45:20.269367Z"},{"id":"EEF-CVE-2026-92106","title":"lazy_html serializes SVG and MathML style and script text unescaped, allowing mutation XSS","description":"## Summary\n\nImproper Neutralization of Input During Web Page Generation ('Cross-site Scripting') vulnerability in dashbitco lazy_html allows mutation XSS via a parse and serialize round-trip of attacker-supplied HTML.\n\n`LazyHTML.to_html/2` and `LazyHTML.Tree.to_html/2` decide whether to escape an element's text from its tag name alone. A `style` or `script` element inside SVG or MathML foreign content is parsed with character references decoded, but is serialized as an HTML raw-text element, so its text is emitted unescaped. Encoded markup such as `\u0026lt;/style\u0026gt;\u0026lt;img src=x onerror=...\u0026gt;` inside `\u003csvg\u003e\u003cstyle\u003e` therefore closes the element on re-parse and becomes live markup. Applications that parse untrusted HTML with lazy_html, filter the document or tree, and serialize it for display are affected, since the payload is a plain text node that no element or attribute filter sees.\n\nThis issue affects lazy_html: from 0.1.0 before 0.1.13.\n\n## Impact\n\nAn attacker who can submit HTML to an application that sanitizes it with lazy_html can run script in the browsers of users who view the sanitized output.","status":"published","published":"2026-09-25T09:33:13.051Z","modified":"2026-09-25T14:00:17.876072Z","cvss":[{"version":"4.0","score":2.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","level":"low"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:46:33.520522Z"}]}}
