{"id":"CVE-2026-59830","aliases":["BIT-discourse-2026-59830","EUVD-2026-84181","GHSA-x6mf-p7cg-69rw"],"status":"published","title":"Discourse: Stored XSS via unescaped actor name in post actions","description":"Discourse is an open-source discussion platform. Prior to 2026.7.0, the post action component failed to escape user-controlled display names before interpolating them into an HTML string passed to trustHTML. A user who could choose a crafted display name could persist markup in post action descriptions. Viewing the affected user activity streams could execute attacker-controlled script in another user's browser. This issue is fixed in version 2026.7.0.","severity":{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00289,"percentile":0.2161,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-79"],"published":"2026-09-21T21:17:38Z","modified":"2026-11-11T02:49:04Z","fixes":[{"ecosystem":"Bitnami","package":"discourse","fixed_in":["2026.7.0"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Bitnami","package":"discourse","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2026.7.0"}]}]}],"products":[{"vendor":"discourse","product":"discourse"}],"references":[{"url":"https://github.com/discourse/discourse/security/advisories/GHSA-x6mf-p7cg-69rw","tags":["x_refsource_CONFIRM","web","advisory"]},{"url":"https://github.com/discourse/discourse/commit/dd786594ddd088657a7e6f9fefba5bd889965fe4","tags":["x_refsource_MISC","web","fix"]},{"url":"https://github.com/discourse/discourse/releases/tag/v2026.7.0","tags":["x_refsource_MISC","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-59830","tags":["web","advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59830.json","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-59830","title":"Discourse: Stored XSS via unescaped actor name in post actions","description":"Discourse is an open-source discussion platform. Prior to 2026.7.0, the post action component failed to escape user-controlled display names before interpolating them into an HTML string passed to trustHTML. A user who could choose a crafted display name could persist markup in post action descriptions. Viewing the affected user activity streams could execute attacker-controlled script in another user's browser. This issue is fixed in version 2026.7.0.","status":"published","published":"2026-09-21T21:17:38.733Z","modified":"2026-09-22T15:38:41.155Z","cvss":[{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:19:58.944663Z"}],"euvd":[{"id":"EUVD-2026-84181","description":"Discourse is an open-source discussion platform. Prior to 2026.7.0, the post action component failed to escape user-controlled display names before interpolating them into an HTML string passed to trustHTML. A user who could choose a crafted display name could persist markup in post action descriptions. Viewing the affected user activity streams could execute attacker-controlled script in another user's browser. This issue is fixed in version 2026.7.0.","status":"published","published":"2026-09-21T21:17:38Z","modified":"2026-09-22T15:38:41Z","cvss":[{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T17:28:02.937716Z"}],"nvd":[{"id":"CVE-2026-59830","description":"Discourse is an open-source discussion platform. Prior to 2026.7.0, the post action component failed to escape user-controlled display names before interpolating them into an HTML string passed to trustHTML. A user who could choose a crafted display name could persist markup in post action descriptions. Viewing the affected user activity streams could execute attacker-controlled script in another user's browser. This issue is fixed in version 2026.7.0.","status":"published","published":"2026-09-21T22:16:57.353Z","modified":"2026-09-23T17:17:50.143Z","cvss":[{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:12:50.368368Z"}],"osv":[{"id":"CVE-2026-59830","title":"Discourse: Stored XSS via unescaped actor name in post actions","description":"Discourse is an open-source discussion platform. Prior to 2026.7.0, the post action component failed to escape user-controlled display names before interpolating them into an HTML string passed to trustHTML. A user who could choose a crafted display name could persist markup in post action descriptions. Viewing the affected user activity streams could execute attacker-controlled script in another user's browser. This issue is fixed in version 2026.7.0.","status":"published","published":"2026-09-21T21:17:38.733Z","modified":"2026-11-11T10:47:32.051814678Z","cvss":[{"version":"3.1","score":5.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-11T03:21:28.618498Z"},{"id":"BIT-discourse-2026-59830","title":"Discourse: Stored XSS via unescaped actor name in post actions","description":"Discourse is an open-source discussion platform. Prior to 2026.7.0, the post action component failed to escape user-controlled display names before interpolating them into an HTML string passed to trustHTML. A user who could choose a crafted display name could persist markup in post action descriptions. Viewing the affected user activity streams could execute attacker-controlled script in another user's browser. This issue is fixed in version 2026.7.0.","status":"published","published":"2026-09-29T08:46:16.108Z","modified":"2026-09-29T10:10:58.2913795Z","updated_at":"2026-11-02T15:28:29.152062Z"}]}}
