Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain forum posting access
-
DeliveryCraft iframe src with dot-segment + backslash
-
ExploitBypass allowed_iframes subpath guard
-
ExecutionPost content embedding the iframe
-
PersistVictim views post, browser normalizes URL
-
ImpactIframe loads admin-disallowed content in forum context
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the administrator to have configured the |
| Impact | Moderate, non-priority risk. The NVD CVSS 3.1 base score is 7.2 (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N), but the impact metrics are low across the board (C:L/I:L/A:N) and the 'High' tier here comes mostly from the scope change (S:C) plus PR:N/UI:N - not from severe technical impact. There is no EPSS score, no CISA KEV listing, and no public POC in the provided data, so the exploitation status is 'no public exploit identified at time of analysis.' No SSVC decision was supplied. A notable conflict: NVD scores this PR:N (unauthenticated), yet the vulnerability lives in the post-content HTML sanitizer, and injecting an |
| Exploit ScenarioDerived | An attacker with posting access to a Discourse instance whose admin has configured |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 24, 2026
An authenticated Discourse user who can post content can bypass the administrator's allowed_iframes subpath restriction and embed iframe content from a path the administrator never authorized, affecting all Discourse releases prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0. The allowlist guard did not treat literal backslashes as path separators after decoding percent-encoded dot segments, so a crafted iframe source passed the subpath check while browser URL normalization resolved the frame outside the permitted path; exploitation requires a victim to view the post and depends on the viewer browser's backslash normalization behavior, consistent with the assessed vector AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N (limited confidentiality and integrity impact, no availability impact, scope change). This is a moderate, non-priority finding - no public exploit identified at time of analysis.
RemediationAI
Vendor-released patch: upgrade to 2026.1.8, 2026.6.3, 2026.7.2, or 2026.8.0 (matching your release branch) per advisory https://github.com/discourse/discourse/security/advisories/GHSA-6pwj-wgg8-4rjc; the fix is delivered through PR https://github.com/discourse/discourse/pull/42882 and its commits, which also encode mention hrefs, reject quote breakouts in the video placeholder, and escape SQL LIKE patterns, so applying the full commit set is preferable to cherry-picking the traversal check alone. If immediate upgrade is not possible, restrict the allowed_iframes setting: remove wildcard subpath patterns such as https://host/*/preview/ and use only exact host or full-URL entries, since the bypass requires a path boundary to evade and collapsing the allowlist to bare hosts eliminates the exploitable check - the trade-off is that legitimate path-scoped embeds must be listed individually. As a stricter compensating control, clear or disable allowed_iframes entirely to prevent all iframe embedding, accepting the loss of legitimate embedded media. Note that because exploitation depends on the viewer's browser normalizing backslashes after decoded dot segments, no reliable server-side detection signature is available, and these mitigations do not substitute for patching.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 4 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The issue is CWE-22 (improper limitation of a pathname to a restricted directory) implemented in Discourse's HTML sanitizer, which validates <iframe src> values against the administrator-configured allowed_iframes site setting, including patterns that restrict embeds to a specific subpath (for example https://host/*/preview/). The guard decoded percent-encoded dot segments such as %2e%2e but failed to treat literal backslashes as path separators during that normalization, so a source like https://host/wild/preview/%2e%2e\... could satisfy the subpath allowlist check in Ruby/JS sanitizer logic while the browser's own URL parser, which normalizes backslashes to forward slashes, resolved the request outside the allowed prefix. The bypass is only meaningful when the administrator has configured a subpath-restricted allowlist pattern; with a bare host allowlist there is no path boundary to evade. The referenced fix PR (#42882) and the associated commits bundle adjacent sanitizer hardening that is visible in the diff - URL-encoded traversal rejection in the iframe sanitizer tests, encodeURIComponent applied to user mention hrefs in small-action and nested activity-log components, a quote-character rejection added to the video placeholder data-video-src handling, and sanitize_sql_like applied to url LIKE lookups in HasUrl - indicating the traversal guard fix shipped alongside related input-encoding corrections.
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
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Injecting the iframe requires posting privileges (PR:L) and the disallowed content only loads when a user views the post (UI:R); scope changes to the viewer's browser (S:C) with limited confidentiality/integrity impact and no availability effect.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, the iframe src traversal guard did not treat literal backslashes as path separators after decoded dot segments. A crafted source could therefore pass an allowed_iframes subpath check while browser URL normalization moved the iframe outside the intended allowed path. The resulting iframe could load content from a location that the administrator did not allow. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.
Technical POC Analysis
CWE-22 (path traversal), caused by a separator-semantics mismatch between Discourse's server-side sanitizer and the viewer's browser URL normalization.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Discourse forum deployments running any release prior to 2026.1.8, 2026.6.3, 2026.7.2, or 2026.8.0 contain an authorization-bypass flaw that lets any user with posting rights embed iframe content from paths the administrator explicitly excluded. The bypass only affects users who view the crafted post, and its assessed impact is limited to partial confidentiality and integrity exposure with no service disruption, so this is a moderate, non-priority finding rather than a platform-wide emergency. Leadership should care because the forum's administrator-controlled content-embedding guardrail is the primary defense against externally sourced content being rendered inside a trusted internal collaboration surface.
No vendor-released patch identified at time of analysis. Interim mitigations: disable iframe embedding for community content entirely, or restrict allowed_iframes to exact trusted origins with a browser-enforced Content-Security-Policy frame-src directive; limit posting privileges for untrusted accounts; review existing posts for unauthorized iframe sources; deploy detective controls for anomalous embed activity. Note that the flaw is authenticated (PR:L) and requires a victim to view the post (UI:R), and depends on the viewer's browser backslash normalization behavior.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Discourse versions prior to 3.5.0.beta6 contain a reflected cross-site scripting (XSS) vulnerability in social login fun
discourse-bbcode is the official BBCode plugin for Discourse. Rated critical severity (CVSS 9.8), this vulnerability is
Unauthorized information disclosure in Discourse discussion platform versions prior to 2026.3.0-latest.1, 2026.2.1, and
Discourse is an open source platform for community discussion. Rated high severity (CVSS 8.2), this vulnerability is rem
Discourse versions prior to 2025.12.2, 2026.1.1, and 2026.2.0 contain an insecure direct object reference (IDOR) in the
In Discourse 2.7.0 through beta1, a rate-limit bypass leads to a bypass of the 2FA requirement for certain forms. Rated
Unauthenticated attackers can submit forged webhook payloads to multiple email provider integrations in Discourse versio
Discourse is an open-source discussion platform. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploi
Discourse is an open source platform for community discussion. Rated medium severity (CVSS 5.9), this vulnerability is r
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
Discourse is an open source platform for community discussion. Rated critical severity (CVSS 9.8), this vulnerability is
Discourse Patreon enables syncronization between Discourse Groups and Patreon rewards. Rated critical severity (CVSS 9.8
EUVD-2026-86300
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB