Skip to main content

Discourse CVE-2025-61598

MEDIUM
Use of Cache Containing Sensitive Information (CWE-524)
2025-10-28 security-advisories@github.com
6.3
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Discourse fronted by caching proxy
  2. Exploit
    Trigger error response (404/403) lacking cache headers
  3. Execution
    Intermediary proxy caches the response
  4. Impact
    Poisoned/stale response served to other users

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V3 - Web Frontend Security Cache-Control for sensitive pages
Exploitation Conditions

Exploitation requires an intermediary that caches HTTP responses (a shared forward/reverse proxy or CDN) sitting in front of the Discourse instance, AND that proxy must cache responses by default when no Cache-Control directive is present. The specific trigger is any error response path handled by the DiscoursePublicExceptions middleware - e.g. ActionController::RoutingError (404), Discourse::InvalidAccess (403), or an invalid API key - because those responses skipped the dont_cache_page after_action and shipped without no-cache, no-store. Limiting factors: the AT:P metric reflects that the attacker does not control whether/when the proxy caches and re-serves the response, impact is confidentiality-only and rated Low, and deployments that do not use a caching intermediary or that already enforce cache directives at the proxy are not exposed. Authentication is not required to send the triggering request.

Impact

This is a genuinely low-priority issue despite its CWE-524 (Use of Cache Containing Sensitive Information) classification. All exploitation signals point the same direction: EPSS is 0.30% (21st percentile), there is no CISA KEV listing, and no public exploit code was identified. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N) yields only 6.3 (Medium), and crucially the impact is limited to VC:L with VI:N and VA:N - no integrity or availability effect and only low confidentiality. The AT:P flag (attack requirement present) signals that exploitation depends on conditions outside the attacker's control, namely the presence and behavior of an intermediary cache. The signals are consistent rather than conflicting: a medium-scored, confidentiality-only header-hardening fix with low exploitation probability and no evidence of real-world abuse. One note of caution - the GitHub advisory (GHSA-jp9x-wwv6-cv3j) describes this as 'may cause unintended caching' and 'potentially leading to cache poisoning,' which is conditional language; the real-world impact depends entirely on whether a shared caching proxy fronts the deployment and what sensitive data those error responses contain.

Exploit ScenarioDerived

A Discourse instance sits behind a shared caching proxy or CDN. An attacker (or an ordinary request) triggers an error response - a 404 routing error or a 403 invalid-access/API-key response - which, before the fix, lacked the no-cache, no-store Cache-Control header. The proxy caches that response and subsequently serves it to other users, enabling cache poisoning or disclosure of a response that was meant to be per-request. No public exploit identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 19, 2026

Discourse stable releases before 3.6.2 and beta releases before 3.6.0.beta2 omit the default no-cache, no-store Cache-Control header on certain error responses, so a shared proxy or CDN could cache and later replay 404/403-style responses. The assessed impact is confidentiality-only and Low (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N), because exploitation requires an intermediary that caches responses when no cache directive is present. Vendor-released patch: 3.6.2 and 3.6.0.beta2; EPSS is 0.30% (21st percentile) and no public exploit identified at time of analysis.

RemediationAI

Upgrade to Discourse 3.6.2 or 3.6.0.beta2, which contain the vendor fix; the advisory at https://github.com/discourse/discourse/security/advisories/GHSA-jp9x-wwv6-cv3j and commits 3ea1b663c82c067e5ca778db846bad1e082ba6cd and fd567af7bf5a15c70772021acbdf5d38487a31bc document the change. If immediate upgrade is not possible, configure any reverse proxy, CDN, or shared forward proxy in front of Discourse to never cache error responses or to force Cache-Control: no-cache, no-store on 4xx/5xx responses from Discourse; this reduces exposure but shifts load to the origin and must be applied consistently across all cache layers. Verify after remediation that 404 and 403 responses carry Cache-Control: no-cache, no-store, especially for paths handled by DiscoursePublicExceptions.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Discourse is a Rails application whose ApplicationController normally applied an after_action, dont_cache_page, to add Cache-Control: no-cache, no-store to responses. Error paths handled by DiscoursePublicExceptions middleware - such as ActionController::RoutingError (404), Discourse::InvalidAccess (403), or invalid API key responses - instantiate a new controller outside the normal request/response cycle, so controller action hooks did not run and those responses shipped without the cache directive. This is CWE-524 (Use of Cache Containing Sensitive Information): the root cause is not direct data access but omission of anti-caching controls on error responses, which can let an intermediary store and re-serve content it should not retain. The upstream fix changes the hook to an around_action with an ensure block and explicitly calls dont_cache_page in the middleware path, and it forces ActionDispatch::Response#to_a so cache-control headers are set; tests cover 200, 404, and 403 responses and expect no-cache, no-store. CPE entries cover Discourse stable and beta trains, including 3.6.0.beta1.

Know when Discourse gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (github) PRIMARY 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.7 LOW

Network-reachable and unauthenticated (AV:N/PR:N), but AC:H because exploitation depends on an intermediary cache's uncontrolled caching behavior; confidentiality-only Low impact with no integrity or availability effect.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Discourse is an open source discussion platform. Version before 3.6.2 and 3.6.0.beta2, default Cache-Control response header with value no-store, no-cache was missing from error responses. This may caused unintended caching of those responses by proxies potentially leading to cache poisoning attacks. This vulnerability is fixed in 3.6.2 and 3.6.0.beta2.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Medium
popular open-source forum platform, widely self-hosted but not ubiquitous
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Affected Products (CPE)CVE.org

cpe:2.3:a:discourse:discourse:*:*:*:*:stable:*:*:*
cpe:2.3:a:discourse:discourse:*:*:*:*:beta:*:*:*
cpe:2.3:a:discourse:discourse:3.6.0:beta1:*:*:beta:*:*:*
CVE-2025-48954 HIGH POC
8.1 Jun 25

Discourse versions prior to 3.5.0.beta6 contain a reflected cross-site scripting (XSS) vulnerability in social login fun

CVE-2022-46162 CRITICAL POC
9.8 Nov 30

discourse-bbcode is the official BBCode plugin for Discourse. Rated critical severity (CVSS 9.8), this vulnerability is

CVE-2026-27934 HIGH POC
8.7 Mar 19

Unauthorized information disclosure in Discourse discussion platform versions prior to 2026.3.0-latest.1, 2026.2.1, and

CVE-2024-47773 HIGH POC
8.2 Oct 08

Discourse is an open source platform for community discussion. Rated high severity (CVSS 8.2), this vulnerability is rem

CVE-2026-26265 HIGH POC
7.5 Feb 26

Discourse versions prior to 2025.12.2, 2026.1.1, and 2026.2.0 contain an insecure direct object reference (IDOR) in the

CVE-2021-3138 HIGH POC
7.5 Jan 14

In Discourse 2.7.0 through beta1, a rate-limit bypass leads to a bypass of the 2FA requirement for certain forms. Rated

CVE-2026-26077 MEDIUM POC
6.5 Feb 26

Unauthenticated attackers can submit forged webhook payloads to multiple email provider integrations in Discourse versio

CVE-2023-38706 MEDIUM POC
6.5 Sep 15

Discourse is an open-source discussion platform. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploi

CVE-2024-53991 MEDIUM POC
5.9 Dec 19

Discourse is an open source platform for community discussion. Rated medium severity (CVSS 5.9), this vulnerability is r

CVE-2025-48877 CRITICAL
9.8 Jun 09

Discourse versions prior to 3.4.4 (stable), 3.5.0.beta5 (beta), and 3.5.0.beta6-dev (tests-passed) contain a critical vu

CVE-2023-47121 CRITICAL
9.8 Nov 10

Discourse is an open source platform for community discussion. Rated critical severity (CVSS 9.8), this vulnerability is

CVE-2022-39355 CRITICAL
9.8 Oct 26

Discourse Patreon enables syncronization between Discourse Groups and Patreon rewards. Rated critical severity (CVSS 9.8

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy