Skip to content
Heist/ feed
Back to feed
Medium

Discourse: Encode action_code_who in mention URLs

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, the topic small-action and nested-activity-log components interpolated the free-form action_code_who value into mention-link href attributes without URL encoding. A quote-bearing display name could terminate the intended URL attribute and inject attacker-controlled elements into the trusted rendered markup. Although the visible mention text was escaped, the unencoded path component allowed stored HTML injection when another user viewed the affected topic action or activity log. 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-91119
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 13:03 UTC · Revision 1

Source evidence

Discourse: Encode action_code_who in mention URLs

core-osv · Original source

Published 24 Sept 2026, 17:07 UTC

Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, the topic small-action and nested-activity-log components interpolated the free-form action_code_who value into mention-link href attributes without URL encoding. A quote-bearing display name could terminate the intended URL attribute and inject attacker-controlled elements into the trusted rendered markup. Although the visible mention text was escaped, the unencoded path component allowed stored HTML injection when another user viewed the affected topic action or activity log. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.

osv:CVE-2026-91119
Complete source record
{
  "id": "2b703f0f0300c357f87cd0d2c41a1e7720d4e336b2285b6b6865a677e7fe65e6",
  "url": "https://osv.dev/vulnerability/CVE-2026-91119",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Discourse: Encode action_code_who in mention URLs",
    "summary": "Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, the topic small-action and nested-activity-log components interpolated the free-form action_code_who value into mention-link href attributes without URL encoding. A quote-bearing display name could terminate the intended URL attribute and inject attacker-controlled elements into the trusted rendered markup. Although the visible mention text was escaped, the unencoded path component allowed stored HTML injection when another user viewed the affected topic action or activity log. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.",
    "evidence": "osv:CVE-2026-91119",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-91119",
      "aliases": [
        "BIT-discourse-2026-91119",
        "CVE-2026-91119",
        "GHSA-pv3p-p3m9-v8v3"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/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": "20dbf112760eb1d6a58f2e49aeef7546898b6f1c"
                },
                {
                  "fixed": "66653c484cfb91bc346f9a326f6945387f17b035"
                },
                {
                  "fixed": "77a81c7a3a7ff9e94b355e32b8f379f2d389e05a"
                },
                {
                  "fixed": "c4748f651d9d2f3a6dd3106a4d5564536c645168"
                }
              ],
              "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": "20dbf112760eb1d6a58f2e49aeef7546898b6f1c"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "66653c484cfb91bc346f9a326f6945387f17b035"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "77a81c7a3a7ff9e94b355e32b8f379f2d389e05a"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "c4748f651d9d2f3a6dd3106a4d5564536c645168"
                      }
                    ],
                    "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-91119.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:50.733528722Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91119.json",
        "https://github.com/discourse/discourse/security/advisories/GHSA-pv3p-p3m9-v8v3",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-91119",
        "https://github.com/discourse/discourse/commit/20dbf112760eb1d6a58f2e49aeef7546898b6f1c",
        "https://github.com/discourse/discourse/commit/66653c484cfb91bc346f9a326f6945387f17b035",
        "https://github.com/discourse/discourse/commit/77a81c7a3a7ff9e94b355e32b8f379f2d389e05a",
        "https://github.com/discourse/discourse/commit/c4748f651d9d2f3a6dd3106a4d5564536c645168",
        "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-91119.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-91119",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 519379,
  "published_at": "2026-09-24T17:07:04.367+00:00"
}