Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2024-10590

CVE-2024-10590: Opt-In Downloads Plugin RCE Vulnerability

CVE-2024-10590 is a remote code execution vulnerability in the Opt-In Downloads WordPress plugin, allowing authenticated attackers to upload malicious files. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2024-10590 Overview

CVE-2024-10590 is an arbitrary file upload vulnerability in the Opt-In Downloads plugin for WordPress. The flaw exists in the admin_upload() function, which lacks file type validation across all versions up to and including 4.07. Authenticated attackers with Subscriber-level access or above can upload arbitrary files to the affected site's server. This can lead to remote code execution (RCE) on servers where the plugin's .htaccess protections are not honored, such as NGINX deployments. The vulnerability is classified under CWE-434 (Unrestricted Upload of File with Dangerous Type).

Critical Impact

Authenticated Subscriber-level users can upload arbitrary files, potentially achieving remote code execution on NGINX-hosted WordPress sites.

Affected Products

  • Opt-In Downloads plugin for WordPress — all versions up to and including 4.07
  • WordPress installations running on NGINX (RCE path)
  • WordPress installations where .htaccess restrictions are unenforced or bypassable

Discovery Timeline

  • 2024-12-12 - CVE-2024-10590 published to NVD
  • 2026-06-17 - Last updated in NVD database

Technical Details for CVE-2024-10590

Vulnerability Analysis

The Opt-In Downloads plugin exposes an admin_upload() function used to handle file uploads through the plugin's administrative interface. The function does not validate the MIME type or extension of the uploaded file. Any authenticated user, including low-privilege Subscriber accounts, can invoke this endpoint and place attacker-controlled files onto the server.

Because WordPress subscriber registration is often open by default, the barrier to exploitation is low on many sites. Once a malicious PHP file is written to a web-accessible directory, an attacker can request it directly to trigger code execution. The plugin ships with an .htaccess file that blocks PHP execution in the upload path, but this control only functions on Apache. NGINX ignores .htaccess files entirely, leaving the RCE path open on those deployments.

Root Cause

The root cause is missing file type validation in the admin_upload() handler. The function accepts uploaded content without verifying extension, MIME type, or file magic bytes. It also fails to enforce a capability check appropriate to the sensitivity of the operation, granting Subscriber-level users access to functionality that should be restricted to administrators.

Attack Vector

An authenticated attacker sends a crafted multipart HTTP POST request to the plugin's upload endpoint, submitting a PHP webshell or other executable payload. The plugin stores the file in a predictable location under the WordPress uploads directory. On NGINX servers, the attacker then issues a direct HTTP GET request to the uploaded file to execute arbitrary PHP code in the context of the web server user. See the Wordfence Vulnerability Report for additional technical context.

Detection Methods for CVE-2024-10590

Indicators of Compromise

  • New PHP, PHTML, or executable files in the Opt-In Downloads plugin upload directory under wp-content/uploads/
  • HTTP POST requests to the plugin's admin_upload endpoint originating from low-privilege user sessions
  • Direct HTTP GET requests to unusual file paths in the plugin's upload directory returning HTTP 200
  • Outbound network connections initiated by the PHP-FPM or web server worker process shortly after an upload event

Detection Strategies

  • Monitor WordPress access logs for POST requests to admin-ajax.php or plugin endpoints referencing admin_upload from Subscriber accounts
  • Alert on creation of files with server-executable extensions inside wp-content/uploads/ subdirectories
  • Correlate authenticated session activity from newly registered accounts with file write events on the web root

Monitoring Recommendations

  • Enable file integrity monitoring across the WordPress wp-content tree
  • Ingest web server and PHP-FPM logs into a centralized platform and retain them for correlation with endpoint telemetry
  • Track WordPress user registrations and immediate post-registration activity for anomalous upload behavior

How to Mitigate CVE-2024-10590

Immediate Actions Required

  • Deactivate and remove the Opt-In Downloads plugin until a patched version is confirmed available from the vendor
  • Audit wp-content/uploads/ for unexpected PHP or executable files and remove any unauthorized artifacts
  • Review recent Subscriber-level registrations and revoke accounts that are not associated with legitimate users
  • Disable open user registration in WordPress settings if it is not required

Patch Information

No patched version has been documented at the time of NVD publication. All versions through 4.07 remain vulnerable. Consult the Wordfence Vulnerability Report and the Codecanyon Item Overview for updated vendor status.

Workarounds

  • On NGINX, configure the server block to deny execution of PHP files within wp-content/uploads/ since .htaccess is not honored
  • Restrict access to the plugin's upload endpoint using a web application firewall rule that blocks non-administrator sessions
  • Enforce capability checks by placing the WordPress site behind an authentication proxy that limits Subscriber account actions

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.