Checkout Files Upload for WooCommerce: Unauthenticated Remote Code Execution (CVE-2026-103688)
An unauthenticated file upload vulnerability in the Checkout Files Upload for WooCommerce plugin allows remote attackers to execute arbitrary PHP code due to improper file type validation and exposed AJAX handlers.
CVE search metadata
CVE search record: CVE-2026-103688. Severity: critical. CVSS: 9.8. EPSS: 0.61%. KEV: no. Product: Checkout Files Upload for WooCommerce (< 2.4.0). Brief: Checkout Files Upload for WooCommerce: Unauthenticated Remote Code Execution (CVE-2026-103688). Brief link: https://feed.craftedsignal.io/briefs/2026-10-checkout-files-upload-rce/
Triage facts
Revision 1- Applicability
- Checkout Files Upload for WooCommerce (< 2.4.0)
- Evidence
- Unknown
- Severity
- Critical
- Action
- Immediate escalation
- Sources
- 3 public sources
- Freshness
- Revision 1Oct 31, 00:04 UTC
- Detection
- 1 rule
- Vulnerabilities
- 1 CVE
- Source quality
- B2Very likely
The Checkout Files Upload for WooCommerce plugin (prior to version 2.4.0) contains an unauthenticated file upload vulnerability tracked as CVE-2026-103688. The vulnerability arises because the plugin fails to enforce file type validation if the "Accepted file types" setting is left blank. The AJAX action alg_ajax_file_upload is accessible to unauthenticated users via the wp_ajax_nopriv_ hook, and the required nonce is exposed to all visitors on the checkout page. Exploitation results in the ability to upload executable PHP files to a public web directory, facilitating remote code execution.
Attack Chain
- An attacker identifies a WordPress site running the Checkout Files Upload plugin with an empty "Accepted file types" configuration.
- The attacker visits the checkout page to retrieve a valid nonce for the
wpwham-checkout-files-upload-0action. - The attacker submits a
multipart/form-datarequest to/wp-admin/admin-ajax.phpcontaining the nonce,file_uploaderidentifier, and a malicious PHP file. - The plugin stores the malicious file in a temporary location and moves it to
wp-content/uploads/woocommerce_uploads/alg_uploads/checkout_files_upload/upon order creation or submission. - The attacker requests the uploaded PHP file directly via the web server to execute arbitrary code with the privileges of the web service user.
Impact
Successful exploitation allows unauthenticated attackers to execute arbitrary PHP code on the server, leading to full site compromise, data exfiltration, and potential lateral movement within the hosting environment.
Recommendation
- Update the "Checkout Files Upload for WooCommerce" plugin to version 2.4.0 or later immediately.
- If immediate patching is not possible, configure an explicit "Accepted file types" allow-list (e.g., jpg,jpeg,png,pdf) for every uploader instance in the plugin settings.
- Block direct PHP execution in the uploads directory by adding the following directive to your web server configuration (Nginx or Apache) to prevent webshell execution.
- Audit the
wp-content/uploads/woocommerce_uploads/alg_uploads/checkout_files_upload/directory for any unexpected files.
Immediate actions
Patch Checkout Files Upload for WooCommerce to version 2.4.0
Threat Hunt
Search web server logs for PHP files accessed in the uploads directory
Data: webserver access logs
Mitigations
Configure explicit file extension allow-list in plugin settings
CVE-2026-103688
Detection coverage 1
Detect CVE-2026-103688 Exploitation - Unauthenticated AJAX File Upload
criticalDetects unauthenticated POST requests to the plugin AJAX endpoint which may indicate an attempt to upload malicious files.
Detection queries are available on the platform. Get full rules →