Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Unauthorized password modification of arbitrary posts constitutes an integrity impact (I:L) absent from the vendor vector; all other metrics align with the authenticated network-exploitable IDOR.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
Lifecycle Timeline
2DescriptionCVE.org
The PPWP - Password Protect WordPress | #1 Most-Reviewed Password Plugin plugin for WordPress is vulnerable to Insecure Direct Object Reference in all versions up to, and including, 1.9.20 via the ppw_free_set_password AJAX action due to missing validation on a user controlled key. This makes it possible for authenticated attackers, with Contributor-level access and above, to update the password on any password protected post and subsequently access the content.
AnalysisAI
Insecure Direct Object Reference in the PPWP - Password Protect Pages WordPress plugin (all versions ≤ 1.9.20) allows any authenticated Contributor-level user to overwrite the password on any password-protected post site-wide, then access that previously restricted content. The vulnerability exists in the ppw_free_set_password AJAX handler, which accepts a user-controlled post identifier without verifying the requesting user's authorization over the target object (CWE-639). No public exploit or active exploitation (CISA KEV) has been identified at the time of analysis; a fix commit is available in the WordPress plugin repository.
Technical ContextAI
The affected product is the PPWP - Password Protect Pages plugin for WordPress (CPE: cpe:2.3:a:buildwps:ppwp_-_password_protect_pages:*:*:*:*:*:*:*:*), a plugin that wraps WordPress's native post-password feature with enhanced per-page access controls. The root cause is CWE-639 (Authorization Through User-Controlled Key): the ppw_free_set_password AJAX endpoint accepts a post ID - a user-supplied integer reference - and applies a new password to the identified post without first verifying that the authenticated user has any ownership or editorial rights over that specific post. WordPress contributors can legitimately create and submit posts but are not authorized to edit other users' content; the missing object-level authorization check collapses this boundary. This is a classic broken object-level authorization (BOLA/IDOR) pattern prevalent in WordPress plugin AJAX handlers that rely solely on nonce validation without subsequent resource-ownership checks.
RemediationAI
Update the PPWP - Password Protect Pages plugin to a version beyond 1.9.20. A code-level fix has been committed to the WordPress plugin SVN repository (changeset referenced at plugins.trac.wordpress.org/changeset?reponame=&old=3637624%40password-protect-page&new=3637624%40password-protect-page); however, the exact released patched version number is not independently confirmed from the available data - verify the current plugin version in the WordPress.org plugin directory before updating. As an interim compensating control, audit and restrict Contributor-level accounts on the affected WordPress installation to only fully trusted internal users, eliminating the untrusted-contributor attack surface entirely. Alternatively, deactivating the PPWP plugin will remove the vulnerable AJAX endpoint; note this will also remove all existing password protections the plugin manages, potentially exposing previously restricted content. There are no known non-disruptive workarounds short of patching or account restriction.
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 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
Remote code execution in the WP Query Console WordPress plugin (versions up to and including 1.0) by Ajit Bohra allows u
Same technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2025-210731
GHSA-5fxx-hjg5-h5pq