CVE-2026-18946 Overview
CVE-2026-18946 affects the Contact Form to Any API WordPress plugin in versions prior to 3.0.7. The plugin copies files uploaded through contact forms into a publicly accessible directory without generating random filenames. Unauthenticated attackers can enumerate predictable file paths and download submissions belonging to other users. The vulnerability is categorized as information exposure under [CWE-200] and carries a network attack vector with no authentication or user interaction required.
Critical Impact
Unauthenticated remote attackers can enumerate and download contact form file submissions, exposing sensitive personal, financial, or business data uploaded by site visitors.
Affected Products
- Contact Form to Any API WordPress plugin versions before 3.0.7
- WordPress sites accepting file uploads through the plugin
- Any deployment storing uploads in the plugin's default public directory
Discovery Timeline
- 2026-08-10 - CVE-2026-18946 published to NVD
- 2026-08-10 - Last updated in NVD database
Technical Details for CVE-2026-18946
Vulnerability Analysis
The Contact Form to Any API plugin accepts file attachments submitted through WordPress contact forms and relays them to configured API endpoints. During processing, the plugin stores a copy of each uploaded file inside a directory served by the web server. The vulnerability stems from the plugin using predictable filenames rather than randomized identifiers when writing these copies to disk.
Because filenames follow the original submission name or another guessable pattern, an attacker can iterate over likely values and retrieve files directly over HTTP. No authentication, session, or user interaction is required to access the storage location. The issue exposes any data users have uploaded through the form, which frequently includes identification documents, resumes, invoices, and other confidential material.
Refer to the WPScan Vulnerability Report for the underlying technical analysis.
Root Cause
The root cause is missing filename randomization when persisting uploads to a public directory. The plugin does not apply a cryptographically random suffix, hashed identifier, or access control layer to shield stored files. This design decision violates least-privilege storage practices for user-supplied content [CWE-200].
Attack Vector
An unauthenticated attacker sends HTTP requests directly to the plugin's upload directory. The attacker guesses or enumerates filenames using common naming conventions, form field names, or leaked references. Successful requests return the raw contents of files submitted by other users. Exploitation requires only network access to the target WordPress site.
No verified exploit code is publicly documented at this time. Consult the WPScan Vulnerability Report for further technical detail.
Detection Methods for CVE-2026-18946
Indicators of Compromise
- Repeated HTTP GET requests to the plugin's upload directory from a single source address
- Directory enumeration patterns targeting /wp-content/uploads/ paths associated with the plugin
- Unusual outbound transfer volumes for archive or document file types stored by the plugin
- Web server access logs showing sequential filename guessing (numeric or alphabetic iteration)
Detection Strategies
- Inspect WordPress access logs for high-rate 200 responses to file paths under the plugin's storage directory
- Alert on unauthenticated requests retrieving PDF, DOCX, ZIP, or image files from upload paths
- Correlate scanner user agents and referrer anomalies with upload directory access
Monitoring Recommendations
- Enable verbose web server logging on /wp-content/ and forward logs to a centralized analytics platform
- Baseline normal request volumes to the plugin's upload directory and flag deviations
- Monitor plugin version inventory across WordPress fleets to identify unpatched installations
How to Mitigate CVE-2026-18946
Immediate Actions Required
- Update the Contact Form to Any API plugin to version 3.0.7 or later on all WordPress sites
- Audit the plugin's upload directory and remove or relocate historical submissions to a non-public location
- Rotate or invalidate any credentials, tokens, or personal data that may have been exposed in uploaded files
Patch Information
The vendor addressed the issue in version 3.0.7 by using random filenames when copying uploads to the public directory. Administrators should apply this update through the WordPress plugin management interface or via WP-CLI. Confirm the installed version after upgrade and verify that existing files have been remediated.
Workarounds
- Restrict web server access to the plugin's upload directory using .htaccess rules or equivalent Nginx location blocks
- Disable file attachments in contact forms until the patch is applied
- Move stored submissions outside the web root and serve them only through authenticated handlers
# Configuration example: block direct access to plugin uploads via .htaccess
<Directory "/var/www/html/wp-content/uploads/contact-form-to-any-api">
Require all denied
</Directory>
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

