Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach public nopriv AJAX endpoint
-
DeliverySubmit crafted form with script payload
-
ExploitInsert/Update Post stores raw value in post meta
-
ExecutionVictim loads page with Select Field block
-
PersistUnescaped option value/label renders
-
ImpactScript executes in victim browser
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the site run the JetFormBuilder plugin (≤3.6.5.4) with the public submission endpoint wp_ajax_nopriv_jet_form_builder_submit reachable (its default behavior for front-end forms), AND a form configured with the Insert/Update Post action that writes submitted values into post meta, AND a Select Field block whose options are populated by the get_from_db option generator reading that same meta_key. The injection itself needs no authentication, no user interaction, and no special configuration beyond a published form with these actions; the limiting factor is the rendering side - the stored payload only executes once a victim loads a page containing the vulnerable Select Field block bound to the poisoned meta. If no such Select/get_from_db field exists on the site, the stored payload remains dormant. |
| Impact | This is a genuinely notable issue rather than a high-CVSS-but-low-real-risk flaw, driven primarily by the CVSS vector: AV:N/AC:L/PR:N/UI:N means a remote, unauthenticated attacker can inject the payload with low complexity and no interaction via the wp_ajax_nopriv_jet_form_builder_submit endpoint. The S:C (scope change) with C:L/I:L reflects classic stored XSS impact - script executing in the browser context of whoever later views the injected page. However, several corroborating signals are MISSING: no EPSS score was provided, so exploitation probability cannot be quantified; KEV status is not listed (treat as not in CISA KEV); and no public POC is referenced beyond the vendor's own wpunit regression test (SelectStoredXssTest.php). The 7.2 base score is therefore the main driver, and it should be read as 'realistic, scriptable injection vector but second-order (XSS) impact requiring a victim to view the page.' The unauthenticated nature meaningfully raises priority for any site running the affected plugin, but absence of active-exploitation evidence keeps this below emergency-patch tier. One caveat to verify: payload execution depends on the site actually using a Select Field block with the get_from_db option generator pointed at the attacker-influenced post meta - if no such form/field exists, real-world exposure is lower than the raw score suggests. |
| Exploit ScenarioDerived | An unauthenticated attacker submits a crafted form to the public wp_ajax_nopriv_jet_form_builder_submit endpoint, embedding a script payload (e.g. '"></option></select><img src=x onerror=alert(document.domain)>') that is stored verbatim into post meta through the Insert/Update Post action. Later, when any user or administrator loads a page where a Select Field block renders those meta values via the get_from_db generator, the unescaped value and label break out of the <option> tag and execute in the victim's browser. No public exploit is identified at time of analysis, though the vendor's patch commit includes a wpunit test demonstrating the payload. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 02, 2026
Stored cross-site scripting in the JetFormBuilder - Dynamic Blocks Form Builder WordPress plugin through version 3.6.5.4 lets unauthenticated remote attackers plant arbitrary JavaScript that later executes in the browser of any visitor viewing an affected page. The payload is submitted through the plugin's public wp_ajax_nopriv_jet_form_builder_submit endpoint, persisted verbatim into post meta by the Insert/Update Post action, and rendered without escaping by a Select Field block whose options are populated by the get_from_db generator. No confirmed active exploitation or public exploit code has been identified at time of analysis, and the impact is constrained by configuration: the payload only fires on sites that combine a publicly submittable form with an Insert/Update Post action and a Select/get_from_db field bound to the poisoned meta key.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - the security-relevant changes are contained in GitHub commit 534c2ce996408d1f9b5a9fba165348a7cd38bccc (Crocoblock/jetformbuilder), which esc_attr()/esc_html()-escapes the Select Field option value, label and placeholder output and hardens array-key sanitization in Tools::sanitize_recursive()/recursive_wp_kses(). Site operators should update the plugin to the first vendor release that contains this commit and verify the fix afterwards; if the plugin cannot be updated immediately, apply the commit as a patch (it is small and localized to block-template.php and tools.php) and re-test. Where patching is not possible, prioritise compensating controls that break the exploit chain rather than generic hardening: disable or gate the public submission endpoint (wp_ajax_nopriv_jet_form_builder_submit) with a capability or nonce check, accepting the trade-off that logged-out visitors can no longer submit front-end forms; avoid Insert/Update Post actions that write attacker-submitted values into post meta consumed by get_from_db Select fields, or restrict those forms to authenticated users (this removes the unauthenticated PR:N vector but does not fix the underlying escaping defect); and switch Select Field blocks away from the get_from_db generator to static, administrator-defined option lists, which fully removes the render-side sink at the cost of dynamic option management. As a layered measure, deploy WAF rules or input filtering that reject tag-bearing field names and option payloads at the AJAX endpoint, recognising this only blunts known payload shapes. Consult the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/84857045-833f-44fb-ada0-1e0f4eb84a52?source=cve) for the vendor's official version guidance, and note that any stored payloads already embedded in post meta must be cleaned or the affected meta deleted after patching, since fixed rendering alone leaves the poisoned data in the database.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a classic CWE-79 persistent (stored) cross-site scripting issue arising from missing output encoding rather than an exotic memory-safety problem. JetFormBuilder's unauthenticated AJAX entry point (wp_ajax_nopriv_jet_form_builder_submit, handled in includes/form-handler.php) accepts attacker-controlled field names and values and passes them through the Insert/Update Post action, where modules/actions-v2/insert-post/properties/post-meta-property.php writes them into WordPress post meta with no sanitization on the way in. The Select Field block then reads that same meta_key through the get_from_db option generator (includes/generators/get-from-db.php), which copies raw meta values straight into the option 'value' attribute and 'label' content, and modules/option-field/blocks/select/block-template.php prints them unescaped inside <option> tags. Because the stored script executes in the origin of the WordPress site, the CVSS score is 7.2 with Scope:Changed (S:C) - the vulnerable component is the plugin, but the consequences land on the wider site and its users. The upstream fix commit (534c2ce996408d1f9b5a9fba165348a7cd38bccc) addresses both ends of the chain: it adds esc_attr() on the option value and esc_html() on labels and placeholders in block-template.php, and introduces sanitize_array_key()/hardened sanitize_recursive() and recursive_wp_kses() logic in includes/classes/tools.php so submitted array keys containing tags are stripped and colliding sanitized keys no longer overwrite earlier values. The same commit ships a regression test (tests/wpunit/SelectStoredXssTest.php) asserting that previously stored payloads such as '"></option></select><img src=x onerror=alert(document.domain)>' are escaped on render and cannot break out of the <option> element with quote-only injections like '" onpointerover=alert(document.domain) x="'. A parallel one-line guard was added to process-meta-boxes-trait.php requiring class_exists('Jet_Engine_CPT_Meta') before meta-box processing.
Know when Jetformbuilder Dynamic Blocks Form Builder gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Unauthenticated injection via a public AJAX endpoint (PR:N, AV:N, AC:L); stored XSS executing in a separate victim's browser context gives S:C with C:L/I:L and no availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The JetFormBuilder - Dynamic Blocks Form Builder plugin for WordPress is vulnerable to Stored Cross-Site Scripting via 'choice' Post Meta via Insert/Update Post Action in all versions up to, and including, 3.6.5.4 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The injected payload is submitted via the unauthenticated wp_ajax_nopriv_jet_form_builder_submit endpoint, stored verbatim into post meta through the Insert/Update Post action, and later rendered unescaped by the Select Field block template when the get_from_db option generator copies raw meta values into option value attributes and label content.
Executive ViewAI
JetFormBuilder versions through 3.6.5.4 contain a stored cross-site scripting flaw that can expose visitors to malicious JavaScript on WordPress sites using specific form configurations. Because no vendor patch is available, organizations relying on this plugin for public-facing forms may face session hijacking, credential theft, or brand damage. No public exploit identified at time of analysis, but leadership should prioritize identifying and mitigating exposed sites, especially those with high visitor traffic or sensitive user interactions.
No vendor-released patch identified at time of analysis; interim mitigations include disabling the JetFormBuilder plugin, removing or disabling Insert/Update Post actions and Select/get_from_db fields from publicly accessible forms, blocking or filtering submissions to wp_ajax_nopriv_jet_form_builder_submit via WAF, scanning post meta for unexpected script content, and enforcing a Content Security Policy to reduce script execution.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
JetFormBuilder - Dynamic Blocks Form Builder for WordPress before version 3.6.5.2 exposes sensitive site data to unauthe
Unauthenticated privilege escalation in JetFormBuilder - Dynamic Blocks Form Builder plugin for WordPress (versions up t
Arbitrary file deletion in the WordPress plugin JetFormBuilder - Dynamic Blocks Form Builder (versions 3.5.6.2 through b
HTML injection via unsanitized email notifications in JetFormBuilder WordPress plugin (versions before 3.6.5.2) allows u
The JetFormBuilder plugin for WordPress contains a critical path traversal vulnerability allowing unauthenticated attack
Reflected cross-site scripting in the JetFormBuilder - Dynamic Blocks Form Builder WordPress plugin (all versions up to
Unauthorized wp_postmeta enumeration in JetFormBuilder (WordPress plugin, all versions through 3.6.3) allows unauthentic
Reflected DOM-based cross-site scripting in the JetFormBuilder WordPress plugin (Dynamic Blocks Form Builder) affects al
EUVD-2026-91250
GHSA-h3qq-hvw6-cjjf
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB