Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Unauthenticated network request with no interaction (AV:N/AC:L/PR:N/UI:N); arbitrary file read yields high confidentiality only, with no integrity or availability impact (C:H/I:N/A:N).
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
Lifecycle Timeline
2DescriptionCVE.org
The Ninja Forms - File Uploads plugin for WordPress is vulnerable to Arbitrary File Read via the attach_files() function in versions up to, and including, 3.3.29. This is due to the get_files_for_attachment() function accepting a raw attacker-controlled 'files' array when the process() method returns early due to a client-supplied saveProgress flag, bypassing all upload validation, path normalization, and database record creation steps, and allowing an attacker-supplied file_path value to reach wp_mail() as an email attachment with only a file_exists() check. This makes it possible for unauthenticated attackers to read arbitrary files on the affected site's server.
AnalysisAI
Arbitrary file read in the Ninja Forms - File Uploads WordPress add-on (versions ≤ 3.3.29) lets unauthenticated remote attackers exfiltrate any file readable by the web server. A client-supplied saveProgress flag causes the process() method to return early, so a raw attacker-controlled 'files' array reaches attach_files() and get_files_for_attachment() without upload validation, path normalization, or database record creation - an attacker-chosen file_path is then passed to wp_mail() as an email attachment guarded only by a file_exists() check. No public exploit has been identified at time of analysis; there is no CISA KEV listing and no EPSS score was supplied.
Technical ContextAI
The affected component is the file-attachment integration between the Ninja Forms - File Uploads add-on and WordPress core's mail subsystem (wp_mail). The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory / Path Traversal): normally uploaded files are validated, path-normalized, and persisted as database records before being attached, but a client-supplied saveProgress flag short-circuits process() so those controls never run. get_files_for_attachment() (attachments.php ~L107/L196) then trusts the client 'files' array verbatim, and upload.php (~L71) forwards the attacker-supplied file_path to wp_mail() with only a file_exists() existence check - no confinement to the uploads directory - letting traversal sequences reference files anywhere on the filesystem. The CPE cpe:2.3:a:saturdaydrive:ninja_forms_-_file_uploads identifies the SaturdayDrive-published add-on as the exact affected product.
RemediationAI
No vendor-released patch version was identified in the supplied data - the input confirms only that versions up to and including 3.3.29 are vulnerable, so administrators should consult the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/87d4dd4a-b1e2-4d08-aef1-77e58aa7531d?source=cve) and the plugin changelog for a fixed release above 3.3.29 and upgrade once it is published. Until a patched version is confirmed, the most effective compensating control is to deactivate the Ninja Forms - File Uploads add-on (side effect: file-upload form fields stop working); if that is unacceptable, remove or disable forms that use the file-upload field and, at the WAF layer, block Ninja Forms AJAX submission requests carrying the saveProgress flag together with a client-supplied 'files'/file_path parameter (side effect: may break legitimate multi-step 'save progress' submissions). As defense in depth, tighten PHP open_basedir and web-server file permissions so the server user cannot read sensitive paths such as wp-config.php outside the webroot, though this narrows rather than fully closes the read primitive.
More in Ninja Forms File Uploads
View allThe Ninja Forms - File Uploads Extension WordPress plugin is vulnerable to arbitrary file uploads due to insufficient in
Path Traversal and Unrestricted File Upload exists in the Ninja Forms plugin before 3.0.23 for WordPress (when the Uploa
Unauthenticated arbitrary file upload in Ninja Forms - File Uploads plugin for WordPress (versions ≤3.3.26) enables remo
The Ninja Forms - File Uploads Extension WordPress plugin is vulnerable to reflected cross-site scripting due to missing
The Ninja Forms - File Uploads plugin for WordPress is vulnerable to Stored Cross-Site Scripting via an uploaded file (e
Authorization bypass in the Ninja Forms - File Uploads WordPress plugin (all versions through 3.3.29) allows unauthentic
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-41275
GHSA-2298-wc49-vm4h