{
  "affected": [
    {
      "ranges": [
        {
          "database_specific": {
            "cpe": [
              "cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*",
              "cpe:2.3:a:discourse:discourse:2026.3.0:*:*:*:latest:*:*:*"
            ],
            "extracted_events": [
              {
                "introduced": "2026.1.0"
              },
              {
                "fixed": "2026.1.2"
              },
              {
                "introduced": "2026.2.0"
              },
              {
                "fixed": "2026.2.1"
              },
              {
                "introduced": "2026.3.0"
              },
              {
                "last_affected": "2026.3.0"
              }
            ],
            "source": [
              "CPE_RANGE",
              "CPE_STRING",
              "REFERENCES"
            ]
          },
          "events": [
            {
              "introduced": "322d3c0ac6a8f133b3f82875e9dbbe310f638c1b"
            },
            {
              "fixed": "808b2ac23d8ff421563b40203091026732471c60"
            },
            {
              "introduced": "f7cec86997edc21d6074ceb7666f7e2e6e1b1fdf"
            },
            {
              "fixed": "f38464e46df1b8c51f7d60826502476908d6bb2b"
            },
            {
              "introduced": "896e810e1b296478bba91559a8fc89a9926f11fe"
            },
            {
              "fixed": "80b19c15fe9c7bc890d1a54f454c8446312ac6d2"
            },
            {
              "fixed": "d8467b9fbb3d9ed6047b4e508d3fef88a37b8a02"
            },
            {
              "fixed": "f99099cfbc6b76fe39d6fa2daa48efd69497fb8e"
            }
          ],
          "repo": "https://github.com/discourse/discourse",
          "type": "GIT"
        }
      ],
      "versions": [
        "2026.3.0",
        "= 2026.3.0-latest"
      ]
    }
  ],
  "aliases": [
    "GHSA-95r5-p6qr-hgw6"
  ],
  "database_specific": {
    "cna_assigner": "GitHub_M",
    "cwe_ids": [
      "CWE-284"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/33xxx/CVE-2026-33393.json"
  },
  "details": "Discourse is an open-source discussion platform. Prior to versions 2026.3.0-latest.1, 2026.2.1, and 2026.1.2, the `allowed_spam_host_domains` check used `String#end_with?` without domain boundary validation, allowing domains like `attacker-example.com` to bypass spam protection when `example.com` was allowlisted. Versions 2026.3.0-latest.1, 2026.2.1, and 2026.1.2 require exact match or proper subdomain match (preceded by `.`) to prevent suffix-based bypass of `newuser_spam_host_threshold`. No known workarounds are available.",
  "id": "CVE-2026-33393",
  "modified": "2026-07-15T01:49:05.030200773Z",
  "published": "2026-03-19T22:04:26.484Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/33xxx/CVE-2026-33393.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/discourse/discourse/security/advisories/GHSA-95r5-p6qr-hgw6"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-33393"
    },
    {
      "type": "FIX",
      "url": "https://github.com/discourse/discourse/commit/80b19c15fe9c7bc890d1a54f454c8446312ac6d2"
    },
    {
      "type": "FIX",
      "url": "https://github.com/discourse/discourse/commit/d8467b9fbb3d9ed6047b4e508d3fef88a37b8a02"
    },
    {
      "type": "FIX",
      "url": "https://github.com/discourse/discourse/commit/f99099cfbc6b76fe39d6fa2daa48efd69497fb8e"
    }
  ],
  "schema_version": "1.8.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 fixes loose hostname matching in spam host allowlist"
}