Discourse is an open-source discussion platform. Prior to versions 2026.3.0, 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, 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.
{
"cpes": [
"cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*"
],
"severity": "Medium"
}