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.
Attack Parameters
Impact Assessment
CVSS Vector v3.1
Weakness Type (CWE)
Vulnerable Products 3
| Configuration | From (including) | Up to (excluding) |
|---|---|---|
|
Discourse Discourse
cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*
|
2026.1.0
|
2026.1.2
|
|
Discourse Discourse
cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*
|
2026.2.0
|
2026.2.1
|
|
Discourse Discourse
cpe:2.3:a:discourse:discourse:2026.3.0:*:*:*:latest:*:*:*
|
— | — |