{"id":"CVE-2026-33393","summary":"Discourse fixes loose hostname matching in spam host allowlist","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.","aliases":["BIT-discourse-2026-33393","GHSA-95r5-p6qr-hgw6"],"modified":"2026-08-12T03:51:10.807045377Z","published":"2026-03-19T22:04:26.484Z","database_specific":{"cwe_ids":["CWE-284"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/33xxx/CVE-2026-33393.json","cna_assigner":"GitHub_M"},"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"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/discourse/discourse","events":[{"introduced":"322d3c0ac6a8f133b3f82875e9dbbe310f638c1b"},{"fixed":"808b2ac23d8ff421563b40203091026732471c60"},{"introduced":"f7cec86997edc21d6074ceb7666f7e2e6e1b1fdf"},{"fixed":"f38464e46df1b8c51f7d60826502476908d6bb2b"},{"introduced":"896e810e1b296478bba91559a8fc89a9926f11fe"},{"fixed":"80b19c15fe9c7bc890d1a54f454c8446312ac6d2"},{"fixed":"d8467b9fbb3d9ed6047b4e508d3fef88a37b8a02"},{"fixed":"f99099cfbc6b76fe39d6fa2daa48efd69497fb8e"}],"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"]}}],"versions":["2026.3.0","= 2026.3.0-latest","v2026.1.1","v2026.2.0","v2026.3.0-latest","v2026.1.0","stable","esr","v2026.2.0-latest","v2026.1.0-latest"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-33393.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N"}]}