{"id":"CVE-2016-10531","aliases":["CLSA-2026-1773188128","DEBIAN-CVE-2016-10531","EUVD-2019-0347","GHSA-vfvf-mqq8-rwqc","UBUNTU-CVE-2016-10531"],"status":"published","title":"Sanitization bypass using HTML Entities in marked","description":"marked is an application that is meant to parse and compile markdown. Due to the way that marked 0.3.5 and earlier parses input, specifically HTML entities, it's possible to bypass marked's content injection protection (`sanitize: true`) to inject a `javascript:` URL. This flaw exists because `\u0026#xNNanything;` gets parsed to what it could and leaves the rest behind, resulting in just `anything;` being left.","severity":{"version":"3.0","score":6.1,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-09","score":0.01413,"percentile":0.72899,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-79"],"published":"2018-05-31T20:00:00Z","modified":"2026-10-23T13:58:15Z","fixes":[{"ecosystem":"npm","package":"marked","fixed_in":["0.3.6"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"node-marked","fixed_in":["0.3.6+dfsg-1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"node-marked","fixed_in":["0.3.6+dfsg-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"node-marked","fixed_in":["0.3.6+dfsg-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"marked","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.6"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"marked","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.2.10-tuxcare.0"},{"fixed":"0.2.10-tuxcare.1"}]}],"versions":["0.2.10"],"bundled":8},{"source":"osv","ecosystem":"Debian:12","package":"node-marked","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.6+dfsg-1"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"node-marked","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.6+dfsg-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"node-marked","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.6+dfsg-1"}]}]},{"source":"osv","ecosystem":"npm","package":"marked","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.3.6"}]}]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"node-marked","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.3.2+dfsg-1"]}],"products":[{"vendor":"hackerone","product":"marked node module"},{"vendor":"marked_project","product":"marked"}],"references":[{"url":"https://nodesecurity.io/advisories/101","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory","report"]},{"url":"https://github.com/chjj/marked/pull/592/commits/2cff85979be8e7a026a9aca35542c470cf5da523","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web","report"]},{"url":"https://github.com/chjj/marked/pull/592","tags":["x_refsource_MISC","x_transferred","Exploit","Issue Tracking","Third Party Advisory","report","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2016-10531","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-vfvf-mqq8-rwqc","tags":["advisory"]},{"url":"https://www.npmjs.com/advisories/101","tags":["web"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2016-10531","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2016-10531","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2016-10531","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2016-10531","description":"marked is an application that is meant to parse and compile markdown. Due to the way that marked 0.3.5 and earlier parses input, specifically HTML entities, it's possible to bypass marked's content injection protection (`sanitize: true`) to inject a `javascript:` URL. This flaw exists because `\u0026#xNNanything;` gets parsed to what it could and leaves the rest behind, resulting in just `anything;` being left.","status":"published","published":"2018-05-31T20:00:00Z","modified":"2024-09-17T04:28:55.235Z","cwes":["CWE-79"],"updated_at":"2026-11-02T14:33:31.117878Z"}],"euvd":[{"id":"EUVD-2019-0347","description":"marked is an application that is meant to parse and compile markdown. Due to the way that marked 0.3.5 and earlier parses input, specifically HTML entities, it's possible to bypass marked's content injection protection (`sanitize: true`) to inject a `javascript:` URL. This flaw exists because `\u0026#xNNanything;` gets parsed to what it could and leaves the rest behind, resulting in just `anything;` being left.","status":"published","published":"2018-05-31T20:00:00Z","modified":"2024-09-17T04:28:55Z","updated_at":"2026-11-03T00:28:23.116921Z"}],"ghsa":[{"id":"GHSA-vfvf-mqq8-rwqc","title":"Sanitization bypass using HTML Entities in marked","description":"Affected versions of `marked` are susceptible to a cross-site scripting vulnerability in link components when `sanitize:true` is configured. \n\n## Proof of Concept\n\nThis flaw exists because link URIs containing HTML entities get processed in an abnormal manner. Any HTML Entities get parsed on a best-effort basis and included in the resulting link, while if that parsing fails that character is omitted.\n\nFor example:\n\nA link URI such as\n```\njavascript\u0026#x58document;alert\u0026#40;1\u0026#41;\n```\nRenders a valid link that when clicked will execute `alert(1)`.\n\n\n## Recommendation\n\nUpdate to version 0.3.6 or later.","status":"published","published":"2019-02-18T23:58:20Z","modified":"2023-09-07T22:23:30Z","cvss":[{"version":"3.0","score":6.1,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:37:03.287418Z"}],"nvd":[{"id":"CVE-2016-10531","description":"marked is an application that is meant to parse and compile markdown. Due to the way that marked 0.3.5 and earlier parses input, specifically HTML entities, it's possible to bypass marked's content injection protection (`sanitize: true`) to inject a `javascript:` URL. This flaw exists because `\u0026#xNNanything;` gets parsed to what it could and leaves the rest behind, resulting in just `anything;` being left.","status":"published","published":"2018-05-31T20:29:01.033Z","modified":"2026-06-17T00:39:53.253Z","cvss":[{"version":"3.0","score":6.1,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"primary"},{"version":"2.0","score":4.3,"vector":"AV:N/AC:M/Au:N/C:N/I:P/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:03:39.176887Z"}],"osv":[{"id":"CVE-2016-10531","description":"marked is an application that is meant to parse and compile markdown. Due to the way that marked 0.3.5 and earlier parses input, specifically HTML entities, it's possible to bypass marked's content injection protection (`sanitize: true`) to inject a `javascript:` URL. This flaw exists because `\u0026#xNNanything;` gets parsed to what it could and leaves the rest behind, resulting in just `anything;` being left.","status":"published","published":"2018-05-31T20:29:01.033Z","modified":"2026-10-20T10:47:35.015434752Z","cvss":[{"version":"3.0","score":6.1,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T15:44:01.531338Z"},{"id":"DEBIAN-CVE-2016-10531","description":"marked is an application that is meant to parse and compile markdown. Due to the way that marked 0.3.5 and earlier parses input, specifically HTML entities, it's possible to bypass marked's content injection protection (`sanitize: true`) to inject a `javascript:` URL. This flaw exists because `\u0026#xNNanything;` gets parsed to what it could and leaves the rest behind, resulting in just `anything;` being left.","status":"published","published":"2018-05-31T20:29:01.033Z","modified":"2026-09-22T07:01:21.0810294Z","cvss":[{"version":"3.0","score":6.1,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T15:45:27.323751Z"},{"id":"GHSA-vfvf-mqq8-rwqc","title":"Sanitization bypass using HTML Entities in marked","description":"Affected versions of `marked` are susceptible to a cross-site scripting vulnerability in link components when `sanitize:true` is configured. \n\n## Proof of Concept\n\nThis flaw exists because link URIs containing HTML entities get processed in an abnormal manner. Any HTML Entities get parsed on a best-effort basis and included in the resulting link, while if that parsing fails that character is omitted.\n\nFor example:\n\nA link URI such as\n```\njavascript\u0026#x58document;alert\u0026#40;1\u0026#41;\n```\nRenders a valid link that when clicked will execute `alert(1)`.\n\n\n## Recommendation\n\nUpdate to version 0.3.6 or later.","status":"published","published":"2019-02-18T23:58:20Z","modified":"2023-11-08T03:58:10.90303Z","cvss":[{"version":"3.0","score":6.1,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:46:57.348035Z"},{"id":"UBUNTU-CVE-2016-10531","description":"marked is an application that is meant to parse and compile markdown. Due to the way that marked 0.3.5 and earlier parses input, specifically HTML entities, it's possible to bypass marked's content injection protection (`sanitize: true`) to inject a `javascript:` URL. This flaw exists because `\u0026#xNNanything;` gets parsed to what it could and leaves the rest behind, resulting in just `anything;` being left.","status":"published","published":"2018-05-31T20:29:00Z","modified":"2025-10-24T04:46:00Z","cvss":[{"version":"3.0","score":6.1,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T15:54:11.492576Z"},{"id":"CLSA-2026-1773188128","title":"TuxCare security update for marked (8 CVEs)","description":"TuxCare rebuilt marked to address 8 CVEs. Fixed in 0.2.10-tuxcare.1.","status":"published","published":"2026-08-04T14:52:12Z","modified":"2026-10-23T13:58:15.013134856Z","updated_at":"2026-11-02T15:43:43.249928Z"}]}}
