WowStore mobile filter text permits contributor stored XSS
WowStore through 4.4.24 lets an authenticated Contributor place an attribute-breakout payload in the filterMobileText attribute of a Product Grid block. WordPress stores the block attributes as JSON inside a Gutenberg delimiter comment, which wp_kses_post preserves. The product-blocks/product-grid-1 server-side render_callback passes filterMobileText through blocks/template/filter.php to Functions::filter(), which concatenates it into the filter list's data-name HTML attribute without esc_attr(); the stored script can therefore execute whenever a visitor renders the affected page. No separate HTTP endpoint, action or request parameter is involved in the disclosed path.
- Component
- WowStore – Store Builder & Product Blocks for WooCommerce
- Plugin slug
product-blocks- Affected
- <= 4.4.24
- Safe version
4.5.0- Published
- Jul 29, 2026
This CVE was published Jul 29, 2026 and is one of 6 known issues for this plugin.
Update, patch or deactivate.
Update WowStore to 4.5.0 or later. Review Contributor-authored Product Grid blocks for unexpected filterMobileText values before viewing affected pages on a vulnerable installation.
A safe version is available, so updating to that version or later is the preferred remediation. If an immediate update is not practical, consider a targeted application patch or temporarily restricting the affected functionality.
Deactivate only when warranted by your risk profile, or when advised by your hosting provider in the limited circumstances where the vulnerability cannot otherwise be mitigated. If you’re unsure which action is appropriate, contact Fused or your hosting provider for guidance.
Technical description
The WowStore – Store Builder & Product Blocks for WooCommerce plugin for WordPress is vulnerable to Stored Cross-Site Scripting via 'filterMobileText' Block Attribute in all versions up to, and including, 4.4.24 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The save-time wp_kses_post sanitization is ineffective because the payload is stored inside a Gutenberg block delimiter comment as JSON, which wp_kses_post preserves, allowing an attribute-breakout string to survive to the server-side render_callback.
CVE / CNA vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N