# Page Builder by SiteOrigin <= 2.37.0 - Authenticated (Contributor+) Stored Cross-Site Scripting via Widget Class Name

- **ID:** WPSEC-2026-1344
- **Plugin:** Page Builder by SiteOrigin (`siteorigin-panels`), https://wordpress.org/plugins/siteorigin-panels/
- **Affected versions:** all versions before 2.38.0
- **Fixed in:** 2.38.0 (Update to 2.38.0 or later.)
- **Severity:** Medium 6.4 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N)
- **Weakness:** CWE-79
- **Usage among sites WPSec scans:** plugin High, affected versions High (as of 2026-10-21)
- **Attack surface analysis:** https://attacksurface.wpsec.com/plugin/siteorigin-panels
- **Fix released:** 2026-10-19
- **Published:** 2026-10-21
- **URL:** https://wpsec.com/vuln/WPSEC-2026-1344/

## Description

The Page Builder by SiteOrigin plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the widget class name in all versions up to, and including, 2.37.0. This is due to insufficient input sanitization and output escaping. The class name of a widget is stored unsanitized when a layout is saved. For a widget class that is not registered on the site, the builder's widget list shows that name as unescaped HTML, both when the widget is first drawn and when it is updated. This makes it possible for authenticated attackers with contributor-level access and above, who can save a Page Builder layout, to inject arbitrary web scripts. The scripts run in the wp-admin Page Builder editor whenever another user, such as an administrator reviewing the post, opens the affected post.

## References

- https://wpsec.com/vuln/WPSEC-2026-1344/
- https://plugins.svn.wordpress.org/siteorigin-panels/tags/2.38.0/
- https://wordpress.org/plugins/siteorigin-panels/

Source: WPSec, https://wpsec.com/vuln/WPSEC-2026-1344/

License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Free to use, share and adapt, also commercially, if you credit WPSec and link to this advisory.
