GitHub Advisoryadvisory · RubyGems
GHSA-533c-2vh9-4r86 Decidim: HTML content blocks allow stored script execution
MEDIUM
Official page ↗
- Aliases
- CVE-2026-45572
- Ecosystem
- RubyGems
- Packages
- decidim-core
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
- Weaknesses
- CWE-94
- Reviewed
- 2026-07-13
Affected packages
• RubyGems decidim-core: < 0.30.9 → fixed in 0.30.9
• RubyGems decidim-core: >= 0.31.0.rc1, < 0.31.5 → fixed in 0.31.5
• RubyGems decidim-core: >= 0.32.0.rc1, < 0.32.0 → fixed in 0.32.0
Description
Description
A privileged admin user who can edit an affected landing page can store arbitrary HTML/JavaScript in an `HTML block`, and the public page renders it with `html_safe` and no output escaping.
Technical description
This issue lets any admin who can edit an affected landing page store arbitrary HTML and JavaScript in an `HTML block`. The block is then rendered back through `Decidim::ContentBlocks::HtmlCell#html_content` without a sanitization boundary, so the script executes later in visitor's browsers.
Impact
• A user with landing-page editing rights for an affected scope can persist JavaScript that executes in visitor's browsers on that page.
• Because exploitation already requires privileged administrative access, the practical risk is lower than a participant-controlled or unauthenticated stored XSS. It still creates a browser-execution primitive in a trusted admin-editable surface.
Patches
See https://github.com/decidim/decidim/pull/16451
Workarounds
Do not give admin permissions to non-trustful users.
Reference
Stored XSS
Credits
This issue was discovered in a security audit organized by the Decidim Association and made by Radically Open Security against Decidim financed by NGI.
Related
Alias · CVE (1)
- CVE-2026-45572 Decidim is a participatory democracy framework. vulnerability
Weakness · CWE (1)
- CWE-94 Improper Control of Generation of Code weakness