CVE-2026-91134 Discourse: Block post iframes whose encoded userinfo bypasses the allowed_iframes allowlist
Authenticated users can bypass iframe allowlists via encoded userinfo, injecting malicious cross-origin content into posts.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-91134?
CVE-2026-91134 is a medium-severity cross-site scripting vulnerability in discourse, published on 24 Sep 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official 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.
Weakness: CWE-20
Which versions are affected by CVE-2026-91134?
1 open source package ship an affected version, including discourse.
| Package | Affected | Fixed in |
|---|---|---|
discourse Bitnami | All versions | 2026.8.0 |
How do I fix CVE-2026-91134?
Upgrade discourse to 2026.8.0 or later.
Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.
Is CVE-2026-91134 being exploited?
There is no known exploitation of CVE-2026-91134 in the wild and no public exploit code.
Sources
Also known as BIT-discourse-2026-91134, GHSA-54vw-chv3-wjpv.