Skip to content
Heist/ feed
Back to feed
Medium

HTML injection via topic embedding in Discourse

Type: advisorySources: OSV

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 source

Published 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"
}