Stored XSS via unvalidated URL schemes in menu nodes and linkable ingredients
Published: November 09, 2026
SECURITY IDENTIFIERS
- GHSA: GHSA-x84w-hjc5-6pqw
- Vendor Advisory: https://github.com/AlchemyCMS/alchemy_cms/security/advisories/GHSA-x84w-hjc5-6pqw
GEM
SEVERITY
CVSS v3.x: 5.4 (Medium)
PATCHED VERSIONS
>= 8.4.0
DESCRIPTION
Alchemy::Node validated its url with a pattern that accepted any URI scheme, and the linkable ingredients (Link, Text, Picture) never validated their url at all. A user with permission to edit menus or element content could therefore store a javascript: url, which the menu template and the ingredient view components render as the href of an <a> element. Activating such a link executes the stored script in the site's origin, with the privileges of whoever clicked it.
RELATED
- https://rubygems.org/gems/alchemy_cms/versions/8.4.0
- https://github.com/AlchemyCMS/alchemy_cms/releases/tag/v8.4.0
- https://github.com/AlchemyCMS/alchemy_cms/pull/4416
- https://github.com/AlchemyCMS/alchemy_cms/pull/4233
- https://github.com/AlchemyCMS/alchemy_cms/pull/4234
- https://github.com/AlchemyCMS/alchemy-devise/pull/312
- https://github.com/AlchemyCMS/alchemy_cms/security/advisories/GHSA-x84w-hjc5-6pqw
