{
  "affected": [
    {
      "ranges": [
        {
          "database_specific": {
            "extracted_events": [
              {
                "introduced": "0"
              },
              {
                "fixed": "2026.8.0"
              },
              {
                "introduced": "2026.7.0-latest"
              },
              {
                "fixed": "2026.7.2"
              },
              {
                "introduced": "2026.6.0-latest"
              },
              {
                "fixed": "2026.6.3"
              },
              {
                "introduced": "2026.1.0-latest"
              },
              {
                "fixed": "2026.1.8"
              }
            ],
            "source": [
              "AFFECTED_FIELD",
              "REFERENCES"
            ]
          },
          "events": [
            {
              "introduced": "0"
            },
            {
              "introduced": "ded677e00beb0e9bae6e70b69582aecfb72b5477"
            },
            {
              "introduced": "06d03da34c4ed09ea59f917f045ba250d2b6320d"
            },
            {
              "introduced": "322d3c0ac6a8f133b3f82875e9dbbe310f638c1b"
            },
            {
              "fixed": "fb9247e04a826ab8e4d91168b3c4c839ec40bccc"
            },
            {
              "fixed": "3ab62a8397926ed934b667a5db06284c45b4c774"
            },
            {
              "fixed": "777cb880553b517bc9ae502e935a160332e48b78"
            },
            {
              "fixed": "e808d0853e013abf90e648e53ebd606c49ccb19f"
            },
            {
              "fixed": "80968704c1acb1d2ea2c6011dbf6c02ff13238e5"
            },
            {
              "fixed": "d5ae0940707f95da5bc4562f7b544243e3103f8a"
            },
            {
              "fixed": "d88e02ceb2eede4d8b851d9fe8aef753f3aa40b9"
            },
            {
              "fixed": "db8064f2a2a2a3feb3308a1c932ac61d950c9e56"
            }
          ],
          "repo": "https://github.com/discourse/discourse",
          "type": "GIT"
        }
      ]
    }
  ],
  "aliases": [
    "GHSA-4q3q-hph3-3rvp"
  ],
  "database_specific": {
    "cna_assigner": "GitHub_M",
    "cwe_ids": [
      "CWE-346"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91132.json"
  },
  "details": "Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, sites using wildcard patterns in the allowed_iframes setting could accept a crafted iframe URL whose allowlisted suffix appeared after a URL authority separator. The wildcard origin check matched the allowed domain text, while browser URL parsing selected a different attacker-controlled origin. A user with posting privileges could exploit the flaw through a post or a Onebox oEmbed response and cause an attacker-controlled iframe to be rendered independently of the allowlisted domain. Successful exploitation requires a site-configured wildcard iframe pattern and the ability to create a post or trigger an oEmbed request for an attacker-controlled URL. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.",
  "id": "CVE-2026-91132",
  "modified": "2026-09-26T03:30:30.299587162Z",
  "published": "2026-09-24T16:57:43.082Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91132.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/discourse/discourse/security/advisories/GHSA-4q3q-hph3-3rvp"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-91132"
    },
    {
      "type": "FIX",
      "url": "https://github.com/discourse/discourse/commit/80968704c1acb1d2ea2c6011dbf6c02ff13238e5"
    },
    {
      "type": "FIX",
      "url": "https://github.com/discourse/discourse/commit/d5ae0940707f95da5bc4562f7b544243e3103f8a"
    },
    {
      "type": "FIX",
      "url": "https://github.com/discourse/discourse/commit/d88e02ceb2eede4d8b851d9fe8aef753f3aa40b9"
    },
    {
      "type": "FIX",
      "url": "https://github.com/discourse/discourse/commit/db8064f2a2a2a3feb3308a1c932ac61d950c9e56"
    },
    {
      "type": "FIX",
      "url": "https://github.com/discourse/discourse/pull/42882"
    }
  ],
  "schema_version": "1.9.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N",
      "type": "CVSS_V3"
    }
  ],
  "summary": "Discourse: Wildcard iframe origin allowlist bypass via authority separators"
}