CVE-2026-10818
WordPress vulnerability analysis and mitigation

Overview

CVE-2026-10818 is an arbitrary file upload vulnerability in the WPForms Pro plugin for WordPress, affecting all versions up to and including 1.10.1.1. The flaw exists in the ajax_chunk_upload_finalize function, where file type validation occurs after chunk metadata and file contents have already been written to disk, and the assembled file is not deleted upon validation failure. This allows unauthenticated attackers to upload executable files and achieve remote code execution on the affected WordPress server. It carries a CVSS v3.1 base score of 8.1 (High) (GitHub Advisory, Wordfence).

Technical details

The root cause is classified as CWE-434 (Unrestricted Upload of File with Dangerous Type). The vulnerability stems from a race condition in the chunked file upload workflow: the ajax_chunk_upload_finalize function writes chunk metadata and file contents to disk before performing file type validation, and critically, does not clean up the assembled file if validation subsequently fails. An unauthenticated attacker can exploit this by submitting a chunked upload request with a malicious executable file (e.g., a PHP web shell), which persists on disk regardless of the validation outcome, enabling remote code execution. No authentication or user interaction is required, though attack complexity is rated High (GitHub Advisory, Wordfence).

Impact

Successful exploitation allows an unauthenticated remote attacker to upload and execute arbitrary code on the WordPress server, resulting in full compromise of confidentiality, integrity, and availability. An attacker could deploy a web shell to gain persistent access, exfiltrate sensitive data (including WordPress database credentials, user data, and configuration files), deface the site, or use the compromised server as a pivot point for lateral movement within the hosting environment (GitHub Advisory, Wordfence).

Exploitation steps

  1. Reconnaissance: Identify WordPress sites running WPForms Pro version 1.10.1.1 or earlier using tools like WPScan, Shodan, or by inspecting plugin metadata in publicly accessible WordPress installations.
  2. Identify the upload endpoint: Locate the AJAX endpoint associated with ajax_chunk_upload_finalize, typically accessible via WordPress's admin-ajax.php or a REST API route used by WPForms Pro for chunked file uploads.
  3. Craft a chunked upload request: Split a malicious PHP web shell (e.g., <?php system($_GET['cmd']); ?>) into chunks and initiate the chunked upload process by sending the chunk metadata and file contents to the target endpoint without authentication.
  4. Trigger finalization before cleanup: Send the finalization request to assemble the chunks into the complete file on disk. Because validation occurs after assembly and the file is not deleted on failure, the PHP file persists in the upload directory.
  5. Locate the uploaded file: Determine the path of the uploaded file within the WordPress uploads directory (e.g., /wp-content/uploads/) by observing server responses or using directory enumeration.
  6. Execute arbitrary commands: Access the uploaded web shell via HTTP (e.g., https://target.com/wp-content/uploads/shell.php?cmd=id) to execute arbitrary OS commands and establish persistent access (GitHub Advisory, Wordfence).

Indicators of compromise

  • Network: Unusual unauthenticated POST requests to WordPress AJAX endpoints (e.g., admin-ajax.php) with chunked upload parameters from unexpected IP addresses; HTTP GET requests to PHP files in the /wp-content/uploads/ directory with command-execution parameters (e.g., ?cmd=, ?exec=).
  • File System: Presence of PHP files (.php, .php5, .phtml) in the WordPress uploads directory (/wp-content/uploads/) or its subdirectories; unexpected executable files with recent modification timestamps in upload paths; temporary chunk files that were not cleaned up.
  • Logs: Web server access logs showing POST requests to admin-ajax.php with action=wpforms_upload_chunk_finalize or similar WPForms-specific actions from unauthenticated sessions; subsequent GET requests to newly created PHP files in upload directories.
  • Process: Unusual child processes spawned by the web server process (e.g., Apache or Nginx worker) such as bash, sh, curl, wget, or python; unexpected outbound network connections from the web server process.

Mitigation and workarounds

Update WPForms Pro to a version newer than 1.10.1.1, which contains the fix for this vulnerability (Wordfence). As interim workarounds, disable PHP script execution in the WordPress uploads directory via server configuration (e.g., adding an .htaccess rule to deny execution of PHP files in /wp-content/uploads/). Additionally, implement Web Application Firewall (WAF) rules to restrict file uploads by type before they reach the application, and monitor upload directories for suspicious executable files.

Community reactions

The vulnerability was disclosed by Wordfence on July 25, 2026, and was noted on Mastodon by security-focused accounts shortly after publication. No significant vendor statements beyond the patch release or notable researcher commentary beyond the Wordfence advisory have been identified at this time (Wordfence).

Additional resources


SourceThis report was generated using AI

Related WordPress vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-10818HIGH8.1
  • wpforms
NoYesJul 25, 2026
CVE-2026-8789HIGH8.1
  • easy-appointments
NoYesJul 24, 2026
CVE-2026-14955MEDIUM6.5
  • woocommerce-checkout-field-editor-pro
NoYesJul 25, 2026
CVE-2026-15425MEDIUM6.4
  • wordpress-seo
NoYesJul 25, 2026
CVE-2026-15962NONEN/A
  • fluentformpro
NoYesJul 26, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management