CVE-2026-89055 — CusRev WooCommerce Missing Authorization (Arbitrary Media Deletion)
September 25, 2026 · 1,023 views
Customer Reviews for WooCommerce (CusRev) ≤ 5.120.0: public review form AJAX accepts arbitrary Media Library attachment IDs; linked files are deleted when the review is purged. CVSS 3.1 9.1 Critical (CWE-862). Requires a /cusrev/{formId}/ link.
Description
Overview
CVE-2026-89055 affects Customer Reviews for WooCommerce (Ivole CusRev, slug customer-reviews-woocommerce).
The public local review form AJAX handler cr_local_forms_submit lacks proper authorization on items[].media. A party with a legitimate customer review link (/cusrev/{13-hex formId}/ from post-order email) can obtain crSubmitNonce and submit reviews whose media array references arbitrary WordPress attachment IDs (product images, logos, PDFs, etc.).
When the review comment is permanently deleted (trash purge, spam cleanup), delete_review_media_attachments() calls wp_delete_attachment() on each linked ID without ownership checks — leading to arbitrary media deletion (integrity and availability impact).
Affected versions
| | |
|---|---|
| Plugin | Customer Reviews for WooCommerce |
| Affected | ≤ 5.120.0 |
| Fixed in | > 5.120.0 (upgrade to latest stable) |
| CVSS 3.1 | 9.1 Critical (C:N/I:H/A:H) |
| CWE | CWE-862 (Missing Authorization) |
| Prerequisite | Valid public /cusrev/{formId}/ review link (nonce on page) |
This is not a fully unauthenticated internet-wide spray: exploitation requires a form link (often leaked via email, support tickets, or shared URLs). Mass scanning still needs per-target form IDs.
Attack chain
- Open
{site}/cusrev/{formId}/→ readcrSubmitNonceand productdata-itemidvalues. - POST
admin-ajax.php:action=cr_local_forms_submitwithitems[n][media][]=<victim_attachment_id>. - Plugin stores attachment IDs in review comment meta (
ivole_reviews_locl_img/ video fields). - When the review is permanently removed, hooked cleanup deletes every linked attachment file.
The bundled PoC implements steps 1–2 on authorized targets. Step 4 depends on site/admin lifecycle (review purge); output may include a chain_note documenting this.
Bundled PoC (PoCbit download)
Python 3 check / exploit tool:
- check — Plugin version fingerprint, optional live form parse (nonce + line items) when
--form-urlor--form-idis supplied. - exploit — Injects a foreign
attachment-idinto the first product line item; optional--verify-urlfor the victim media URL.
Mass mode: --list targets.txt (optional form path after | per line). Authorized testing only.
Impact
- Integrity / availability of Media Library assets tied to deleted reviews.
- Potential storefront breakage (missing product images, branding assets).
- Does not by itself grant admin access; impact is destructive file deletion chained off review workflow.
Remediation
- Upgrade CusRev to > 5.120.0.
- Rotate or expire old
/cusrev/links where possible; treat leaked review URLs as sensitive. - Monitor
admin-ajax.phpfor anomalouscr_local_forms_submitwith unexpected attachment IDs. - Back up uploads and restrict who can purge reviews until patched.
Legal and ethical use
Test only WooCommerce sites you operate or have explicit written permission to assess. Do not use customer review links from real orders without authorization.
References
- GitHub PoC (source): https://github.com/murrez/CVE-2026-89055
- NVD — CVE-2026-89055
- CVE Program
- Plugin: customer-reviews-woocommerce on WordPress.org
Related PoCs
Same platform, vendor, or tags — explore more write-ups on Pocbit.
- WordPressCVE-2026-18143critical
CVE-2026-18143 — Addify Request a Quote for WooCommerce Unauthenticated File Upload
Unauthenticated arbitrary file upload (CWE-434, CVSS 9.8 Critical) in Request a Quote for WooCommerce ≤ 2.9.2 via public AJAX afrfq_submit_quote_via_popup — unsafe move_uploaded_file() with attacker-controlled .php names into web-accessible RFQ temp storage. Requires popup quote rule on the storefront.
- WordPressCVE-2026-97657critical
CVE-2026-97657 — Abandoned Cart Pro for WooCommerce Auth Bypass & Account Takeover
Tyche Abandoned Cart Pro ≤10.8.0: recovery checkout_link uses AES-CTR without mandatory HMAC when wcap_nonce omitted; CTR malleability swaps abandoned cart ID → wp_set_auth_cookie victim (CWE-639). CVSS 3.1 9.8 Critical. Python PoC: check, forge, exploit. Marker POCBIT-97657-OK.
- WordPressCVE-2026-19660critical
CVE-2026-19660 — Divi Membership (DiviEngine) ≤2.3.0 paypal_param Authentication Bypass
DiviEngine Divi Membership ≤2.3.0: process_paypal_callback on init trusts base64 paypal_param GET without PayPal/IPN validation → wp_set_current_user + wp_set_auth_cookie as arbitrary user ID (incl. admin). PayPal gateway class loads even when disabled. CVSS 9.8 Critical (CWE-287). Python PoC: check/exploit, cookie export, mass scan.
- WordPressCVE-2026-82901critical
CVE-2026-82901 — Ultra Addons for Contact Form 7 Unauthenticated File Upload
Unauthenticated arbitrary file upload (CWE-434, CVSS 3.1 9.8 Critical) in Ultra Addons for Contact Form 7 (Themefic) ≤ 3.5.50 via uacf7_wpcf7_mail_components in the PDF Generator addon — signature field copies files to wp-content/uploads/uacf7-uploads/ with weak validation. Requires PDF Generator enabled on a form with uacf7_signature. Fixed in 3.5.51+.