CVE-2026-91134
Deferred Deferred - Pending Action

Stored XSS in Discourse via Encoded Iframe src

Vulnerability report for CVE-2026-91134, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-24

Last updated on: 2026-09-29

Assigner: GitHub, Inc.

Description

Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, the Discourse post sanitizer allowed a stored cross-origin iframe to bypass the allowed_iframes prefix policy when the iframe src contained encoded userinfo. The sanitizer validated a decoded form differently from the stored iframe src, allowing the browser to interpret an attacker-controlled host while the allowlist check accepted the encoded URL as an allowed prefix. An authenticated user with posting privileges could persist the iframe in a post and cause attacker-controlled cross-origin content to be rendered. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-24
Last Modified
2026-09-29
Generated
2026-10-15
AI Q&A
2026-09-24
EPSS Evaluated
2026-10-13
NVD
EUVD

Affected Vendors & Products

Showing 5 associated CPEs
Vendor Product Version / Range
discourse discourse 2026.1.8
discourse discourse 2026.6.3
discourse discourse 2026.7.2
discourse discourse 2026.8.0
discourse discourse to 2026.1.8 (exc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-20 The product receives input or data, but it does not validate or incorrectly validates that the input has the properties that are required to process the data safely and correctly.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This is a stored cross-site scripting (XSS) vulnerability in Discourse, an open-source discussion platform. It allows an attacker with posting privileges to embed a malicious iframe in a post that bypasses the allowed_iframes security policy. The issue occurs due to inconsistent validation between the decoded and encoded forms of the iframe src attribute, enabling the browser to render attacker-controlled cross-origin content.

Detection Guidance

This vulnerability can be detected by checking if your Discourse instance is running a vulnerable version (prior to 2026.1.8, 2026.6.3, 2026.7.2, or 2026.8.0). Inspect posts for iframes with encoded userinfo in the src attribute that may bypass the allowed_iframes policy. Review server logs for suspicious iframe rendering behavior.

Impact Analysis

An attacker could exploit this to inject malicious iframes into posts, potentially leading to phishing attacks, session hijacking, or unauthorized actions on behalf of users. Users viewing the compromised posts may unknowingly interact with malicious content, risking data theft or malware exposure.

Compliance Impact

This vulnerability could lead to unauthorized data access or exposure, violating GDPR's data protection principles or HIPAA's security requirements for protected health information. Organizations using vulnerable Discourse versions may face compliance violations, legal liabilities, or reputational damage.

Mitigation Strategies

Update Discourse to versions 2026.1.8, 2026.6.3, 2026.7.2, or 2026.8.0 or later to fix the issue.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-91134. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart