CVE-2026-5478 Overview
CVE-2026-5478 is a path traversal vulnerability [CWE-22] in the Everest Forms plugin for WordPress affecting all versions up to and including 3.4.4. The plugin trusts attacker-controlled old_files data from public form submissions as legitimate server-side upload state. It then converts attacker-supplied URLs into local filesystem paths using regex-based string replacement without canonicalization or directory boundary enforcement. Unauthenticated attackers can read arbitrary local files such as wp-config.php by injecting path-traversal payloads into the old_files upload field parameter. The same resolved path is later passed to unlink() during post-email cleanup, causing the targeted file to be deleted after exfiltration.
Critical Impact
Unauthenticated attackers can read and delete arbitrary files on the host, exposing database credentials and authentication salts from wp-config.php and enabling denial of service through deletion of critical files.
Affected Products
- Everest Forms plugin for WordPress, all versions through 3.4.4
- WordPress sites running forms with a file-upload or image-upload field
- WordPress sites where the affected form has entry storage disabled
Discovery Timeline
- 2026-04-20 - CVE-2026-5478 published to NVD
- 2026-04-22 - Last updated in NVD database
Technical Details for CVE-2026-5478
Vulnerability Analysis
The vulnerability resides in the file upload handling logic within class-evf-form-fields-upload.php. The plugin reconstructs the server-side upload state from the old_files parameter submitted with the public form. Because this parameter is attacker-controlled, an unauthenticated user can supply arbitrary URL-like strings that the plugin maps to local filesystem paths.
The mapping step uses regex-based string replacement to translate a URL into a path. It does not call a canonicalization routine such as realpath() and does not enforce that the result remains inside the WordPress uploads directory. Sequences such as ../ survive the transformation and resolve outside the intended directory.
The resolved path is attached to the notification email sent by the form, which is the file-read primitive. The same path is then passed to unlink() in the post-email cleanup routine, which is the file-deletion primitive. Exploitation requires that the targeted form contain an upload field and that entry storage be disabled.
Root Cause
The root cause is improper limitation of a pathname to a restricted directory. The plugin treats client-submitted state as authoritative and performs URL-to-path translation through string substitution rather than validating the final path against an allow-listed base directory.
Attack Vector
An unauthenticated attacker submits a form that contains an upload field, injecting a path-traversal payload into the old_files parameter. The plugin resolves the payload to a target file such as /var/www/html/wp-config.php, attaches it to the outbound notification email, and then deletes the file from disk during cleanup.
No authenticated exploit code is required. See the Wordfence Vulnerability Report and the WordPress Code Review at line 1306 for the affected code paths.
Detection Methods for CVE-2026-5478
Indicators of Compromise
- POST requests to /wp-admin/admin-ajax.php or form submission endpoints containing old_files parameter values with ../ sequences or absolute paths.
- Unexpected outbound mail from the WordPress host with attachments matching sensitive filenames such as wp-config.php, .htaccess, or files outside wp-content/uploads/.
- Missing or zero-byte wp-config.php or other core files following form submission activity.
Detection Strategies
- Inspect web server access logs for form-submission requests containing old_files parameters with path-traversal characters or unexpected URL hosts.
- Monitor mail transfer agent logs for outbound messages generated by Everest Forms with attachments referencing paths outside the uploads directory.
- Enable WordPress audit logging on file integrity for core files such as wp-config.php, wp-load.php, and .htaccess.
Monitoring Recommendations
- Centralize WordPress, web server, and MTA logs into a SIEM such as Singularity Data Lake to correlate form submissions with subsequent file deletions and outbound mail.
- Alert on unlink() events targeting paths outside the WordPress uploads directory through endpoint telemetry.
- Track creation of new admin users or modifications following any suspected wp-config.php disclosure, since stolen authentication salts enable session forgery.
How to Mitigate CVE-2026-5478
Immediate Actions Required
- Update the Everest Forms plugin to the version released in changeset 3507814 or later.
- Rotate all WordPress secrets in wp-config.php, including AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, and the corresponding salts.
- Rotate database credentials and audit user accounts for unauthorized additions or privilege changes.
- Restore any files deleted by exploitation from a known-good backup.
Patch Information
The vendor has released a fix in the WordPress plugin repository. Review the WordPress Change Log for the corrected upload handling logic and update through the WordPress admin Plugins page or via WP-CLI with wp plugin update everest-forms.
Workarounds
- Deactivate the Everest Forms plugin until the patched version is deployed.
- Remove or disable forms that contain file-upload or image-upload fields, since the vulnerability requires this field type.
- Enable entry storage on affected forms, which is a documented prerequisite that disables the vulnerable code path.
- Restrict access to form submission endpoints with a web application firewall rule that blocks old_files parameters containing ../, ..\, or absolute filesystem paths.
# Update Everest Forms using WP-CLI
wp plugin update everest-forms
wp plugin status everest-forms
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


