HTML injection via topic embedding in Discourse
Discourse is an open source platform for community discussion. This vulnerability is not exploitable on the default install of Discourse. A custom feature must be enabled for it to work at all, and the attacker’s payload must pass the CSP to be executed. However, if an attacker succeeds in embedding Javascript that does pass the CSP, it could result in session hijacking for any users that view the attacker’s post. The vulnerability is patched in the latest tests-passed, beta and stable branches. Users are advised to upgrade. Users unable to upgrade should enable and/or restore your site's CSP to the default one provided with Discourse. Remove any embed-able hosts configured.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2023-29196
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 8 Nov 2026, 00:52 UTC · Revision 1
Source evidence
HTML injection via topic embedding in Discourse
core-osv · Original sourcePublished 18 Apr 2023, 21:24 UTC
Discourse is an open source platform for community discussion. This vulnerability is not exploitable on the default install of Discourse. A custom feature must be enabled for it to work at all, and the attacker’s payload must pass the CSP to be executed. However, if an attacker succeeds in embedding Javascript that does pass the CSP, it could result in session hijacking for any users that view the attacker’s post. The vulnerability is patched in the latest tests-passed, beta and stable branches. Users are advised to upgrade. Users unable to upgrade should enable and/or restore your site's CSP to the default one provided with Discourse. Remove any embed-able hosts configured.
osv:CVE-2023-29196
Complete source record
{
"id": "7ccba8c4d70aa3879acdbc5e80d4c884fb9c3d61030d524baafb2027215b6225",
"url": "https://osv.dev/vulnerability/CVE-2023-29196",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "HTML injection via topic embedding in Discourse",
"summary": "Discourse is an open source platform for community discussion. This vulnerability is not exploitable on the default install of Discourse. A custom feature must be enabled for it to work at all, and the attacker’s payload must pass the CSP to be executed. However, if an attacker succeeds in embedding Javascript that does pass the CSP, it could result in session hijacking for any users that view the attacker’s post. The vulnerability is patched in the latest tests-passed, beta and stable branches. Users are advised to upgrade. Users unable to upgrade should enable and/or restore your site's CSP to the default one provided with Discourse. Remove any embed-able hosts configured.",
"evidence": "osv:CVE-2023-29196",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2023-29196",
"aliases": [
"BIT-discourse-2023-29196",
"CVE-2023-29196",
"GHSA-986p-4x8q-8f48"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/discourse/discourse",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "59dd20c4153cef96ff0e848a087af4464a4bdcce"
},
{
"fixed": "0876f262e932da2478ed1d2ec275bd2153001213"
},
{
"introduced": "17daf077e2f11def391859f83d294bb71760b1cf"
},
{
"last_affected": "6b5743ba3cc06da4f8978299c31360a297bfc41d"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:discourse:discourse:*:*:*:*:stable:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "3.0.3"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:discourse:discourse:*:*:*:*:beta:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "3.1.0"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:discourse:discourse:3.1.0:beta1:*:*:beta:*:*:*",
"range": [
{
"introduced": "3.1.0-beta1"
},
{
"last_affected": "3.1.0-beta1"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:discourse:discourse:3.1.0:beta2:*:*:beta:*:*:*",
"range": [
{
"introduced": "3.1.0-beta2"
},
{
"last_affected": "3.1.0-beta2"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:discourse:discourse:3.1.0:beta3:*:*:beta:*:*:*",
"range": [
{
"introduced": "3.1.0-beta3"
},
{
"last_affected": "3.1.0-beta3"
}
],
"source": "CPE_STRING"
}
]
}
}
],
"versions": [
"3.1.0-beta1",
"3.1.0-beta2",
"3.1.0-beta3",
"beta: < 3.1.0.beta4",
"stable: < 3.0.3",
"v3.0.2",
"v3.1.0.beta3",
"v3.0.1",
"v3.1.0.beta2",
"v3.0.0",
"v3.1.0.beta1",
"v2.8.14",
"v2.8.13",
"v2.8.12",
"v2.8.11",
"v2.8.10",
"v2.8.9",
"v2.8.8",
"v2.8.7",
"v2.8.6",
"v2.8.5",
"v2.8.4",
"v2.8.3",
"v2.8.2",
"v2.8.1",
"v2.8.0",
"v2.7.13",
"v2.7.12",
"v2.7.11",
"v2.7.10",
"v2.7.9",
"v2.7.8",
"v2.7.7",
"v2.7.6",
"v2.7.5",
"v2.7.4",
"v2.7.3",
"v2.7.2",
"v2.7.1",
"v2.7.0",
"v2.6.7",
"v2.6.6",
"v2.6.5",
"v2.6.4",
"v2.6.3",
"v2.6.2",
"v2.6.1",
"v2.6.0",
"v2.5.5",
"v2.5.4",
"v2.5.3",
"v2.5.2",
"v2.5.1",
"v2.5.0",
"v2.4.5",
"v2.4.4",
"v2.4.3",
"v2.4.2",
"v2.4.1",
"v2.4.0",
"v2.3.10",
"v2.3.9",
"v2.3.8",
"v2.3.7",
"v2.3.6",
"v2.3.5",
"v2.3.4",
"v2.3.3",
"v2.3.2",
"v2.3.1",
"v2.3.0",
"v2.2.6",
"v2.2.5",
"v2.2.4",
"v2.2.3",
"v2.2.2",
"v2.2.1",
"v2.2.0",
"v2.1.8",
"v2.1.7",
"v2.1.6",
"v2.1.5",
"v2.1.4",
"v2.1.3",
"v2.1.2",
"v2.1.1",
"v2.1.0",
"v2.0.5",
"v2.0.4",
"v2.0.3",
"v2.0.2",
"v2.0.1",
"v2.0.0",
"v1.9.7",
"v1.9.6",
"v1.9.5",
"v1.9.4",
"v1.9.3",
"v1.9.2",
"v1.9.1",
"v1.9.0",
"v1.8.11",
"v1.8.10",
"v1.8.9",
"v1.8.8",
"v1.8.7",
"v1.8.6",
"v1.8.5",
"v1.8.4",
"v1.8.3",
"v1.8.2",
"v1.8.1",
"v1.8.0",
"v1.7.10",
"v1.7.9",
"v1.7.8",
"v1.7.7",
"v1.7.6",
"v1.7.5",
"v1.7.4",
"v1.7.3",
"v1.7.2",
"v1.7.1",
"v1.7.0",
"v1.6.10",
"v1.6.9",
"v1.6.8",
"v1.6.7",
"v1.6.6",
"v1.6.5",
"v1.6.4",
"v1.6.3",
"v1.6.2",
"v1.6.1",
"v1.6.0",
"v1.5.4",
"v1.5.3",
"v1.5.2",
"v1.5.1",
"v1.5.0",
"v1.4.7",
"v1.4.6",
"v1.4.5",
"v1.4.4",
"v1.4.3",
"v1.4.2",
"v1.4.1",
"v1.4.0",
"v1.3.5",
"v1.3.4",
"v1.3.3",
"v1.3.2",
"v1.3.1",
"v1.3.0",
"v1.2.4",
"v1.2.3",
"v1.2.2",
"v1.2.1",
"v1.2.0",
"v1.1.3",
"v1.1.2",
"v1.1.1",
"v1.1.0",
"v1.0.4",
"v1.0.3",
"v1.0.2",
"v1.0.1",
"v1.0.0",
"v0.9.9.18",
"v0.9.9.17",
"v0.9.9.16",
"v0.9.9.15",
"v0.9.9.14",
"v0.9.9.13",
"v0.9.9.12",
"v0.9.9.11",
"v0.9.9.10",
"v0.9.9.9",
"v0.9.9.8",
"v0.9.9.7",
"v0.9.9.6",
"v0.9.9.5",
"v0.9.9.4",
"v0.9.9.3",
"v0.9.9.2",
"v0.9.9.1",
"v0.9.8.11",
"v0.9.8.10",
"v0.9.8.9",
"v0.9.8.8",
"v0.9.8.7",
"v0.9.8.6",
"v0.9.8.5",
"v0.9.8.4",
"v0.9.8.3",
"v0.9.8.2",
"v0.9.8.1",
"v0.9.8",
"v0.9.7.9",
"v0.9.7.8",
"v0.9.7.7",
"v0.9.7.6",
"v0.9.7.5",
"v0.9.7.4",
"v0.9.7.3",
"v0.9.7.2",
"v0.9.7.1",
"v0.9.7",
"v0.9.6.4",
"v0.9.6.3",
"v0.9.6.1",
"v0.9.6",
"v0.9.5.2",
"v0.9.5.1",
"v0.9.5",
"v0.9.4",
"v0.9.3",
"v0.9.2.6",
"v0.9.2.5",
"v0.9.2",
"v0.9.1",
"v0.9.0",
"v0.8.9",
"v0.8.8",
"v0.8.7",
"v0.8.6",
"v0.8.5",
"v0.8.4",
"v0.8.3",
"v0.8.2",
"v0.8.1",
"v0.8.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-29196.json"
}
}
],
"modified": "2026-10-28T02:30:52.370672246Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/29xxx/CVE-2023-29196.json",
"https://github.com/discourse/discourse/security/advisories/GHSA-986p-4x8q-8f48",
"https://nvd.nist.gov/vuln/detail/CVE-2023-29196"
],
"provider_metadata": {
"cwe_ids": [
"CWE-79"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/29xxx/CVE-2023-29196.json"
}
},
"related_cves": [
{
"value": "CVE-2023-29196",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 521115,
"published_at": "2023-04-18T21:24:10.098+00:00"
}