Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessLocate public FormCraft form
-
DeliverySubmit matrix field with array-typed JS payload
-
ExploitBypass server sanitization and DOMPurify string check
-
ExecutionPayload stored raw in database
-
PersistAdmin or user views injected page
-
ImpactScript executes in victim browser session
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 the target WordPress site to run FormCraft 3.9.14 or earlier with a form that uses composite matrix fields (the sub-field keys such as field2_0/field2_1 that never enter the sanitization loop) or array-typed field values that pass through the htmlentities()/html_entity_decode() round-trip at formcraft-main.php:2608 and :2122. The attacker must reach a publicly accessible form and submit array-structured values, typically by crafting the request directly rather than using the normal UI. Per the CVSS vector (PR:N), no authentication is needed to inject the payload; however, script execution occurs only when a victim subsequently views the page or entry containing the stored payload, and the site must expose a form built with the vulnerable matrix/array field types - forms using only simple string fields are not affected because those values pass through the DOMPurify string check. |
| Impact | The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N, base 7.2) indicates a network-reachable, low-complexity, unauthenticated attack with a scope change reflecting script execution against users separate from the injecting attacker - consistent with stored XSS. There is no EPSS score, SSVC decision, or POC indicator in the supplied intelligence, and the vulnerability is not in CISA KEV, so real-world exploitation is currently unproven. The signal that elevates priority is the unauthenticated (PR:N) precondition combined with persistence: any anonymous visitor able to submit a form can plant a payload that fires against later viewers, including logged-in administrators, which is why the impact metrics carry to Confidentiality and Integrity. On balance this is a genuine but moderate priority - real because it needs no authentication, but bounded because it is XSS (no direct RCE or data-at-rest compromise) and no active exploitation or exploit code is confirmed. Note the UI:N rating: stored XSS typically fires when a victim views the injected page, so treat 'no user interaction' as reflecting attacker-side effort rather than the absence of any victim action - verify against the vendor advisory. |
| Exploit ScenarioDerived | An unauthenticated attacker submits a FormCraft form containing a composite matrix field whose sub-field value carries a JavaScript payload as an array, bypassing both the server-side sanitization loop and the client-side DOMPurify string check so it is stored raw. When an administrator later opens the form entry or a page rendering that submission, the script executes in their authenticated browser session, enabling session hijacking or admin-account takeover. No public exploit code is identified at time of analysis, but the low attack complexity would make weaponization straightforward. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 23, 2026
Stored cross-site scripting in the FormCraft WordPress plugin (all versions through 3.9.14) lets unauthenticated attackers persist malicious JavaScript that executes in any user's browser when an affected page is rendered. The flaw stems from a two-sided sanitization gap: composite matrix sub-field keys (e.g. field2_0) are written raw via $wpdb->insert(), and the client-side DOMPurify guard is skipped because matrix values arrive as arrays rather than strings. No public exploit identified at time of analysis and the issue is not listed in CISA KEV, but its unauthenticated, network-reachable nature (CVSS 7.2) makes it a meaningful patch priority for exposed sites.
RemediationAI
Update FormCraft to a release later than 3.9.14 once the vendor publishes a fixed build; no exact patched version is confirmed in the available data, so consult the vendor changelog at https://formcraft-wp.com/changelog/ and the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/6b30089a-2267-47b9-b0a5-d6eeadfe51d2?source=cve to identify the corrected release. Until a patch is applied, reduce exposure by restricting or disabling forms that use composite matrix field types (the specific vector), placing affected forms behind authentication or CAPTCHA to limit anonymous submissions, and deploying a WordPress WAF ruleset (such as Wordfence) to filter script payloads in form submissions; note that disabling matrix fields breaks any form relying on that field type, and WAF filtering can be bypassed and should be treated as a stopgap rather than a fix. Additionally, review the FormCraft submissions table for already-stored payloads, since stored XSS persists in the database even after the code is patched.
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 affected component is FormCraft (cpe:2.3:a:formcraft:formcraft), a drag-and-drop form-builder plugin for WordPress written in PHP. The root cause is CWE-79 (improper neutralization of input during web page generation). Two independent code paths reach the same DOM sink: (1) composite matrix sub-field keys such as field2_0 and field2_1 never enter the plugin's sanitization loop and are stored raw in the database; and (2) array-typed field values are encoded with htmlentities() on submission but then reversed by html_entity_decode() at formcraft-main.php lines 2608 and 2122, restoring the original payload before storage and rendering. On the client, DOMPurify is only invoked when typeof field.value === 'string', so array-typed matrix values bypass sanitization before being mapped to strings and injected into the DOM.
Know when Formcraft 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 network injection (AV:N/AC:L/PR:N), but the stored payload fires only when a victim views the page (UI:R); scope change with low C/I reflects script execution in victims' browser context, no availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The FormCraft plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the '[parameter name]' parameter in all versions up to, and including, 3.9.14 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 exploit chain combines a server-side gap - where composite matrix sub-field keys such as field2_0 and field2_1 are never passed through the sanitization loop and are stored raw via $wpdb->insert() - with a client-side gap where DOMPurify is only invoked when typeof field.value === 'string', but matrix values arrive from the server as arrays, bypassing the check before being mapped to strings and injected into the DOM. Additionally, the same sink is reachable via a second attack vector: array-typed field values are passed through htmlentities() on submission but later reversed by html_entity_decode() at formcraft-main.php:2608 and :2122, restoring the malicious payload before storage and rendering.
Articles & Coverage 2
Executive ViewAI
The FormCraft WordPress plugin (all versions through 3.9.14) contains a stored cross-site scripting vulnerability that allows unauthenticated attackers to inject persistent malicious scripts executing in the browsers of site visitors. Organizations running this plugin face direct risk of user account compromise, credential theft, and malware distribution to every person accessing affected pages.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Web Application Firewall rules blocking FormCraft matrix sub-field injection attempts; (2) Content Security Policy headers prohibiting inline script execution; (3) Disable plugin and migrate to alternative form builder if non-critical to operations; (4) Real-time log monitoring for suspicious form submission patterns; (5) Application-layer input encoding if plugin cannot be removed.
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.
The FormCraft Basic plugin 1.0.5 for WordPress has SQL injection in the id parameter to form.php. Rated critical severit
SQL injection vulnerability in form.php in the FormCraft plugin 1.3.7 and earlier for WordPress allows remote attackers
The FormCraft WordPress plugin before 3.9.7 does not properly sanitise and escape a parameter before using it in a SQL s
The FormCraft WordPress plugin before 1.2.7 does not sanitise and escape some of its settings, which could allow high pr
The FormCraft WordPress plugin before 1.2.6 does not sanitise and escape Field Labels, allowing high privilege users suc
The formcraft-form-builder plugin before 1.2.2 for WordPress has CSRF. Rated high severity (CVSS 8.8), this vulnerabilit
Cross-site request forgery (CSRF) vulnerability in FormCraft 1.2.1 and earlier allows remote attackers to hijack the aut
The FormCraft plugin for WordPress is vulnerable to Stored Cross-Site Scripting via SVG File uploads in all versions up
Auth. Rated medium severity (CVSS 5.4), this vulnerability is remotely exploitable, low attack complexity. No vendor pat
The FormCraft plugin for WordPress is vulnerable to unauthorized access of data due to a missing capability check in for
EUVD-2026-47878
GHSA-xr57-33vw-pgmj
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB