Skip to main content

10Web Booster EUVDEUVD-2026-101824

| CVE-2026-108587 CRITICAL
Unrestricted Upload of File with Dangerous Type (CWE-434)
2026-10-15 Wordfence GHSA-38rr-wcwh-jgw6
9.8
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Read world-readable leaked tenwebio_rest nonce
  2. Delivery
    Craft unauthenticated compressCustom request
  3. Exploit
    Upload executable PHP via page_id
  4. Execution
    Request uploaded file in uploads directory
  5. Impact
    Execute 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.9% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

10Web Booster – Website speed optimization, Cache & Page Speed optimizer 0 ≤2.34.10

Affected Packages

euvd 10web_booster_website_speed_optimization_cache_page_speed_optimizer no fix

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

Vendor (Wordfence) PRIMARY 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

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).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

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

Why It Matters

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.

Business Impact: Severe
Compensating Controls

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

EPSS Score
0.9%
Top 41% exploitable
Prevalence
Medium
popular WordPress speed-optimization plugin, moderate but not universal footprint
Social Media
6
Sightings
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.9%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Very High
Technical Impact
Total

Priority Score

50
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +49
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

CVE-2024-5084 CRITICAL POC
9.8 May 23

The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil

CVE-2024-44000 CRITICAL POC
9.8 Oct 20

Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote

CVE-2020-36847 CRITICAL POC
9.8 Jul 12

The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner

CVE-2025-27007 CRITICAL POC
9.8 May 01

The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut

CVE-2016-1209 CRITICAL POC
9.8 May 14

The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via

CVE-2024-4443 CRITICAL POC
9.8 May 22

The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based

CVE-2024-1698 CRITICAL POC
9.8 Feb 27

SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a

CVE-2023-6875 CRITICAL POC
9.8 Jan 11

The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i

CVE-2024-1512 CRITICAL POC
9.8 Feb 17

The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base

CVE-2024-4295 CRITICAL POC
9.8 Jun 05

The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in

CVE-2024-50498 CRITICAL POC
10.0 Oct 28

Remote code execution in the WP Query Console WordPress plugin (versions up to and including 1.0) by Ajit Bohra allows u

References

Advisories & patches
ADVISORY https://nvd.nist.gov/vuln/detail/CVE-2026-108587 REF https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.1/vendor/10web-utils/10web-queue/src/TenWebQueue/Traits/QueueRestart.php#L63 REF https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.1/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/CompressService.php#L99 REF https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.1/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Rest.php#L310 REF https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.1/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Rest.php#L99 REF https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.1/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Utils.php#L161 REF https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.5/vendor/10web-utils/10web-queue/src/TenWebQueue/Traits/QueueRestart.php#L63 REF https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.5/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/CompressService.php#L99 REF https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.5/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Rest.php#L310 REF https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.5/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Rest.php#L99 REF https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.5/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Utils.php#L161 REF https://plugins.trac.wordpress.org/changeset/3743299/tenweb-speed-optimizer REF https://www.wordfence.com/threat-intel/vulnerabilities/id/adfd97cf-8f61-463d-a535-1a61e3c2e134?source=cve

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy