CVE-2026-108587
9.8CriticalPublished 15 Oct 2026 · NVD status: Deferred · AI triage by gemini-3.8-flash
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
- Impact
- Full C/I/A compromise
- Weakness
- CWE-434
Impact
Unauthenticated attackers can achieve remote code execution by uploading executable files to your web server. Attackers only need network access to read a leaked nonce file in the uploads directory and submit a forged request.
Root cause
The plugin exposes an arbitrary file upload flaw due to missing file type validation on the page_id parameter, paired with a cron-generated REST nonce saved directly into a world-readable uploads path.
Affected systems
10Web Booster – Website speed optimization, Cache & Page Speed optimizer plugin for WordPress up to, and including, 2.34.10
CVSS v3.1 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Fix & remediation
Upgrade to a version newer than 2.34.10 once available; if a patch cannot be deployed immediately, deactivate the plugin or block public HTTP access to serialized data files under wp-content/uploads/.
$ wp plugin update tenweb-speed-optimizerAI-suggested. Run it in staging first and check it against the vendor advisory. Why?
NVD description
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.
References
- https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.1/vendor/10web-utils/10web-queue/src/TenWebQueue/Traits/QueueRestart.php#L63
- https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.1/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/CompressService.php#L99
- https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.1/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Rest.php#L310
- https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.1/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Rest.php#L99
- https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.1/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Utils.php#L161
- https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.5/vendor/10web-utils/10web-queue/src/TenWebQueue/Traits/QueueRestart.php#L63
- https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.5/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/CompressService.php#L99
- https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.5/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Rest.php#L310
- https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.5/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Rest.php#L99
- https://plugins.trac.wordpress.org/browser/tenweb-speed-optimizer/tags/2.34.5/vendor/10web-utils/tenweb-image-optimizer/src/TenWebIO/Utils.php#L161
- https://plugins.trac.wordpress.org/changeset/3743299/tenweb-speed-optimizer
- https://www.wordfence.com/threat-intel/vulnerabilities/id/adfd97cf-8f61-463d-a535-1a61e3c2e134?source=cve