Skip to content
Heist/ feed
Back to feed
Medium

Discourse: Stored HTML injection in video notification emails

Type: advisorySources: OSV

Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, provider-controlled video titles in lazy video embeds could be reparsed as HTML when Discourse generated notification emails or chat summaries. A user with standard posting privileges could create a post for an enabled YouTube, Vimeo, or TikTok provider whose title contained markup, and the email and chat-summary rendering path would place that markup into the output instead of treating it solely as text. Recipients using HTML-capable email clients could see injected content, potentially including event handlers, but the issue did not directly expose a Discourse browser session or affect the forum page itself. Lazy video embeds must be enabled, which is the default configuration. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-91120
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 14:13 UTC · Revision 1

Source evidence

Discourse: Stored HTML injection in video notification emails

core-osv · Original source

Published 24 Sept 2026, 17:00 UTC

Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, provider-controlled video titles in lazy video embeds could be reparsed as HTML when Discourse generated notification emails or chat summaries. A user with standard posting privileges could create a post for an enabled YouTube, Vimeo, or TikTok provider whose title contained markup, and the email and chat-summary rendering path would place that markup into the output instead of treating it solely as text. Recipients using HTML-capable email clients could see injected content, potentially including event handlers, but the issue did not directly expose a Discourse browser session or affect the forum page itself. Lazy video embeds must be enabled, which is the default configuration. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.

osv:CVE-2026-91120
Complete source record
{
  "id": "6af0c5d1c03513095c3d3234ab996299eb8790f4c91af5a36e1ecb7c8dd69db2",
  "url": "https://osv.dev/vulnerability/CVE-2026-91120",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Discourse: Stored HTML injection in video notification emails",
    "summary": "Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, provider-controlled video titles in lazy video embeds could be reparsed as HTML when Discourse generated notification emails or chat summaries. A user with standard posting privileges could create a post for an enabled YouTube, Vimeo, or TikTok provider whose title contained markup, and the email and chat-summary rendering path would place that markup into the output instead of treating it solely as text. Recipients using HTML-capable email clients could see injected content, potentially including event handlers, but the issue did not directly expose a Discourse browser session or affect the forum page itself. Lazy video embeds must be enabled, which is the default configuration. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.",
    "evidence": "osv:CVE-2026-91120",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-91120",
      "aliases": [
        "BIT-discourse-2026-91120",
        "CVE-2026-91120",
        "GHSA-h7cg-2vww-m45c"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/discourse/discourse",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "fb9247e04a826ab8e4d91168b3c4c839ec40bccc"
                },
                {
                  "introduced": "ded677e00beb0e9bae6e70b69582aecfb72b5477"
                },
                {
                  "fixed": "3ab62a8397926ed934b667a5db06284c45b4c774"
                },
                {
                  "introduced": "06d03da34c4ed09ea59f917f045ba250d2b6320d"
                },
                {
                  "fixed": "777cb880553b517bc9ae502e935a160332e48b78"
                },
                {
                  "introduced": "322d3c0ac6a8f133b3f82875e9dbbe310f638c1b"
                },
                {
                  "fixed": "e808d0853e013abf90e648e53ebd606c49ccb19f"
                },
                {
                  "fixed": "6bf1cdcb3ae1aa146e1fd953a62046bf4a1f143f"
                },
                {
                  "fixed": "8338919df4ecbd0fb85314b762772cc033b764e3"
                },
                {
                  "fixed": "e7de8285203a2edf85beff3b951e66aeb7e5dc76"
                },
                {
                  "fixed": "ed8b47df80bcc9f0bd70773fc399c9386f9d52dd"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2026.8.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2026.7.0-latest"
                      },
                      {
                        "fixed": "2026.7.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2026.6.0-latest"
                      },
                      {
                        "fixed": "2026.6.3"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2026.1.0-latest"
                      },
                      {
                        "fixed": "2026.1.8"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "6bf1cdcb3ae1aa146e1fd953a62046bf4a1f143f"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "8338919df4ecbd0fb85314b762772cc033b764e3"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "e7de8285203a2edf85beff3b951e66aeb7e5dc76"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "ed8b47df80bcc9f0bd70773fc399c9386f9d52dd"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v2026.1.7",
            "v2026.7.1",
            "v2026.6.2",
            "v2026.1.6",
            "v2026.7.0",
            "v2026.6.1",
            "_gh-attach-assets",
            "v2026.1.5",
            "v2026.6.0",
            "v2026.7.0-latest",
            "v2026.6.0-latest",
            "v2026.1.4",
            "v2026.1.3",
            "v2026.1.2",
            "v2026.1.1",
            "v2026.1.0",
            "stable",
            "esr",
            "v2026.1.0-latest"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-91120.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:29.399950823Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91120.json",
        "https://github.com/discourse/discourse/security/advisories/GHSA-h7cg-2vww-m45c",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-91120",
        "https://github.com/discourse/discourse/commit/6bf1cdcb3ae1aa146e1fd953a62046bf4a1f143f",
        "https://github.com/discourse/discourse/commit/8338919df4ecbd0fb85314b762772cc033b764e3",
        "https://github.com/discourse/discourse/commit/e7de8285203a2edf85beff3b951e66aeb7e5dc76",
        "https://github.com/discourse/discourse/commit/ed8b47df80bcc9f0bd70773fc399c9386f9d52dd",
        "https://github.com/discourse/discourse/pull/42882"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-79"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91120.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-91120",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 496264,
  "published_at": "2026-09-24T17:00:05.331+00:00"
}