CVE-2025-9878

Password Protect WordPress Lite <= 1.9.21 - Authenticated (Contributor+) Stored Cross-Site Scripting

Published Aug 25, 2026 CVSS 3.1 · 6.4 Medium EPSS < 1% KEV · Not listed
Description
The PPWP – Password Protect WordPress | #1 Most-Reviewed Password Plugin plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the plugin's 'ppwp' shortcode in all versions up to, and including, 1.9.21 due to insufficient input sanitization and output escaping on user supplied attributes. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.

Analysis

AI-generated

Technical impact

The Password Protect Pages plugin contains an insufficiently sanitized ppwp shortcode that can store and render user‑supplied attributes as raw HTML. Attackers with Contributor or higher roles can inject arbitrary JavaScript into the shortcode’s attributes, which is then executed in any browser that views the affected page. This allows client‑side code execution, cookie theft, session hijacking, defacement or other malicious actions that affect confidentiality, integrity and availability of the site’s content for all visitors.

Affected Systems

The vulnerability applies to the PPWP – Password Protect Pages plugin by buildwps, in all releases up to and including 1.9.21. Sites running any of these versions and allowing contributors to edit pages are potentially impacted.

Risk and Exploitability

The CVSS score of 6.4 indicates a moderate‑severity flaw, while the absence of an EPSS value and its lack of inclusion in the CISA KEV catalog imply that exploit activity is currently undocumented. The most likely attack path involves an authenticated contributor adding a malicious ppwp shortcode to a post or page. Once the shortcode is stored, every user who views the page receives the injected script, making the vulnerability a strong opportunistic threat for sites with exposed contributor permissions.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Password Protect Pages to the latest released version (≥ 1.9.22).
  • Edit or delete any existing pages or posts that contain the malicious ppwp shortcode attributes introduced before the upgrade.
  • Limit the use of the ppwp shortcode to trusted administrators or disable the shortcode entirely if it is not required.

Generated by OpenCVE AI on August 25, 2026 at 03:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Buildwps
Buildwps ppwp – Password Protect Pages
Wordpress
Wordpress wordpress
Vendors & Products Buildwps
Buildwps ppwp – Password Protect Pages
Wordpress
Wordpress wordpress
Type Values Removed Values Added
Description The PPWP – Password Protect WordPress | #1 Most-Reviewed Password Plugin plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the plugin's 'ppwp' shortcode in all versions up to, and including, 1.9.21 due to insufficient input sanitization and output escaping on user supplied attributes. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
Title Password Protect WordPress Lite <= 1.9.21 - Authenticated (Contributor+) Stored Cross-Site Scripting
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 6.4, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N'}

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Sources

Status
PUBLISHED
Assigner
Wordfence
Published
Updated
Aug 25, 2026, 12:17 PM
Reserved
Sep 2, 2025, 9:23 PM
Status
Deferred
Published
Aug 25, 2026, 3:16 AM
Modified
Oct 7, 2026, 9:10 AM