HIGH 7.5

CVE-2026-13369: Ninja Forms File Uploads Arbitrary File Read Vulnerability

The Ninja Forms – File Uploads plugin for WordPress contains a flaw that allows unauthenticated attackers to read sensitive files from the web server. The vulnerability exists in how the plugin handles file attachments when users interact with form progress-saving features. By manipulating a request parameter, an attacker can bypass security checks and trick the plugin into treating arbitrary server files as email attachments, exposing their contents. This affects all versions up to and including 3.3.29.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weaknesses (CWE)
CWE-22
Affected products
0 configuration(s)
Published / Modified
2026-07-02 / 2026-07-02

NVD description (verbatim)

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.

4 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-13369 is a path traversal vulnerability (CWE-22) in the Ninja Forms – File Uploads plugin that stems from insufficient input validation in the attach_files() function. When the process() method returns early due to a saveProgress flag set by the client, the get_files_for_attachment() function accepts a raw, attacker-controlled 'files' array without executing standard upload validation, path normalization, or database record creation. The attacker-supplied file_path parameter then reaches wp_mail() with only a file_exists() check, allowing arbitrary files on the server filesystem to be accessed as email attachment payloads. The vulnerability is network-accessible, requires no authentication, and has no user interaction requirement, resulting in a CVSS 3.1 score of 7.5 (HIGH) with confidentiality impact but no integrity or availability impact.

Business impact

Organizations running WordPress with the Ninja Forms – File Uploads plugin are exposed to information disclosure. Attackers can exfiltrate sensitive files including configuration files containing database credentials, private keys, API tokens, customer data, or source code—all without needing to log in or social engineer users. For SaaS platforms, agencies, or multi-tenant WordPress installations, this could expose data across multiple customers or projects. The ease of exploitation combined with the breadth of potential data sources creates significant compliance and reputation risk, particularly for organizations subject to GDPR, HIPAA, or PCI-DSS.

Affected systems

The vulnerability affects WordPress sites with the Ninja Forms – File Uploads plugin installed and active in versions up to and including 3.3.29. Because WordPress plugin vulnerabilities are often discovered and exploited after disclosure, organizations should assume broad targeted scanning is already occurring. Sites with publicly accessible form endpoints are at higher risk of opportunistic exploitation. The plugin popularity means the exposure could be widespread across small business, nonprofit, and enterprise WordPress deployments.

Exploitability

This vulnerability is highly exploitable. No authentication is required, the attack is trivial to execute (a single malicious HTTP request), and there is no user interaction barrier. An attacker with basic HTTP client knowledge can craft requests to retrieve files like wp-config.php or .env files from the web root within seconds. Exploit automation is straightforward, making mass scanning and opportunistic attacks probable. The lack of complex preconditions (such as requiring a specific plugin configuration or user action) means any unpatched instance is immediately at risk.

Remediation

Update the Ninja Forms – File Uploads plugin to a version released after July 2, 2026, that addresses this vulnerability. Verify the patched version number against the official Ninja Forms security advisory or plugin repository before deployment. If an immediate patch is unavailable, disable the Ninja Forms – File Uploads plugin or restrict access to forms containing file upload fields via .htaccess, WAF rules, or network ACLs until a fix is available. Monitor file access logs for suspicious requests to common sensitive paths (wp-config.php, .env, etc.).

Patch guidance

Visit the WordPress plugin repository or the Ninja Forms official website to check for an available security update addressing CVE-2026-13369. The vulnerable version range extends to 3.3.29 (published July 2, 2026). Apply the update immediately upon availability through the WordPress admin interface or via manual deployment. If your site uses automatic updates, ensure they are enabled for plugins. Test the update in a staging environment first to confirm no form functionality is impacted. Verify that the plugin version displayed in the admin panel reflects the patched release.

Detection guidance

Monitor web server access logs for HTTP requests to form endpoints that contain unusual 'files' parameters or saveProgress flags with suspicious file paths (e.g., requests containing '../', absolute paths, or references to /etc/passwd or wp-config.php). Look for POST requests to form processing endpoints with Base64-encoded or URL-encoded path traversal payloads. Implement or review WAF rules to block requests with path traversal sequences in file upload parameters. Use WordPress security plugins to audit installed versions of Ninja Forms and flag any version ≤3.3.29. Check email logs for unusual attachments or email send activity from form submissions. File Integrity Monitoring (FIM) tools can alert on unauthorized access to sensitive configuration files.

Why prioritize this

This vulnerability merits immediate remediation priority. It combines ease of exploitation (unauthenticated, no user interaction), high impact (read access to arbitrary files including secrets), and broad applicability across WordPress deployments. The lack of KEV status does not reduce urgency—disclosure is public and exploitation is trivial. Organizations should treat this as a critical remediation item alongside other high-severity path traversal or information disclosure vulnerabilities.

Risk score, explained

The CVSS 3.1 score of 7.5 (HIGH) reflects a network-accessible vulnerability requiring no privileges or user interaction, with high confidentiality impact and no integrity or availability impact. The score appropriately reflects the threat: widespread, easy-to-exploit information disclosure affecting secret management. Organizations may assign higher internal risk ratings if they host sensitive customer data, use shared hosting, or operate in regulated environments, or if file permissions on their servers are overly permissive.

Frequently asked questions

Do we need to be logged into WordPress to exploit this vulnerability?

No. This vulnerability is completely unauthenticated. An attacker does not need any WordPress user account, API credentials, or elevated privileges. A simple HTTP request from the public internet is sufficient.

What files are most at risk of being read?

Files in the web root and above are most easily targeted, including wp-config.php (database credentials), .env files (API keys), wp-content/plugins and wp-content/themes directories, and /etc/passwd on Linux systems if permissions allow. Any file the web server process can read is potentially accessible.

Does updating WordPress core protect us from this vulnerability?

No. This is a vulnerability in a third-party plugin (Ninja Forms – File Uploads), not in WordPress core. Only updating or disabling the vulnerable plugin will resolve the issue.

Can a WAF block this attack without a plugin update?

Partially. A WAF can be configured to detect and block requests with suspicious path traversal patterns in form parameters. However, this is a temporary mitigation and should not replace a plugin update. A determined attacker may be able to evade WAF rules with encoding or alternate payloads.

This analysis is provided for informational and defensive purposes only. All statements are based on the published CVE record and vendor information current as of the analysis date. Patch version numbers and availability should be verified directly with Ninja Forms official advisories and the WordPress plugin repository before deployment. This is not a substitute for independent security assessment or vendor guidance. Organizations are responsible for validating applicability to their environment and for testing patches before production deployment. Source: NVD (public-domain), retrieved 2026-08-11. Analysis generated by SEC.co (claude-haiku-4-5).