Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessLoad product page, read public wcpr_image_upload nonce
-
DeliverySubmit guest review with target attachment IDs in wcpr_image_upload_id
-
ExploitIDs stored in comment meta without ownership check
-
ExecutionModerator deletes review or wp_scheduled_delete cron purges it
-
Persistdelete_reviews_image() calls wp_delete_attachment() on attacker IDs
-
ImpactArbitrary media and on-disk files permanently deleted
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The affected product is VillaTheme's Revopic / Photo Reviews for WooCommerce plugin (versions ≤ 1.2.31) with guest/front-end review submission reachable, so an unauthenticated attacker can POST the wcpr_image_upload_id parameter; the required wcpr_image_upload nonce is a shared public value rendered on every product page and does not act as an authentication barrier. Exploitation does not execute immediately: the deletion fires via the delete_comment hook only when a moderator removes the planted review or when WordPress core's wp_scheduled_delete cron purges the trashed comment after EMPTY_TRASH_DAYS - this deferred, interaction-dependent trigger (reflected as UI:R) is the main practical limiter, along with the attacker needing valid target attachment IDs, which are typically sequential and enumerable. |
| Impact | Signals point to a real but non-emergency medium-severity issue. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L, base 5.4) shows a network-reachable, low-complexity, unauthenticated flaw whose impact is limited to integrity and availability (arbitrary media deletion) with no confidentiality loss, and which requires a user-interaction trigger - a moderator removing the malicious review, or WordPress core's wp_scheduled_delete cron purging it after EMPTY_TRASH_DAYS. The vuln.today Decision label is this_month rather than act_now/emergency, consistent with that indirect, time-delayed trigger. No EPSS score, no KEV listing, and no verified public exploit code are present in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation; this is a credible destructive-data flaw found by Wordfence rather than a mass-exploited one. One classification caveat: the record carries CWE-22 and a 'Path Traversal' tag, but the described mechanism is a missing ownership/capability check on attacker-supplied attachment IDs (an insecure direct object reference), not directory traversal - verify against the Wordfence advisory. Net: worth patching this cycle because exploitation is trivial and the impact (permanent, irreversible deletion of any media library attachment and its on-disk files) is serious, but the moderator-dependent trigger and lack of exploitation signals keep it below drop-everything urgency. |
| Exploit ScenarioDerived | An unauthenticated attacker submits a product review on an affected store, embedding chosen WordPress attachment IDs in the wcpr_image_upload_id POST parameter using the public wcpr_image_upload nonce printed on every product page. When a moderator later deletes that review (or core's wp_scheduled_delete cron purges it after EMPTY_TRASH_DAYS), the delete_comment hook fires delete_reviews_image() and permanently deletes those attachments and their files on disk. No public exploit code is identified at time of analysis; exploitation relies on the deferred moderation/cron trigger reflected in UI:R. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 31, 2026
Unauthenticated attackers can permanently delete arbitrary WordPress Media Library attachments - including the files on disk - on any site running VillaTheme's Revopic / Photo Reviews for WooCommerce plugin through version 1.2.31. The plugin accepts attacker-chosen attachment IDs through the wcpr_image_upload_id POST parameter and stores them in review comment meta; the only validation confirms the ID is an attachment post type, never that the submitter owns or uploaded it, and the required wcpr_image_upload nonce is a shared public value printed on every product page. Deletion is deferred rather than immediate: it fires through the delete_comment hook when a moderator removes the planted review or when WordPress core's wp_scheduled_delete cron purges the trashed comment after EMPTY_TRASH_DAYS, and exploitation additionally requires enumerable target attachment IDs; no public exploit code or confirmed active exploitation was identified at time of analysis, and the assigned priority is this_month.
RemediationAI
No vendor-released patch or fixed version is identified in the supplied data; confirm current status with the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/b9a4d8f9-7b25-4c31-8457-2cb45bd17150?source=cve) and the plugin page (https://wordpress.org/plugins/woo-photo-reviews/) before assuming a release exists, and if an updated version is published, upgrade to it. Because the destructive action is gated on the delete_comment hook, limiting who can submit reviews reduces but does not eliminate exposure - the shared wcpr_image_upload nonce is public on every product page, so guest review submission should be disabled in the plugin/WooCommerce settings if it is not required, with the trade-off that legitimate customer photo reviews are lost. Restricting or disabling the plugin entirely removes the vulnerable delete path. Shortening or reviewing EMPTY_TRASH_DAYS and being cautious about bulk-deleting or emptying trashed reviews only changes when the wp_scheduled_delete purge fires - it does not prevent the deletion - and moderators should avoid removing suspicious reviews until the plugin is patched or disabled, since removal itself triggers the destructive call.
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 sits in the review-image handling pipeline of the woo-photo-reviews plugin. Front-end review submission code (frontend/frontend.php around lines 1232 and 1267) passes submitted wcpr_image_upload_id values through viwcpr_filter_review_image_ids() in includes/functions.php (around line 84), which validates only that each ID resolves to the 'attachment' post type. Those IDs are persisted into comment meta, and admin-side code (admin/admin.php around line 2403) hooks delete_reviews_image() to the delete_comment action, calling wp_delete_attachment() with whatever IDs were stored - with no ownership or capability check. The result is a classic identifier-trust problem: any party able to submit a review comment controls which attachment is destroyed. The submission nonce wcpr_image_upload is rendered on every product page for guest commenters, so it offers no authentication value. The CVE is classified under CWE-22 (path traversal) because the attacker-supplied resource identifier ultimately drives deletion of files on disk, though the practical root cause is the missing authorization check on the delete_comment path rather than directory traversal itself. The impact is time-shifted: the destructive call only executes on moderator removal of the review or on the wp_scheduled_delete cron purge of the trashed comment, which is reflected as UI:R in the assessed vector; the trigger does not run at submission time.
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:R/S:U/C:N/I:L/A:L
Unauthenticated HTTP POST (AV:N/AC:L/PR:N); deletion only triggers on moderator/cron handling of the review (UI:R); no data disclosure (C:N) but arbitrary attachment deletion yields I:L/A:L.
Primary rating from Vendor (Wordfence).
CVSS VectorNVD
DescriptionNVD
The Photo Reviews for WooCommerce plugin for WordPress is vulnerable to unauthorized Media Library File Deletion in all versions up to, and including, 1.2.31. This is due to the delete_reviews_image() function's delete_comment hook trusting attachment IDs supplied via the wcpr_image_upload_id POST parameter that were stored in comment meta without any ownership or capability check - viwcpr_filter_review_image_ids() verifies only that each submitted ID refers to an attachment post type, not that the submitter uploaded or owns it. This makes it possible for unauthenticated attackers to permanently delete any WordPress media library attachment - including its files on disk as recorded by wp_delete_attachment() - by embedding attacker-chosen attachment IDs into a review comment, then waiting for a moderator to remove the review or for WordPress core's wp_scheduled_delete cron to purge it after EMPTY_TRASH_DAYS. The nonce required to submit the parameter (wcpr_image_upload) is a shared public value printed on every product page for guest commenters and does not function as an authentication barrier, making this trivially exploitable without any account.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
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 AI Engine WordPress plugin through version 3.1.3 exposes Bearer Token values through the /mcp/v1/ REST API endpoint
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
EUVD-2026-114611
GHSA-qm3q-4mg3-2277
NVD
CVE.org
EPSS
Exploit-DB