Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit crafted AJAX Repeater child entry with unrecognized 'type' key
-
DeliveryType confusion bypasses sanitization in Submission.php
-
ExploitFile Uploads handler writes attacker-supplied HTML/JS file to web-server-writable directory
-
ExecutionPlanted file served from site's own origin
-
ImpactVictims browsing to URL execute arbitrary JavaScript with full same-origin privileges
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 two simultaneous conditions: (1) Ninja Forms plugin version ≤3.15.1 is installed and active on the WordPress site, and (2) the Ninja Forms File Uploads add-on (a separately installed, paid extension) is also installed and active - without this add-on, the File Uploads handler code path does not exist and the vulnerability is unreachable. When both conditions are met, no authentication is required and no victim interaction is needed on the attacker's part; the attacker submits a crafted form entry via an unauthenticated AJAX request. Web server directory permissions must allow file writes to the target path (e.g., the WordPress site root), which is a standard default configuration for WordPress hosting environments. The attack is fully automatable: no account, session, or prior reconnaissance is needed beyond confirming the add-on is active. |
| Impact | The vendor-assigned CVSS 7.2 (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N) correctly reflects unauthenticated, low-complexity network exploitation but likely understates real-world impact: writing arbitrary JavaScript to the web root enables full session hijacking, credential harvesting, admin account compromise, and persistent backdoor placement - effects that substantially exceed the C:L/I:L ratings on the changed (victim browser) scope. The AC:L metric is defensible since the File Uploads add-on, while a prerequisite, is an environmental condition rather than an attacker-controlled variable; however, this add-on requirement is the primary real-world limiter - sites without it are entirely unaffected. No CISA KEV listing and no public exploit code have been identified, reducing urgency for the broader population of Ninja Forms users; sites with the File Uploads add-on active should treat this as high-priority given the automatable, unauthenticated attack path and the persistent file-write primitive it provides. |
| Exploit ScenarioDerived | An unauthenticated attacker submits a crafted AJAX form payload to a WordPress site running Ninja Forms ≤3.15.1 with the File Uploads add-on active, embedding a Repeater child entry with an unrecognized 'type' value and attacker-controlled HTML/JavaScript as the field content. The type confusion routes the submission through the File Uploads handler, which writes a malicious HTML file (e.g., tracker.html) to the web root. Any user subsequently browsing to that URL - including administrators - executes the attacker's JavaScript in the context of the legitimate site origin, enabling session cookie theft or admin account hijacking without any further interaction required from the attacker. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 05, 2026
Stored XSS with on-disk file write capability in the Ninja Forms WordPress plugin (versions ≤3.15.1) allows unauthenticated remote attackers to plant attacker-controlled HTML/JavaScript files anywhere in the web server's writable directory tree - including the site root - when the separately-installed Ninja Forms File Uploads add-on is active. The attack exploits a 'type' confusion flaw in Repeater child field processing: an unrecognized array key causes the submission pipeline to misroute input through the File Uploads handler, which writes raw attacker-supplied content to disk where it is subsequently served from the site's own origin. The fix is confirmed in version 3.15.2 via WordPress.org SVN changeset; no public exploit or CISA KEV listing has been identified at time of analysis.
RemediationAI
Upgrade Ninja Forms to version 3.15.2, which contains the confirmed fix per the WordPress.org SVN changeset at https://plugins.trac.wordpress.org/changeset?reponame=&new=3674413%40ninja-forms%2Ftags%2F3.15.2&old=3663678%40ninja-forms%2Ftags%2F3.15.1. The specific patch to Submission.php is visible at https://plugins.trac.wordpress.org/changeset/3674413/ninja-forms/trunk/includes/AJAX/Controllers/Submission.php. If an immediate upgrade is not possible and the File Uploads add-on is active, deactivating the Ninja Forms File Uploads add-on eliminates the vulnerable code path entirely, though this disables file upload functionality for all forms. Alternatively, a Web Application Firewall rule blocking AJAX submissions containing Repeater child entries with unrecognized 'type' keys may reduce exposure, but filter accuracy depends on WAF capability and carries a risk of false positives on legitimate multi-step form submissions.
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 vulnerability resides in the Ninja Forms WordPress plugin (CPE: cpe:2.3:a:kstover:ninja_forms_-_the_contact_form_builder_that_grows_with_you:*:*:*:*:*:*:*:*) within its AJAX submission controller at includes/AJAX/Controllers/Submission.php (lines 55, 61, 303, and 609 per WordPress.org Trac). The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), but the exploitation path is atypical: when a Repeater field contains a child element whose 'type' key does not match any whitelisted entry, the array-key mismatch causes the submission pipeline to fall through to the File Uploads handler - a component designed to write files to the web server's filesystem. Because that handler does not sanitize or escape input for this unexpected code path, it writes the attacker-supplied HTML and JavaScript payload directly to disk. The resulting file is served from the site's own origin, giving the injected scripts full same-origin privileges over the victim's browser session.
Know when Ninja Forms The Contact Form Builder That Grows With You 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 attack writes files to web root; AC:L as add-on is environmental; C:L/I:L reflects changed-scope browser impact per standard stored-XSS S:C scoring.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Ninja Forms - The Contact Form Builder That Grows With You plugin for WordPress is vulnerable to Stored Cross-Site Scripting via Repeater Child 'type' Confusion via Unmatched Array Key in all versions up to, and including, 3.15.1 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. Exploitation requires the Ninja Forms File Uploads add-on to be active, as the attack routes the unwhitelisted child entry through the File Uploads handler to write an attacker-supplied HTML file containing arbitrary JavaScript into any web-server-writable directory, including the site root, where it is served from the site's own origin.
Executive ViewAI
Ninja Forms WordPress plugin versions 3.15.1 and earlier with the File Uploads add-on enabled allow unauthenticated attackers to upload and execute malicious scripts targeting website visitors, enabling credential theft, malware distribution, or website defacement.
Apply vendor patch to version 3.15.2. If immediate patching is not feasible, disable the File Uploads add-on or restrict form submissions to authenticated users only via plugin configuration.
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.
Broken access control in the Ninja Forms WordPress plugin (all versions through 3.14.1) lets unauthenticated remote atta
PHP Object Injection in the Ninja Forms WordPress plugin (all versions through 3.14.6) allows authenticated administrato
Ninja Forms plugin for WordPress versions up to 3.14.1 exposes authorization tokens via an insecure callback function in
EUVD-2026-71880
GHSA-4g6m-8fw6-3c27
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB