CVE-2026-55674: Discourse stored XSS via color scheme cookies

CVE-2026-55674 · Severity: critical · CVSS 9.3 · Published 2026-08-17

Discourse is an open-source discussion platform used by organizations to host forums and communities. An unauthenticated attacker can exploit a vulnerability in how color scheme cookies are processed to inject malicious JavaScript that executes in the browsers of all anonymous visitors. Because the malicious response is cached, a single attack request affects all subsequent anonymous users, enabling credential theft, phishing, account compromise, and full client-side exploitation.

Technologies: Discourse. Vendors: Discourse.

Quick answers

Is CVE-2026-55674 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-55674 being exploited in the wild.
How severe is CVE-2026-55674?
Critical severity, with a CVSS score of 9.3, published 17 August 2026.
Which products and versions are affected?
Discourse prior to 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0.
Is there a fix for CVE-2026-55674?
A patch was published on 2026-08-17: Discourse 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0 Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-55674 attacked?
It is attacked over the network.
Am I affected by CVE-2026-55674?
Check whether you run Discourse at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

Technical details

This is a stored cross-site scripting (XSS) vulnerability arising from improper output encoding of user-controlled cookie values. The attacker crafts a color_scheme_id or dark_scheme_id cookie containing arbitrary HTML/JavaScript that is rendered into a color scheme tag without HTML escaping. By injecting a closing tag followed by a new script tag, the attacker bypasses Discourse's nonce-based Content Security Policy. Because these cookies were not part of the anonymous cache key, the poisoned HTTP response was cached globally and served to all subsequent anonymous visitors (scoped per User-Agent), converting a single request into a persistent stored XSS. No authentication or user interaction is required to trigger the vulnerability—only that anonymous visitors access the poisoned cached page. Successful exploitation leads to session hijacking, credential theft, phishing redirects, and full browser compromise. The vulnerability is fixed in Discourse versions 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0.

Affected products

  • Discourse Discourse prior to 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0

Timeline

  • 2026-07-28: disclosed
  • 2026-08-17: advisory
  • 2026-08-17: patched: Discourse 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.