CVE-2026-5324
The Brizy – Page Builder plugin for WordPress is vulnerable to Unauthenticated Stored Cross-Site Scripting in all versions up to, and including, 2.8.11 This is due to a combination of missing nonce verification for unauthenticated form submissions, insufficient handling of FileUpload fields when no file is uploaded, and the reversal of security encoding via html_entity_decode() followed by unescaped output in the admin view. The submit_form() function skips nonce verification for non-logged-in users (api.php:198). The handleFileTypeFields() function fails to overwrite user-supplied values when no file is attached. While htmlentities() is applied during storage, html_entity_decode() reverses this on display (form-entries.php:79). The form-data.php template outputs FileUpload values directly in href attributes without esc_url(). This makes it possible for unauthenticated attackers to inject arbitrary web scripts that execute when an administrator views the form Leads page.
Ver en NVDAnálisis
Brizy is a popular WordPress page builder plugin. This vulnerability allows unauthenticated attackers to inject scripts into form submissions that execute in the admin context, potentially leading to full site takeover. Given the heavy use of WordPress by agencies and freelancers in the community, this high-severity XSS is relevant.
Severidad
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:NCWE-79EPSS
Descripción técnica
The Brizy – Page Builder plugin for WordPress is vulnerable to Unauthenticated Stored Cross-Site Scripting in all versions up to, and including, 2.8.11 This is due to a combination of missing nonce verification for unauthenticated form submissions, insufficient handling of FileUpload fields when no file is uploaded, and the reversal of security encoding via html_entity_decode() followed by unescaped output in the admin view. The submit_form() function skips nonce verification for non-logged-in users (api.php:198). The handleFileTypeFields() function fails to overwrite user-supplied values when no file is attached. While htmlentities() is applied during storage, html_entity_decode() reverses this on display (form-entries.php:79). The form-data.php template outputs FileUpload values directly in href attributes without esc_url(). This makes it possible for unauthenticated attackers to inject arbitrary web scripts that execute when an administrator views the form Leads page.
Referencias
- https://plugins.trac.wordpress.org/browser/brizy/tags/2.7.24/admin/form-entries.php#L79
- https://plugins.trac.wordpress.org/browser/brizy/tags/2.7.24/admin/views/form-data.php#L11
- https://plugins.trac.wordpress.org/browser/brizy/tags/2.7.24/editor/forms/api.php#L198
- https://plugins.trac.wordpress.org/browser/brizy/tags/2.7.24/editor/forms/api.php#L295
- https://plugins.trac.wordpress.org/browser/brizy/trunk/admin/views/form-data.php#L11
- https://plugins.trac.wordpress.org/changeset/3502206/brizy/trunk/admin/views/form-data.php
- https://plugins.trac.wordpress.org/changeset?old_path=%2Fbrizy/tags/2.8.11&new_path=%2Fbrizy/tags/2.8.12
- https://www.wordfence.com/threat-intel/vulnerabilities/id/78ec499e-5edd-4f11-9090-f79868864fee?source=cve