Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister subscriber-level WordPress account
-
DeliverySubmit crafted REST API request with XSS payload in interval/format/emailTo
-
ExploitPayload stored in database without sanitization
-
ExecutionPrivileged user visits export configuration page
-
PersistInjected script executes in victim browser
-
ImpactAttacker captures session token or performs admin actions
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: (1) an authenticated WordPress user account at subscriber level or above - the lowest default role, assigned automatically on open-registration sites; (2) the Ninja Forms - Scheduled Exports plugin to be installed and active on the target site at version 3.0.3 or earlier; (3) a victim user (typically an admin) to visit a page that renders the stored export configuration containing the injected payload. Exploitation is limited by the requirement for at least a subscriber account (unavailable on sites with registration fully closed), the need for a victim page visit to trigger script execution, and the plugin being a premium paid add-on with a narrower install base than the core Ninja Forms plugin. The REST endpoint's missing permission_callback means capability checks are absent, but nonce validation is still enforced, confirming that unauthenticated exploitation is not possible. |
| Impact | The provided CVSS 6.4 (Medium) vector AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N reflects network-accessible exploitation at low privilege with scope change into victim browsers. The UI:N metric is arguably optimistic for stored XSS, which classically requires a victim to visit the injected page (warranting UI:R); this is flagged in confidence notes. Real-world risk is primarily shaped by the privilege bar: WordPress subscriber is the role assigned to anyone who self-registers, so any site with open registration is exploitable without any elevated access. The S:C (scope changed) metric correctly reflects that the payload's impact lands in administrators' or other users' browser sessions, enabling session token theft, credential harvesting, or admin action hijacking. No KEV listing and no public POC lower urgency somewhat, but even a mid-sized municipal IT team in olsztyn running a WordPress site with open registration should treat this as a meaningful remediation priority given how low the entry threshold is. The permission_callback gap is an aggravating factor: if nonce leakage were achievable through other means, the exploitable surface could expand beyond authenticated users. |
| Exploit ScenarioDerived | An attacker registers a free subscriber account on a WordPress site with open registration, then sends a crafted REST API POST request to the scheduled-exports endpoint with a malicious JavaScript payload embedded in the emailTo or format parameter. The payload is stored in the database without sanitization; when a site administrator later visits the export management page, the script executes in their browser session, enabling the attacker to exfiltrate the admin's authentication cookie or perform privileged WordPress actions on their behalf. No public POC exists at time of analysis, but the attack requires only basic HTTP tooling and a valid nonce, making it straightforward to reproduce. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 10, 2026
Stored cross-site scripting in the Ninja Forms - Scheduled Exports WordPress plugin (all versions through 3.0.3) allows any authenticated subscriber-level user to inject persistent malicious scripts via the REST API parameters interval, format, and emailTo, which then execute in the browsers of any user who visits the affected page. The root cause is a REST endpoint registered without a permission_callback that relies solely on nonce validation rather than WordPress capability checks, meaning the lowest default user role can reach it. No public exploit has been identified at time of analysis, but the subscriber-level entry barrier makes this meaningful on any site with open user registration.
RemediationAI
Update the Ninja Forms - Scheduled Exports plugin to a version beyond 3.0.3 as soon as the vendor publishes a patched release; the exact remediated version number is not confirmed in available data, so consult the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/867ad3a9-7e43-48ac-b5bf-8bd47ccfd8c5 and the plugin changelog at https://ninjaforms.com/extensions/scheduled-submissions-export/ for the confirmed fix version. As an interim compensating control, disable open user registration (Settings → General → uncheck 'Anyone can register') to remove the subscriber-level attack path; this has the trade-off of preventing new front-end registrations. Alternatively, restrict access to the affected REST API endpoint via WAF rules or a plugin such as Wordfence blocking unauthenticated and subscriber-role requests to the scheduled-exports REST namespace. Site administrators should also audit stored export configurations for injected script content and remove any suspicious entries.
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 - Scheduled Exports add-on (CPE: cpe:2.3:a:saturday_drive:ninja_forms_-_scheduled_exports:*:*:*:*:*:*:*:*), a premium extension developed by Saturday Drive for the Ninja Forms WordPress plugin ecosystem. The flaw is CWE-79 (Improper Neutralization of Input During Web Page Generation - Stored XSS): user-supplied values for the REST API parameters interval, format, and emailTo are written to persistent storage without sanitization and later rendered in HTML context without output escaping. The deeper structural issue is the WordPress REST API registration mistake of omitting a permission_callback, which bypasses the WordPress capability system entirely; nonce-only validation authenticates the request as coming from a logged-in user but does not verify that the user holds any specific capability, so any subscriber-level account suffices.
Know when Ninja Forms Scheduled Exports 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:L/UI:N/S:C/C:L/I:L/A:N
Stored XSS execution requires a victim to visit the injected page (UI:R); subscriber-level auth (PR:L) confirmed; scope change (S:C) reflects payload executing in victim browser context.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Ninja Forms - Scheduled Exports plugin for WordPress is vulnerable to Stored Cross-Site Scripting via REST API Parameters (interval, format, emailTo) in all versions up to, and including, 3.0.3 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level privileges and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The REST endpoint is registered without a permission_callback and only validates a nonce without checking user capabilities.
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.
EUVD-2026-75230
GHSA-vxhj-7whr-2q55
NVD
CVE.org
EPSS
Exploit-DB