Discourse — это дискуссионная платформа с открытым исходным кодом. До версий 2026.3.0-latest.1, 2026.2.1 и 2026.1.2 проверка `allowed_spam_host_domains` использовала `String#end_with?` без проверки границ домена, позволяя таким доменам, как `attacker-example.com`, обходить защиту от спама, когда `example.com` был внесен в список разрешенных. Версии 2026.3.0-latest.1, 2026.2.1 и 2026.1.2 требуют точного соответствия или правильного соответствия субдомена (перед которым стоит `.`), чтобы предотвратить обход `newuser_spam_host_threshold` на основе суффикса.
Никаких известных обходных путей не существует.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 3
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
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:*:*:*
|
— | — |