Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRead world-readable leaked tenwebio_rest nonce
-
DeliveryCraft unauthenticated compressCustom request
-
ExploitUpload executable PHP via page_id
-
ExecutionRequest uploaded file in uploads directory
-
ImpactExecute arbitrary code (RCE)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File type validation, storage isolation
MITRE ATT&CK
2 techniques across 2 tactics: Command and Control, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the plugin have run a bulk optimisation batch that paused at least once, causing the tenwebio_rest REST nonce to be serialized to a world-readable file under wp-content/uploads/; because that nonce is generated in a cron/loopback context with user ID 0, it is valid for unauthenticated visitors and bypasses the authentication check on the compressCustom function. Given that leaked nonce, no authentication or user interaction is needed (PR:N/UI:N) and the missing file-type/extension validation on the page_id parameter permits upload of executable files. The principal limiting factor is the dependency on the nonce-leak state existing on the target; sites that have never paused a bulk optimisation batch would not expose the nonce file, and the uploaded file must land in a web-accessible, PHP-executing path for RCE. |
| Impact | Signals mostly align toward genuine high priority, with one important nuance. The input CVSS of 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) describes a remote, unauthenticated, full-impact RCE via arbitrary file upload (CWE-434), which on its face is critical. However, the description reveals a real exploitation precondition that the AC:L rating understates: the attacker must first obtain the tenwebio_rest nonce, which only becomes world-readable after a bulk optimisation batch pauses and serializes it to wp-content/uploads/. This is a condition outside the attacker's direct control, which in my independent assessment lowers attack complexity realism (I assess AC:H / CVSS 4.0 AT:P) even though the end impact remains full RCE. No EPSS score, KEV listing, POC, or SSVC data was provided; absence of KEV means there is no confirmation of active exploitation, and no public exploit was identified at time of analysis. Net: this is a credible, high-priority flaw for anyone running the plugin - unauthenticated RCE is the worst-case outcome and the leaked-nonce condition is commonly met on active sites that run bulk optimisation - but the exploitation signal is currently potential rather than observed, so prioritize patching without treating it as confirmed in-the-wild exploitation. |
| Exploit ScenarioDerived | An unauthenticated attacker reads the world-readable file under wp-content/uploads/ that the plugin writes whenever a bulk image-optimisation batch pauses, recovering the tenwebio_rest REST nonce (valid for anonymous visitors because it is generated in a cron/loopback context with user ID 0). Using that nonce, the attacker calls the compressCustom function with a malicious page_id and, because file type and extension validation are missing, uploads an executable PHP file, then requests it to achieve remote code execution. No public exploit was identified at time of analysis, but the full chain is described in detail by the Wordfence advisory and the referenced source code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Unauthenticated arbitrary file upload in the 10Web Booster WordPress plugin (tenweb-speed-optimizer) in all versions up to and including 2.34.10 allows remote attackers to place executable files on a target site, leading to remote code execution. The compressCustom REST endpoint fails to validate file type or extension on the page_id parameter, and the authentication check is bypassed because the plugin's tenwebio_rest nonce is written to a world-readable file under wp-content/uploads/ whenever a bulk optimisation batch pauses - a nonce minted in a cron/loopback context with user ID 0, so it is accepted for unauthenticated visitors. Our independent assessment rates this CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H (below the 9.8 base published elsewhere) because exploitation is conditional on the site having previously paused a bulk optimisation batch and on the uploaded file landing in a PHP-executable, web-accessible path; no public exploit code was identified at time of analysis and the CVE is not in CISA KEV.
RemediationAI
Upstream fix available (changeset 3743299 in the tenweb-speed-optimizer Trac repository); a released patched version is not independently confirmed in the provided data, so update 10Web Booster to the newest version published on the WordPress.org plugin directory or via the vendor advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/adfd97cf-8f61-463d-a535-1a61e3c2e134?source=cve and verify the installed version is above 2.34.10. If an immediate update is not possible, deactivate and delete the plugin - this fully removes the attack surface but forfeits page-cache and image-optimisation functionality, which is an acceptable trade-off for an unauthenticated RCE chain. As a targeted compensating control, delete and block access to any serialised nonce artifacts under wp-content/uploads/ (for example via a webserver rule denying requests to the plugin's upload paths and a cleanup job removing stale tenwebio nonce files), which breaks the exploit chain at the credential-leak stage but must be repeated whenever a bulk optimisation batch pauses again. Additionally harden the uploads directory so PHP cannot execute there (Apache: php_flag engine off / RemoveHandler .php; nginx: location ~* /wp-content/uploads/.*\.php$ { deny all; }), with the side effect that legitimate PHP in uploads - rare, but used by some plugins - stops working, and consider restricting the plugin's /wp-json REST namespace /wp-json/tenwebio* to trusted IPs or authenticated sessions as a temporary stopgap. Because exploitation depends on a nonce file already existing on disk, sites that have never paused a bulk optimisation batch should still treat patching as urgent but can deprioritise incident response until the plugin is updated.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is an unrestricted upload of a file with a dangerous type (CWE-434) in the TenWebIO image-optimisation stack bundled with the 10Web Booster WordPress plugin. The vulnerable code lives in the vendor tree - notably TenWebIO/Rest.php (route registration and permission callback around line 310, plus the related handler near line 99), TenWebIO/CompressService.php (the compressCustom implementation at line ~99), TenWebIO/Utils.php (line ~161), and the queue trait QueueRestart.php (line ~63) in 10web-queue, as visible in the 2.34.1 and 2.34.5 Trac snapshots. WordPress REST endpoints normally gate actions through a nonce check; here the plugin generates the tenwebio_rest nonce inside a cron/loopback execution context with user ID 0, meaning the nonce is not tied to any authenticated session and therefore passes validation for anonymous requests. That nonce is then serialised into a file under wp-content/uploads/ that is world-readable, so any visitor who can enumerate or guess the file path recovers a credential-equivalent value. Combined with the absence of extension/file-type filtering on the page_id parameter, an attacker can direct the compression/upload routine at an attacker-chosen filename and have arbitrary content written to the uploads directory. The exploit chain is therefore two-stage: leak the nonce, then abuse the upload path - which is why the independent assessment raises attack complexity to AC:H while keeping PR:N/UI:N, and why CVE-2026-108587 sits in the same class as other WordPress plugin nonce-leak-to-RCE chains.
Know when Wordpress Plugin gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Remote and unauthenticated (AV:N/PR:N) via the leaked user-0 nonce, but exploitation depends on the nonce-leak state existing outside attacker control, so AC:H; successful upload yields full RCE (C/I/A:H).
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The 10Web Booster - Website speed optimization, Cache & Page Speed optimizer plugin for WordPress is vulnerable to Arbitrary File Upload in all versions up to, and including, 2.34.10 via the compressCustom function. This is due to missing file type validation and extension filtering on the page_id parameter, combined with a world-readable leaked nonce that bypasses authentication checks. This makes it possible for unauthenticated attackers to upload files that may be executable, which makes remote code execution possible. This exploit chain requires obtaining the plugin's REST nonce (tenwebio_rest), which is automatically serialized to a world-readable file under wp-content/uploads/ whenever a bulk optimisation batch pauses; because the nonce is generated in a cron/loopback context with a user ID of 0, it is valid for unauthenticated visitors.
Executive ViewAI
The 10Web Booster WordPress plugin (tenweb-speed-optimizer) up to and including version 2.34.10 contains a critical unauthenticated file upload flaw that can lead to remote code execution on affected WordPress sites. No vendor-released patch identified at time of analysis, and no public exploit identified at time of analysis, but any organization using this plugin faces potential full site compromise, data theft, or malicious use of its web presence, making immediate risk mitigation a leadership priority.
No vendor-released patch identified at time of analysis. Interim mitigations include deactivating or removing the tenweb-speed-optimizer plugin from all WordPress sites, blocking the compressCustom REST endpoint via WAF, preventing PHP execution in wp-content/uploads, restricting access to the world-readable nonce file, monitoring for unexpected PHP files, and performing compromise assessment and credential rotation for affected sites.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
More in Wordpress Plugin
View allThe Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in
Remote code execution in the WP Query Console WordPress plugin (versions up to and including 1.0) by Ajit Bohra allows u
EUVD-2026-101824
GHSA-38rr-wcwh-jgw6
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB